X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=grml-debootstrap;h=5ee3e5a2b0c015a70b27454ef48f368a5ca73282;hb=045542c14567842973d25800062765ef5b91e405;hp=f6c55358d4256a9d86f8c49a6856e7b476b3b1f0;hpb=670035bdde9ac232b3869eea4a66f5412d1d1132;p=grml-debootstrap.git diff --git a/grml-debootstrap b/grml-debootstrap index f6c5535..5ee3e5a 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -31,6 +31,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 @@ -293,7 +294,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 +345,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 } @@ -639,15 +640,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 } # }}} @@ -992,14 +991,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 +1018,7 @@ efi_support() { fi if [ -d /sys/firmware/efi ] ; then - einfo "EFI support detected." ; eend 0 + einfo "EFI support detected." return 0 fi @@ -1037,20 +1034,22 @@ efi_support() { 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 - fi -else - if [ -n "$_opt_efi" ] ; then - eerror "EFI option used but no EFI support detected." ; eend 0 - bailout 1 +if [ -z "$VIRTUAL" ] ; then + if efi_support ; then + if [ -z "$_opt_efi" ] ; then + 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." + bailout 1 + fi 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 +1296,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 @@ -1315,7 +1312,6 @@ mkfs() { 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 @@ -1333,7 +1329,6 @@ mkfs() { 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 +1355,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" > "${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 +2008,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 +2033,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 +2046,6 @@ iface ${interface} inet dhcp mount --bind /run/udev "${MNTPOINT}"/run/udev eend $? fi - - eend 0 } # }}} @@ -2155,7 +2147,6 @@ chrootscript() { eend $? else einfo "Keeping chroot-script as string GRML_CHROOT_SCRIPT_MARKER could not be found" - eend 0 fi } # }}} @@ -2215,7 +2206,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 +2222,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 +2243,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 # }}}