X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=chroot-script;h=b0737ca77275963cb43a20d9db493619e3b7a84e;hp=3e875971b9587139b34116e094dd5bc927cabe17;hb=HEAD;hpb=ce80d13a327640893cce73ff0748e91c84184912 diff --git a/chroot-script b/chroot-script index 3e87597..c356bc8 100755 --- a/chroot-script +++ b/chroot-script @@ -8,19 +8,20 @@ # GRML_CHROOT_SCRIPT_MARKER - do not remove this line unless you want to keep # this script as /bin/chroot-script on your new installed system ################################################################################ +# shellcheck disable=SC2317 # shellcheck has trouble understanding the code flow in this file # error_handler {{{ -if [ "$REPORT_TRAP_ERR" = "yes" ] || [ "$FAIL_TRAP_ERR" = "yes" ]; then - set -e - set -E - set -o pipefail - trap "error_handler" ERR -fi +set -e +set -E +set -o pipefail +trap "error_handler" ERR # }}} -# shellcheck disable=SC1091 +bash -n /etc/debootstrap/config +# shellcheck source=config . /etc/debootstrap/config || exit 1 -# shellcheck disable=SC1091 +bash -n /etc/debootstrap/variables +# shellcheck source=tests/shellcheck-stub-debootstrap-variables . /etc/debootstrap/variables || exit 1 [ -r /proc/1 ] || mount -t proc none /proc @@ -103,8 +104,8 @@ chrootmirror() { # add security.debian.org: case "$RELEASE" in - unstable|sid) ;; # no security pool available - jessie|stretch|buster) + unstable|sid|stretch) ;; # no security pool available + jessie|buster) echo "Adding security.debian.org to sources.list." echo "deb http://security.debian.org ${RELEASE}/updates $COMPONENTS" >> /etc/apt/sources.list ;; @@ -348,8 +349,14 @@ kernel() { $APTUPDATE KVER=$(get_kernel_version) if [ -n "$KVER" ] ; then - # note: install busybox to be able to debug initramfs - KERNELPACKAGES="linux-image-$KVER linux-headers-$KVER busybox firmware-linux-free" + case "$RELEASE" in + stretch) + echo "Installing busybox on Debian/$RELEASE as it's essential for the initramfs" + DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL busybox + ;; + esac + + KERNELPACKAGES="linux-image-$KVER linux-headers-$KVER firmware-linux-free $INITRD_GENERATOR" # only add firmware-linux if we have non-free as a component if expr "$COMPONENTS" : '.*non-free' >/dev/null ; then KERNELPACKAGES="$KERNELPACKAGES firmware-linux" @@ -383,15 +390,13 @@ passwords() return 0 fi - echo "Activating shadow passwords." - shadowconfig on - CHPASSWD_OPTION= if chpasswd --help 2>&1 | grep -q -- '-m,' ; then CHPASSWD_OPTION='-m' fi if [ -n "$ROOTPASSWORD" ] ; then + # shellcheck disable=SC2086 echo root:"$ROOTPASSWORD" | chpasswd $CHPASSWD_OPTION export ROOTPASSWORD='' else @@ -414,6 +419,7 @@ passwords() a='1' b='2' else + # shellcheck disable=SC2086 echo root:"$a" | chpasswd $CHPASSWD_OPTION unset a unset b @@ -480,7 +486,7 @@ EOF local rootfs_mount_options="" if [ -z "${FILESYSTEM}" ] ; then - FILESYSTEM="$(blkid -o value -s TYPE /dev/disk/by-uuid/"${TARGET_UUID}")" + FILESYSTEM="$(blkid -o value -s TYPE /dev/disk/by-uuid/"${TARGET_UUID}")" || true fi case "${FILESYSTEM}" in @@ -496,8 +502,8 @@ EOF fi if [ -n "$EFI" ] ; then - # shellcheck disable=SC2086 - echo "UUID=$(blkid -o value -s UUID $EFI) /boot/efi vfat umask=0077 0 1" >> /etc/fstab + UUID_EFI="$(blkid -o value -s UUID "$EFI")" + echo "UUID=$UUID_EFI /boot/efi vfat umask=0077 0 1" >> /etc/fstab fi cat >> /etc/fstab << EOF @@ -600,9 +606,10 @@ initrd() { if [ -n "$INITRD" ] ; then echo "Generating initrd." if [ "$INITRD_GENERATOR" = 'dracut' ] ; then - DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL dracut + # shellcheck disable=SC2086 dracut --no-hostonly --kver "$KERNELVER" --fstab --add-fstab /etc/fstab --force --reproducible $INITRD_GENERATOR_OPTS else + # shellcheck disable=SC2086 update-initramfs -c -t -k "$KERNELVER" $INITRD_GENERATOR_OPTS fi fi @@ -621,7 +628,7 @@ efi_setup() { mkdir -p /boot/efi echo "Mounting $EFI on /boot/efi" - mount "$EFI" /boot/efi || return 1 + mount "$EFI" /boot/efi # if efivarfs kernel module is loaded, but efivars isn't, # then we need to mount efivarfs for efibootmgr usage @@ -631,7 +638,7 @@ efi_setup() { fi echo "Invoking efibootmgr" - efibootmgr || return 1 + efibootmgr } # grub configuration/installation {{{ @@ -678,7 +685,7 @@ grub_install() { return 0 fi - efi_setup || return 1 + efi_setup if [ -n "$EFI" ] ; then GRUB_PACKAGE=grub-efi-amd64 @@ -698,9 +705,9 @@ grub_install() { echo "Setting ${GRUB_PACKAGE} debconf configuration for install device to $GRUB" echo "${GRUB_PACKAGE} ${GRUB_PACKAGE}/install_devices multiselect ${grub_device}" | debconf-set-selections - if ! dpkg --list ${GRUB_PACKAGE} 2>/dev/null | grep -q '^ii' ; then + if ! dpkg --list "${GRUB_PACKAGE}" 2>/dev/null | grep -q '^ii' ; then echo "Notice: grub option set but no ${GRUB_PACKAGE} package, installing it therefore." - DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL ${GRUB_PACKAGE} + DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL "${GRUB_PACKAGE}" fi if ! [ -x "$(command -v grub-install)" ] ; then @@ -805,8 +812,9 @@ trap signal_handler HUP INT QUIT TERM initrd grub_install passwords \ custom_scripts upgrade_system remove_apt_cache services \ remove_chrootmirror; do - if stage $i ; then - $i && stage $i 'done' || exit 1 + if stage "$i" ; then + "$i" + stage "$i" 'done' fi done # always execute the finalize stage: