X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=chroot-script;h=1bd3abb3bb7a1871b1cb831e9ea5064478129085;hb=d275bdfe5ba2b9abcf67687311110ae2dc5ac90f;hp=5cff4847a6a6ea6810af3f211d24ee9b3753e343;hpb=d69c1015d0c37ca63208f59def1a994579245946;p=grml-debootstrap.git diff --git a/chroot-script b/chroot-script index 5cff484..1bd3abb 100755 --- a/chroot-script +++ b/chroot-script @@ -8,18 +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 # }}} -# shellcheck disable=SC1091 +# shellcheck source=config . /etc/debootstrap/config || exit 1 -# shellcheck disable=SC1091 +# shellcheck source=tests/shellcheck-stub-debootstrap-variables . /etc/debootstrap/variables || exit 1 [ -r /proc/1 ] || mount -t proc none /proc @@ -100,20 +102,10 @@ chrootmirror() { fi fi - # LTS support - case "$RELEASE" in - squeeze) - if [ -n "$MIRROR" ] ; then - echo "Release matching $RELEASE - enabling LTS support in sources.list" - echo "deb $MIRROR ${RELEASE}-lts $COMPONENTS" >> /etc/apt/sources.list - fi - ;; - esac - # add security.debian.org: case "$RELEASE" in - unstable|sid|lenny) ;; # no security pool available - squeeze|wheezy|jessie|stretch|buster) + unstable|sid) ;; # no security pool available + jessie|stretch|buster) echo "Adding security.debian.org to sources.list." echo "deb http://security.debian.org ${RELEASE}/updates $COMPONENTS" >> /etc/apt/sources.list ;; @@ -269,14 +261,21 @@ packages() { } if [ "$PACKAGES" = 'yes' ] ; then - if ! [ -r /etc/debootstrap/packages ] ; then - echo "Error: /etc/debootstrap/packages (inside chroot) not found, exiting." >&2 - exit 1 - else - $APTUPDATE - # shellcheck disable=SC2086,SC2046 - DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL $(grep -v '^#' /etc/debootstrap/packages) $GRMLPACKAGES - fi + PACKAGES_FILE="/etc/debootstrap/packages" + + if [ "$ARCH" = 'arm64' ]; then + PACKAGES_FILE="/etc/debootstrap/packages-arm64" + fi + + if ! [ -r "${PACKAGES_FILE}" ] ; then + echo "Error: ${PACKAGES_FILE} (inside chroot) not found, exiting." >&2 + exit 1 + else + $APTUPDATE + + # shellcheck disable=SC2086,SC2046 + DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL $(grep -v '^#' "${PACKAGES_FILE}") $GRMLPACKAGES + fi fi } # }}} @@ -316,28 +315,28 @@ get_kernel_version() { # shellcheck disable=SC2153 case "$ARCH" in i386) - case "$RELEASE" in - lenny|squeeze|wheezy) KARCH='686' ;; - # since jessie the linux-image-686 image doesn't exist any longer - *) KARCH='686-pae' ;; - esac + KARCH='686-pae' ;; amd64) KARCH='amd64' ;; + arm64) + KARCH='arm64' + ;; *) - echo "Only i386 and amd64 are currently supported" >&2 + echo "Only i386, amd64 and arm64 are currently supported" >&2 return 1 esac - for KPREFIX in "" "2.6-" ; do # iterate through the kernel prefixes, - # currently "" and "2.6-" - if package_exists linux-image-${KPREFIX}${KARCH} ; then - echo ${KPREFIX}${KARCH} - return 0 - fi + local KPACKAGE + KPACKAGE=linux-image-"${KPREFIX}${KARCH}" + if package_exists "$KPACKAGE"; then + echo "${KPREFIX}${KARCH}" + return 0 + fi - done + echo "Expected kernel package $KPACKAGE not found" >&2 + return 1 } # install kernel packages {{{ @@ -394,6 +393,7 @@ passwords() fi if [ -n "$ROOTPASSWORD" ] ; then + # shellcheck disable=SC2086 echo root:"$ROOTPASSWORD" | chpasswd $CHPASSWD_OPTION export ROOTPASSWORD='' else @@ -416,6 +416,7 @@ passwords() a='1' b='2' else + # shellcheck disable=SC2086 echo root:"$a" | chpasswd $CHPASSWD_OPTION unset a unset b @@ -603,8 +604,10 @@ initrd() { 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 @@ -653,7 +656,7 @@ available_ids() { echo "${ids}" } -# helper function to report corresponding /dev/disk/by-id/… for a given device name, +# helper function to report corresponding /dev/disk/by-id/ for a given device name, # based on GRUB's postinst script device_to_id() { local id @@ -700,15 +703,19 @@ 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 echo "Error: grub-install not available. (Error while installing grub package?)" >&2 return 1 fi + if ! [ -x "$(command -v update-grub)" ] ; then + echo "Error: update-grub not available. (Error while installing grub package?)" >&2 + return 1 + fi if [ -n "$SELECTED_PARTITIONS" ] ; then # using sw-raid for device in $SELECTED_PARTITIONS ; do @@ -722,40 +729,17 @@ grub_install() { done rm -f /boot/grub/device.map else - echo "Installing grub on ${GRUB}:" - case "$RELEASE" in - lenny|squeeze|wheezy) - 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 - if ! grub-install "(hd0)" ; then - echo "Error: failed to execute 'grub-install (hd0)'." >&2 - exit 1 - fi - rm /boot/grub/device.map - ;; - esac + echo "Installing grub on ${GRUB}:" + echo "(hd0) ${GRUB}" > /boot/grub/device.map + if ! grub-install "(hd0)" ; then + echo "Error: failed to execute 'grub-install (hd0)'." >&2 + exit 1 + fi + rm /boot/grub/device.map fi echo "Adjusting grub configuration for use on ${GRUB}." - # finally install grub - if [ -x /usr/sbin/update-grub ] ; then - UPDATEGRUB='/usr/sbin/update-grub' - elif [ -x /sbin/update-grub ] ; then - UPDATEGRUB='/sbin/update-grub' - else - echo "Error: update-grub not available, can not execute it." >&2 - 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 @@ -763,7 +747,8 @@ grub_install() { mountpoint /boot/efi &>/dev/null && umount /boot/efi - $UPDATEGRUB + # finally install grub. Existence of update-grub is checked above. + update-grub } # }}}