Fix shellcheck issue SC2174
[grml-debootstrap.git] / chroot-script
index 4a20fa7..a5f92c4 100755 (executable)
@@ -2,7 +2,7 @@
 # Filename:      /etc/debootstrap/chroot-script
 # Purpose:       script executed in chroot when installing Debian via grml-debootstrap
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports:   see http://grml.org/bugs/
+# Bug-Reports:   see https://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
 ################################################################################
 # GRML_CHROOT_SCRIPT_MARKER - do not remove this line unless you want to keep
@@ -113,10 +113,16 @@ chrootmirror() {
   # add security.debian.org:
   case "$RELEASE" in
     unstable|sid|lenny) ;;  # no security pool available
-    *)
+    squeeze|wheezy|jessie|stretch|buster)
       echo "Adding security.debian.org to sources.list."
       echo "deb http://security.debian.org ${RELEASE}/updates $COMPONENTS" >> /etc/apt/sources.list
       ;;
+    *)
+      # bullseye and newer releases use a different repository layout, see
+      # https://lists.debian.org/debian-devel-announce/2019/07/msg00004.html
+      echo "Adding security.debian.org/debian-security to sources.list."
+      echo "deb http://security.debian.org/debian-security ${RELEASE}-security $COMPONENTS" >> /etc/apt/sources.list
+      ;;
   esac
 }
 # }}}
@@ -192,29 +198,15 @@ EOF
 }
 # }}}
 
-# check available backports release version {{{
-checkbackports() {
-  wget -q -O/dev/null "http://backports.debian.org/debian-backports/dists/${1}-backports/Release"
-}
-# }}}
-
 # feature to provide Debian backports repos {{{
 backportrepos() {
-    if [ -n "$BACKPORTREPOS" ] ; then
-        if ! checkbackports "$RELEASE" ; then
-            echo "Backports for ${RELEASE} are not available." >&2
-            exit 1
-        else
-            # user might have provided their own apt sources.list
-            if ! grep -q backports /etc/apt/sources.list.d/backports.list 2>/dev/null ; then
-                cat >> /etc/apt/sources.list.d/backports.list << EOF
+  if [ -n "$BACKPORTREPOS" ] ; then
+    cat >> /etc/apt/sources.list.d/backports.list << EOF
 # debian backports: ${RELEASE}-backports repository:
-deb     http://backports.debian.org/debian-backports ${RELEASE}-backports main
-deb-src http://backports.debian.org/debian-backports ${RELEASE}-backports main
+deb     ${MIRROR} ${RELEASE}-backports main
+deb-src ${MIRROR} ${RELEASE}-backports main
 EOF
-            fi
-        fi
-    fi
+  fi
 }
 # }}}
 
@@ -478,8 +470,18 @@ timezone() {
 # helper function for fstab() {{{
 createfstab(){
   echo "Setting up /etc/fstab"
+  cat > /etc/fstab <<EOF
+# /etc/fstab - created by grml-debootstrap on $(date)
+# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
+# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
+#
+# After editing this file, run 'systemctl daemon-reload' to update systemd
+# units generated from this file.
+#
+EOF
+
   if [ -n "$TARGET_UUID" ] ; then
-    echo "/dev/disk/by-uuid/${TARGET_UUID} /  auto    defaults,errors=remount-ro 0   1" > /etc/fstab
+    echo "/dev/disk/by-uuid/${TARGET_UUID} /  auto    defaults,errors=remount-ro 0   1" >> /etc/fstab
   else
     echo "Warning: couldn't identify target UUID for rootfs, your /etc/fstab might be incomplete."
   fi
@@ -624,19 +626,31 @@ grub_install() {
      for device in $SELECTED_PARTITIONS ; do
         GRUB="${device%%[0-9]}"
         echo "Installing grub on ${GRUB}:"
-        grub-install --no-floppy "$GRUB"
+        if ! grub-install --no-floppy "$GRUB" ; then
+          echo "Error: failed to execute 'grub-install --no-floppy $GRUB'." >&2
+          exit 1
+        fi
+
      done
      rm -f /boot/grub/device.map
   else
      echo "Installing grub on ${GRUB}:"
      case "$RELEASE" in
        lenny|squeeze|wheezy)
-         grub-install --no-floppy "$(readlink -f "${GRUB}")"
+         local grub_dev
+         grub_dev="$(readlink -f "${GRUB}")"
+         if ! grub-install --no-floppy "${grub_dev}" ; then
+           echo "Error: failed to execute 'grub-install --no-floppy ${grub_dev}'." >&2
+           exit 1
+         fi
          rm -f /boot/grub/device.map
          ;;
        *)
          echo "(hd0) ${GRUB}" > /boot/grub/device.map
-         grub-install "(hd0)"
+         if ! grub-install "(hd0)" ; then
+           echo "Error: failed to execute 'grub-install (hd0)'." >&2
+           exit 1
+         fi
          rm /boot/grub/device.map
          ;;
      esac
@@ -654,6 +668,11 @@ grub_install() {
     return 1
   fi
 
+  if [ -n "${BOOT_APPEND}" ] ; then
+    echo "Adding BOOT_APPEND configuration ['${BOOT_APPEND}'] to /etc/default/grub."
+    sed -i "/GRUB_CMDLINE_LINUX_DEFAULT/ s#\"\$# ${BOOT_APPEND}\"#" /etc/default/grub
+  fi
+
   mountpoint /boot/efi &>/dev/null && umount /boot/efi
 
   $UPDATEGRUB