X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=grml-debootstrap;h=8d9e1dbc21126c4e577b8808d44a3155f2430519;hb=c5357622163341d7364f38d6d2e675e933dcb157;hp=f6c55358d4256a9d86f8c49a6856e7b476b3b1f0;hpb=670035bdde9ac232b3869eea4a66f5412d1d1132;p=grml-debootstrap.git diff --git a/grml-debootstrap b/grml-debootstrap index f6c5535..8d9e1db 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -5,6 +5,7 @@ # Bug-Reports: see https://grml.org/bugs/ # License: This file is licensed under the GPL v2+ ################################################################################ +# shellcheck disable=SC2001,SC2181 # error_handler {{{ [ -n "$REPORT_TRAP_ERR" ] || REPORT_TRAP_ERR='no' @@ -31,6 +32,7 @@ last bash command: $last_bash_command" } if [ "$REPORT_TRAP_ERR" = "yes" ] || [ "$FAIL_TRAP_ERR" = "yes" ]; then + set -e set -E set -o pipefail trap "error_handler" ERR @@ -41,7 +43,7 @@ fi # variables {{{ PN="$(basename "$0")" if [[ -d "$(dirname "$(command -v "$0")")"/.git ]]; then - VERSION="$(git --git-dir $(dirname "$(command -v "$0")")/.git describe | sed 's|^v||')" + VERSION="$(git --git-dir "$(dirname "$(command -v "$0")")"/.git describe | sed 's|^v||')" else VERSION="$(dpkg-query --show --showformat='${Version}' "$PN")" fi @@ -293,7 +295,7 @@ cleanup() { fi if [ -n "$DIRECTORY" ] ; then - einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." ; eend 0 + einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." else einfo "Unmounting $MNTPOINT" umount "$MNTPOINT" @@ -344,8 +346,8 @@ stage() { echo "$2" > "${STAGES}/${1}" return 0 elif grep -q 'done' "${STAGES}/${1}" 2>/dev/null ; then - ewarn "Notice: stage $1 has been executed already, skipping execution therefore." ; eend 0 - ewarn " To reexecute it clean up the according directory inside $STAGES" ; eend 0 + ewarn "Notice: stage $1 has been executed already, skipping execution therefore." + ewarn " To reexecute it clean up the according directory inside $STAGES" return 1 fi } @@ -600,7 +602,7 @@ done [ "$_opt_contrib" ] && COMPONENTS="$COMPONENTS contrib" case "${RELEASE}" in - lenny|squeeze|wheezy|jessie|stretch|buster|bullseye) + jessie|stretch|buster|bullseye) [ "$_opt_non_free" ] && COMPONENTS="$COMPONENTS non-free" ;; *) @@ -639,15 +641,13 @@ if [ "$DEBUG" = "true" ] ; then fi [ "$_opt_help" ] && { - usage ; eend 0 - eend 0 + usage exit 0 } [ "$_opt_version" ] && { einfo "$PN - version $VERSION" einfo "Report bugs via https://github.com/grml/grml-debootstrap/ or https://grml.org/bugs/" - eend 0 exit 0 } # }}} @@ -927,16 +927,10 @@ while IFS= read -r i; do NUM_PARTITIONS=$(( NUM_PARTITIONS + 1 )) done < "$TMPFILE" -# force metadata version 0.90 for lenny so old grub can boot from this array. -METADATA_VERSION="" -if [ "$RELEASE" = "lenny" ]; then - METADATA_VERSION="-e0" -fi - ERRORFILE=$(mktemp) # shellcheck disable=SC2086 yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \ - --raid-devices="${NUM_PARTITIONS}" ${METADATA_VERSION} ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE + --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE RC=$? if [ "$RC" = 0 ] ; then dialog --title "$PN" --msgbox \ @@ -992,14 +986,12 @@ format_efi_partition() { fi if fsck.vfat -bn "$EFI" >/dev/null; then - einfo "EFI partition $EFI seems to have a FAT filesystem, not modifying." ; eend 0 + einfo "EFI partition $EFI seems to have a FAT filesystem, not modifying." else einfo "EFI partition $EFI doesn't seem to be formatted, creating filesystem." mkfs.fat -F32 -n "EFI" "$EFI" RC=$? - if [ $RC -eq 0 ] ; then - eend 0 - else + if [ ! $RC -eq 0 ] ; then eerror "Error while creating filesystem on ${EFI}." eend 1 bailout 1 @@ -1021,7 +1013,7 @@ efi_support() { fi if [ -d /sys/firmware/efi ] ; then - einfo "EFI support detected." ; eend 0 + einfo "EFI support detected." return 0 fi @@ -1039,18 +1031,18 @@ checkconfiguration() if efi_support ; then if [ -z "$_opt_efi" ] ; then - ewarn "EFI support detected but no --efi option given, please consider enabling it." ; eend 0 + ewarn "EFI support detected but no --efi option given, please consider enabling it." fi else if [ -n "$_opt_efi" ] ; then - eerror "EFI option used but no EFI support detected." ; eend 0 + eerror "EFI option used but no EFI support detected." bailout 1 fi fi if [ -n "$AUTOINSTALL" ] ; then if checkforrun ; then - eerror "Exiting as requested" ; eend 0 + eerror "Exiting as requested" bailout 1 fi elif [ -n "$INTERACTIVE" ] ; then @@ -1297,8 +1289,6 @@ mkfs() { mkfs.ext*) einfo "Enabling force option (-F) for mkfs.ext* tool as requested via --force switch." MKFS_OPTS="$MKFS_OPTS -F" - eend 0 - ;; esac fi @@ -1308,14 +1298,13 @@ mkfs() { # so disable this feature for older Debian releases where it's known to be unsupported if [ -n "$MKFS" ] && [ "$MKFS" = "mkfs.ext4" ] ; then case "$RELEASE" in - lenny|squeeze|wheezy|jessie) + jessie) # assume a more recent version if we can't identify the version via dpkg-query local e2fsprogs_version e2fsprogs_version="$(dpkg-query --show --showformat='${Version}' e2fsprogs 2>/dev/null || echo 1.44)" if [ -n "$e2fsprogs_version" ] && dpkg --compare-versions "$e2fsprogs_version" ge '1.43~WIP.2015.05.18-1' ; then einfo "Disabling metadata_csum feature for $MKFS as $RELEASE doesn't support it." MKFS_OPTS="$MKFS_OPTS -O ^metadata_csum" - eend 0 fi ;; esac @@ -1326,14 +1315,13 @@ mkfs() { # Disable this feature for Debian releases older than bookworm if [ -n "$MKFS" ] && [ "$MKFS" = "mkfs.ext4" ] ; then case "$RELEASE" in - lenny|squeeze|wheezy|jessie|stretch|buster|bullseye) + jessie|stretch|buster|bullseye) local e2fsprogs_version # assume a more recent version if we can't identify the version via dpkg-query e2fsprogs_version="$(dpkg-query --show --showformat='${Version}' e2fsprogs 2>/dev/null || echo 1.47)" if [ -n "$e2fsprogs_version" ] && dpkg --compare-versions "$e2fsprogs_version" ge '1.43' ; then einfo "Disabling metadata_csum_seed feature for $MKFS as $RELEASE doesn't support it." MKFS_OPTS="$MKFS_OPTS -O ^metadata_csum_seed" - eend 0 fi ;; esac @@ -1360,7 +1348,7 @@ mkfs() { bailout 1 else einfo "Changing disk uuid for $TARGET to fixed (non-random) value $DISK_IDENTIFIER using tune2fs" - tune2fs "$TARGET" -U "$DISK_IDENTIFIER" + tune2fs "$TARGET" -U "$DISK_IDENTIFIER" "$CHROOT_VARIABLES" - # Resorting to sed(1) for escaping since "VAR='${VAR//\'/\'\\\'\'}'" does not work with all versions of Bash, - # e.g. not with 4.2.37(1)-release (a.k.a 4.2+dfsg-0.1+deb7u3) of Debian wheezy - [ -n "$ARCH" ] && echo "ARCH='$(sed "s,','\\\\'',g" <<<"${ARCH}")'" >> "$CHROOT_VARIABLES" - [ -n "$BACKPORTREPOS" ] && echo "BACKPORTREPOS='$(sed "s,','\\\\'',g" <<<"${BACKPORTREPOS}")'" >> "$CHROOT_VARIABLES" - [ -n "$BOOT_APPEND" ] && echo "BOOT_APPEND='$(sed "s,','\\\\'',g" <<<"${BOOT_APPEND}")'" >> "$CHROOT_VARIABLES" - [ -n "$CHROOT_SCRIPTS" ] && echo "CHROOT_SCRIPTS='$(sed "s,','\\\\'',g" <<<"${CHROOT_SCRIPTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$COMPONENTS" ] && echo "COMPONENTS='$(sed "s,','\\\\'',g" <<<"${COMPONENTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$CONFFILES" ] && echo "CONFFILES='$(sed "s,','\\\\'',g" <<<"${CONFFILES}")'" >> "$CHROOT_VARIABLES" - [ -n "$DEBCONF" ] && echo "DEBCONF='$(sed "s,','\\\\'',g" <<<"${DEBCONF}")'" >> "$CHROOT_VARIABLES" - [ -n "$DEBIAN_FRONTEND" ] && echo "DEBIAN_FRONTEND='$(sed "s,','\\\\'',g" <<<"${DEBIAN_FRONTEND}")'" >> "$CHROOT_VARIABLES" - [ -n "$DEBOOTSTRAP" ] && echo "DEBOOTSTRAP='$(sed "s,','\\\\'',g" <<<"${DEBOOTSTRAP}")'" >> "$CHROOT_VARIABLES" - [ -n "$DEFAULT_LOCALES" ] && echo "DEFAULT_LOCALES='$(sed "s,','\\\\'',g" <<<"${DEFAULT_LOCALES}")'" >> "$CHROOT_VARIABLES" - [ -n "$DEFAULT_LANGUAGE" ] && echo "DEFAULT_LANGUAGE='$(sed "s,','\\\\'',g" <<<"${DEFAULT_LANGUAGE}")'" >> "$CHROOT_VARIABLES" - [ -n "$EXTRAPACKAGES" ] && echo "EXTRAPACKAGES='$(sed "s,','\\\\'',g" <<<"${EXTRAPACKAGES}")'" >> "$CHROOT_VARIABLES" - [ -n "$EFI" ] && echo "EFI='$(sed "s,','\\\\'',g" <<<"${EFI}")'" >> "$CHROOT_VARIABLES" - [ -n "$FALLBACK_MIRROR" ] && echo "FALLBACK_MIRROR='$(sed "s,','\\\\'',g" <<<"${FALLBACK_MIRROR}")'" >> "$CHROOT_VARIABLES" - [ -n "$FILESYSTEM" ] && echo "FILESYSTEM='$(sed "s,','\\\\'',g" <<<"${FILESYSTEM}")'" >> "$CHROOT_VARIABLES" - [ -n "$FORCE" ] && echo "FORCE='$(sed "s,','\\\\'',g" <<<"${FORCE}")'" >> "$CHROOT_VARIABLES" - [ -n "$GRMLREPOS" ] && echo "GRMLREPOS='$(sed "s,','\\\\'',g" <<<"${GRMLREPOS}")'" >> "$CHROOT_VARIABLES" - [ -n "$GRUB" ] && echo "GRUB='$(sed "s,','\\\\'',g" <<<"${GRUB}")'" >> "$CHROOT_VARIABLES" - [ -n "$HOSTNAME" ] && echo "HOSTNAME='$(sed "s,','\\\\'',g" <<<"${HOSTNAME}")'" >> "$CHROOT_VARIABLES" - [ -n "$INITRD" ] && echo "INITRD='$(sed "s,','\\\\'',g" <<<"${INITRD}")'" >> "$CHROOT_VARIABLES" - [ -n "$INITRD_GENERATOR" ] && echo "INITRD_GENERATOR='$(sed "s,','\\\\'',g" <<<"${INITRD_GENERATOR}")'" >> "$CHROOT_VARIABLES" - [ -n "$INITRD_GENERATOR_OPTS" ] && echo "INITRD_GENERATOR_OPTS='$(sed "s,','\\\\'',g" <<<"${INITRD_GENERATOR_OPTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$INSTALL_NOTES" ] && echo "INSTALL_NOTES='$(sed "s,','\\\\'',g" <<<"${INSTALL_NOTES}")'" >> "$CHROOT_VARIABLES" - [ -n "$ISODIR" ] && echo "ISODIR='$(sed "s,','\\\\'',g" <<<"${ISO}")'" >> "$CHROOT_VARIABLES" - [ -n "$ISO" ] && echo "ISO='$(sed "s,','\\\\'',g" <<<"${ISO}")'" >> "$CHROOT_VARIABLES" - [ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST='$(sed "s,','\\\\'',g" <<<"${KEEP_SRC_LIST}")'" >> "$CHROOT_VARIABLES" - [ -n "$LOCALES" ] && echo "LOCALES='$(sed "s,','\\\\'',g" <<<"${LOCALES}")'" >> "$CHROOT_VARIABLES" - [ -n "$MIRROR" ] && echo "MIRROR='$(sed "s,','\\\\'',g" <<<"${MIRROR}")'" >> "$CHROOT_VARIABLES" - [ -n "$MKFS" ] && echo "MKFS='$(sed "s,','\\\\'',g" <<<"${MKFS}")'" >> "$CHROOT_VARIABLES" - [ -n "$NOPASSWORD" ] && echo "NOPASSWORD=\"true\"" >> "$CHROOT_VARIABLES" - [ -n "$NOKERNEL" ] && echo "NOKERNEL=\"true\"" >> "$CHROOT_VARIABLES" - [ -n "$PACKAGES" ] && echo "PACKAGES='$(sed "s,','\\\\'',g" <<<"${PACKAGES}")'" >> "$CHROOT_VARIABLES" - [ -n "$POST_SCRIPTS" ] && echo "POST_SCRIPTS='$(sed "s,','\\\\'',g" <<<"${POST_SCRIPTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$PRE_SCRIPTS" ] && echo "PRE_SCRIPTS='$(sed "s,','\\\\'',g" <<<"${PRE_SCRIPTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$RECONFIGURE" ] && echo "RECONFIGURE='$(sed "s,','\\\\'',g" <<<"${RECONFIGURE}")'" >> "$CHROOT_VARIABLES" - [ -n "$RELEASE" ] && echo "RELEASE='$(sed "s,','\\\\'',g" <<<"${RELEASE}")'" >> "$CHROOT_VARIABLES" - [ -n "$RM_APTCACHE" ] && echo "RM_APTCACHE='$(sed "s,','\\\\'',g" <<<"${RM_APTCACHE}")'" >> "$CHROOT_VARIABLES" - [ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD='$(sed "s,','\\\\'',g" <<<"${ROOTPASSWORD}")'" >> "$CHROOT_VARIABLES" - [ -n "$SCRIPTS" ] && echo "SCRIPTS='$(sed "s,','\\\\'',g" <<<"${SCRIPTS}")'" >> "$CHROOT_VARIABLES" - [ -n "$SECURE" ] && echo "SECURE='$(sed "s,','\\\\'',g" <<<"${SECURE}")'" >> "$CHROOT_VARIABLES" - [ -n "$SELECTED_PARTITIONS" ] && echo "SELECTED_PARTITIONS='$(sed "s,','\\\\'',g" <<<"${SELECTED_PARTITIONS}")'" >> "$CHROOT_VARIABLES" - [ -n "$TARGET" ] && echo "TARGET='$(sed "s,','\\\\'',g" <<<"${TARGET}")'" >> "$CHROOT_VARIABLES" - [ -n "$UPGRADE_SYSTEM" ] && echo "UPGRADE_SYSTEM='$(sed "s,','\\\\'',g" <<<"${UPGRADE_SYSTEM}")'" >> "$CHROOT_VARIABLES" - [ -n "$TARGET_UUID" ] && echo "TARGET_UUID='$(sed "s,','\\\\'',g" <<<"${TARGET_UUID}")'" >> "$CHROOT_VARIABLES" - [ -n "$TIMEZONE" ] && echo "TIMEZONE='$(sed "s,','\\\\'',g" <<<"${TIMEZONE}")'" >> "$CHROOT_VARIABLES" - [ -n "$TUNE2FS" ] && echo "TUNE2FS='$(sed "s,','\\\\'',g" <<<"${TUNE2FS}")'" >> "$CHROOT_VARIABLES" - [ -n "$VMSIZE" ] && echo "VMSIZE='$(sed "s,','\\\\'',g" <<<"${VMSIZE}")'" >> "$CHROOT_VARIABLES" + [ -n "$ARCH" ] && echo "ARCH='${ARCH//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$BACKPORTREPOS" ] && echo "BACKPORTREPOS='${BACKPORTREPOS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$BOOT_APPEND" ] && echo "BOOT_APPEND='${BOOT_APPEND//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$CHROOT_SCRIPTS" ] && echo "CHROOT_SCRIPTS='${CHROOT_SCRIPTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$COMPONENTS" ] && echo "COMPONENTS='${COMPONENTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$CONFFILES" ] && echo "CONFFILES='${CONFFILES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$DEBCONF" ] && echo "DEBCONF='${DEBCONF//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$DEBIAN_FRONTEND" ] && echo "DEBIAN_FRONTEND='${DEBIAN_FRONTEND//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$DEBOOTSTRAP" ] && echo "DEBOOTSTRAP='${DEBOOTSTRAP//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$DEFAULT_LOCALES" ] && echo "DEFAULT_LOCALES='${DEFAULT_LOCALES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$DEFAULT_LANGUAGE" ] && echo "DEFAULT_LANGUAGE='${DEFAULT_LANGUAGE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$EXTRAPACKAGES" ] && echo "EXTRAPACKAGES='${EXTRAPACKAGES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$EFI" ] && echo "EFI='${EFI//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$FALLBACK_MIRROR" ] && echo "FALLBACK_MIRROR='${FALLBACK_MIRROR//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$FILESYSTEM" ] && echo "FILESYSTEM='${FILESYSTEM//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$FORCE" ] && echo "FORCE='${FORCE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$GRMLREPOS" ] && echo "GRMLREPOS='${GRMLREPOS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$GRUB" ] && echo "GRUB='${GRUB//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$HOSTNAME" ] && echo "HOSTNAME='${HOSTNAME//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$INITRD" ] && echo "INITRD='${INITRD//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$INITRD_GENERATOR" ] && echo "INITRD_GENERATOR='${INITRD_GENERATOR//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$INITRD_GENERATOR_OPTS" ] && echo "INITRD_GENERATOR_OPTS='${INITRD_GENERATOR_OPTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$INSTALL_NOTES" ] && echo "INSTALL_NOTES='${INSTALL_NOTES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$ISODIR" ] && echo "ISODIR='${ISO//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$ISO" ] && echo "ISO='${ISO//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST='${KEEP_SRC_LIST//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$LOCALES" ] && echo "LOCALES='${LOCALES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$MIRROR" ] && echo "MIRROR='${MIRROR//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$MKFS" ] && echo "MKFS='${MKFS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$NOPASSWORD" ] && echo "NOPASSWORD=\"true\"" >> "$CHROOT_VARIABLES" + [ -n "$NOKERNEL" ] && echo "NOKERNEL=\"true\"" >> "$CHROOT_VARIABLES" + [ -n "$PACKAGES" ] && echo "PACKAGES='${PACKAGES//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$POST_SCRIPTS" ] && echo "POST_SCRIPTS='${POST_SCRIPTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$PRE_SCRIPTS" ] && echo "PRE_SCRIPTS='${PRE_SCRIPTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$RECONFIGURE" ] && echo "RECONFIGURE='${RECONFIGURE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$RELEASE" ] && echo "RELEASE='${RELEASE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$RM_APTCACHE" ] && echo "RM_APTCACHE='${RM_APTCACHE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD='${ROOTPASSWORD//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$SCRIPTS" ] && echo "SCRIPTS='${SCRIPTS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$SECURE" ] && echo "SECURE='${SECURE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$SELECTED_PARTITIONS" ] && echo "SELECTED_PARTITIONS='${SELECTED_PARTITIONS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$TARGET" ] && echo "TARGET='${TARGET//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$UPGRADE_SYSTEM" ] && echo "UPGRADE_SYSTEM='${UPGRADE_SYSTEM//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$TARGET_UUID" ] && echo "TARGET_UUID='${TARGET_UUID//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$TIMEZONE" ] && echo "TIMEZONE='${TIMEZONE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$TUNE2FS" ] && echo "TUNE2FS='${TUNE2FS//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" + [ -n "$VMSIZE" ] && echo "VMSIZE='${VMSIZE//\'/\'\\\'\'}'" >> "$CHROOT_VARIABLES" cp $VERBOSE "${CONFFILES}"/chroot-script "${MNTPOINT}"/bin/chroot-script chmod 755 "${MNTPOINT}"/bin/chroot-script @@ -1910,9 +1893,6 @@ preparechroot() { # setup default locales [ -n "$LOCALES" ] && cp $VERBOSE "${CONFFILES}"/locale.gen "${MNTPOINT}"/etc/locale.gen - # MAKEDEV is just a forking bomb crap, let's do it on our own instead :) - ( cd "${MNTPOINT}"/dev && tar zxf /etc/debootstrap/devices.tar.gz ) - # copy any existing files to chroot [ -d "${CONFFILES}"/bin ] && cp $VERBOSE -a -L "${CONFFILES}"/bin/* "${MNTPOINT}"/bin/ [ -d "${CONFFILES}"/boot ] && cp $VERBOSE -a -L "${CONFFILES}"/boot/* "${MNTPOINT}"/boot/ @@ -1963,16 +1943,18 @@ iface ${interface} inet dhcp fi if [ -n "$NOINTERFACES" ] ; then - einfo "Not installing /etc/network/interfaces as requested via --nointerfaces option" ; eend 0 + einfo "Not installing /etc/network/interfaces as requested via --nointerfaces option" elif [ -n "$USE_DEFAULT_INTERFACES" ] ; then einfo "Installing default /etc/network/interfaces as requested via --defaultinterfaces options." mkdir -p "${MNTPOINT}/etc/network" echo "$DEFAULT_INTERFACES" > "${MNTPOINT}/etc/network/interfaces" + # shellcheck disable=SC2320 eend $? elif [ -n "$VIRTUAL" ] ; then einfo "Setting up Virtual Machine, installing default /etc/network/interfaces" mkdir -p "${MNTPOINT}/etc/network" echo "$DEFAULT_INTERFACES" > "${MNTPOINT}/etc/network/interfaces" + # shellcheck disable=SC2320 eend $? elif [ -r /etc/network/interfaces ] ; then einfo "Copying /etc/network/interfaces from host to target system" @@ -1983,6 +1965,7 @@ iface ${interface} inet dhcp ewarn "Couldn't read /etc/network/interfaces, installing default /etc/network/interfaces" mkdir -p "${MNTPOINT}/etc/network" echo "$DEFAULT_INTERFACES" > "${MNTPOINT}/etc/network/interfaces" + # shellcheck disable=SC2320 eend $? fi @@ -1999,9 +1982,7 @@ iface ${interface} inet dhcp einfo "Use locally available public keys to authorise root login on the target system as requested via --sshcopyid option." mkdir -p "${MNTPOINT}"/root/.ssh chmod 0700 "${MNTPOINT}"/root/.ssh - if ssh-add -L >> "${MNTPOINT}"/root/.ssh/authorized_keys ; then - eend 0 - else + if ! ssh-add -L >> "${MNTPOINT}"/root/.ssh/authorized_keys ; then eerror "Error: executing 'ssh-add -L' failed." eend 1 bailout 1 @@ -2010,9 +1991,7 @@ iface ${interface} inet dhcp einfo "copying '$AUTHORIZED_KEYS_SOURCE' to '$AUTHORIZED_KEYS_TARGET' as requested via --sshcopyid option." mkdir -p "$AUTHORIZED_KEYS_TARGET" chmod 0700 "$AUTHORIZED_KEYS_TARGET" - if cp "$AUTHORIZED_KEYS_SOURCE" "$AUTHORIZED_KEYS_TARGET" ; then - eend 0 - else + if ! cp "$AUTHORIZED_KEYS_SOURCE" "$AUTHORIZED_KEYS_TARGET" ; then eerror "Error: copying '$AUTHORIZED_KEYS_SOURCE' to '$AUTHORIZED_KEYS_TARGET' failed" eend 1 bailout 1 @@ -2037,9 +2016,7 @@ iface ${interface} inet dhcp einfo "Copying '${AUTHORIZED_KEYS_SOURCE}' to '${AUTHORIZED_KEYS_TARGET}' as requested via --sshcopyauth option." mkdir -p "${AUTHORIZED_KEYS_TARGET}" chmod 0700 "${AUTHORIZED_KEYS_TARGET}" - if cp "${AUTHORIZED_KEYS_SOURCE}" "${AUTHORIZED_KEYS_TARGET}" ; then - eend 0 - else + if ! cp "${AUTHORIZED_KEYS_SOURCE}" "${AUTHORIZED_KEYS_TARGET}" ; then eerror "Error: copying '${AUTHORIZED_KEYS_SOURCE}' to '${AUTHORIZED_KEYS_TARGET}' failed." eend 1 bailout 1 @@ -2052,8 +2029,6 @@ iface ${interface} inet dhcp mount --bind /run/udev "${MNTPOINT}"/run/udev eend $? fi - - eend 0 } # }}} @@ -2155,7 +2130,6 @@ chrootscript() { eend $? else einfo "Keeping chroot-script as string GRML_CHROOT_SCRIPT_MARKER could not be found" - eend 0 fi } # }}} @@ -2215,7 +2189,7 @@ remove_configs() { fi if ! mountpoint "${MNTPOINT}" >/dev/null 2>&1 ; then - ewarn "Target ${MNTPOINT} doesn't seem to be mounted, can't remove configuration files." ; eend 0 + ewarn "Target ${MNTPOINT} doesn't seem to be mounted, can't remove configuration files." return 0 fi @@ -2231,7 +2205,8 @@ for i in format_efi_partition prepare_vm mkfs tunefs \ preparechroot execute_pre_scripts chrootscript execute_post_scripts \ remove_configs umount_chroot grub_install umount_target fscktool ; do if stage "${i}" ; then - if "$i" ; then + "$i" + if [ $? -eq 0 ]; then stage "${i}" 'done' && rm -f "${STAGES}/${i}" else bailout 2 "$i" @@ -2251,7 +2226,7 @@ Choose Cancel to skip rebooting." 10 60 10 ; then noeject noprompt reboot fi else - einfo "Finished execution of ${PN}. Enjoy your Debian system." ; eend 0 + einfo "Finished execution of ${PN}. Enjoy your Debian system." fi # }}}