last_bash_command="$BASH_COMMAND"
echo "Unexpected non-zero exit code $last_exit_code in ${BASH_SOURCE[*]} at line ${BASH_LINENO[*]} detected!
last bash command: $last_bash_command"
+ if [ -r "$MNTPOINT/debootstrap/debootstrap.log" ] && \
+ [ -s "$MNTPOINT/debootstrap/debootstrap.log" ] ; then
+ einfo "Presenting last ten lines of debootstrap.log:"
+ tail -10 "${MNTPOINT}"/debootstrap/debootstrap.log
+ einfo "End of debootstrap.log"
+ fi
## Check if "bailout" function is available.
## This is not the case in chroot-script.
if command -v bailout >/dev/null 2>&1; then
einfo "Removing ${STAGES}" ; rmdir "$STAGES" || eend $?
fi
- if findmnt "${MNTPOINT}"/boot/efi &>/dev/null ; then
- umount "${MNTPOINT}"/boot/efi
- fi
+ try_umount 3 "${MNTPOINT}"/boot/efi
# Remove temporary mountpoint again
if echo "$MNTPOINT" | grep -q '/mnt/debootstrap\.' ; then
done
if [ -n "$ISODIR" ] ; then
- [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" >/dev/null 2>&1 || true
+ try_umount 3 "$MNTPOINT/$ISODIR" >/dev/null 2>&1 || true
fi
if [ -n "$DIRECTORY" ] ; then
einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice."
else
einfo "Unmounting $MNTPOINT"
- umount "$MNTPOINT" || eend $?
+ try_umount 3 "$MNTPOINT"
fi
if [ -n "$STAGES" ] ; then
done < "$TMPFILE"
ERRORFILE=$(mktemp)
+
+local RC=0
# shellcheck disable=SC2086
yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \
- --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
-RC=$?
+ --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE || RC=$?
+
if [ "$RC" = 0 ] ; then
dialog --title "$PN" --msgbox \
"Creating $TARGET was successful." 0 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
+ if ! mkfs.fat -F32 -n "EFI" "$EFI" ; then
eerror "Error while creating filesystem on ${EFI}."
bailout 1
fi
einfo "Running $MKFS $MKFS_OPTS on $TARGET"
# shellcheck disable=SC2086
- "$MKFS" $MKFS_OPTS "$TARGET" ; RC=$?
+ "$MKFS" $MKFS_OPTS "$TARGET"
if [ "$FIXED_DISK_IDENTIFIERS" = "yes" ] ; then
if ! echo "$MKFS" | grep -q "mkfs.ext" ; then
# race conditions :-/
sleep 2
- eend $RC
fi
}
# }}}
# workaround for Debian bug #918590 with lvm + udev:
# WARNING: Device /dev/... not initialized in udev database even after waiting 10000000 microseconds
- if mountpoint "${MNTPOINT}"/run/udev &>/dev/null ; then
- einfo "Unmounting bind-mount /run/udev"
- umount "${MNTPOINT}"/run/udev
- fi
+ try_umount 3 "${MNTPOINT}"/run/udev
- umount "${MNTPOINT}"/proc
- umount "${MNTPOINT}"/sys
- umount "${MNTPOINT}"/dev/pts
+ try_umount 3 "${MNTPOINT}"/proc
+ try_umount 3 "${MNTPOINT}"/sys
+ try_umount 3 "${MNTPOINT}"/dev/pts
try_umount 3 "${MNTPOINT}"/dev
- if findmnt "${MNTPOINT}"/boot/efi &>/dev/null ; then
- umount "${MNTPOINT}"/boot/efi
- fi
+ try_umount 3 "${MNTPOINT}"/boot/efi
}
# }}}
return 0
fi
- if findmnt "${MNTPOINT}"/boot/efi &>/dev/null ; then
- umount "${MNTPOINT}"/boot/efi
- fi
+ try_umount 3 "${MNTPOINT}"/boot/efi
- umount "${MNTPOINT}"
+ try_umount 3 "${MNTPOINT}"
kpartx -d "${ORIG_TARGET}" >/dev/null
# Workaround for a bug in kpartx which doesn't clean up properly,
# see Debian Bug #891077 and Github-PR grml/grml-debootstrap#112
einfo "Executing: $DEBOOTSTRAP $ARCHCMD $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO"
# shellcheck disable=SC2086
"$DEBOOTSTRAP" $ARCHCMD $DEBOOTSTRAP_OPT "$RELEASE" "$MNTPOINT" "$ISO"
- RC=$?
else
einfo "Running $DEBOOTSTRAP $DEBOOTSTRAP_OPT for release ${RELEASE}${ARCHINFO} using ${MIRROR}"
einfo "Executing: $DEBOOTSTRAP $ARCHCMD $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $MIRROR"
# shellcheck disable=SC2086
"$DEBOOTSTRAP" $ARCHCMD $DEBOOTSTRAP_OPT "$RELEASE" "$MNTPOINT" "$MIRROR"
- RC=$?
fi
-
- if [ $RC -ne 0 ] ; then
- if [ -r "$MNTPOINT/debootstrap/debootstrap.log" ] && \
- [ -s "$MNTPOINT/debootstrap/debootstrap.log" ] ; then
- einfo "Presenting last ten lines of debootstrap.log:"
- tail -10 "${MNTPOINT}"/debootstrap/debootstrap.log
- einfo "End of debootstrap.log"
- fi
- fi
-
- eend $RC
}
# }}}
local tries=$1
local mountpoint="$2"
+ if ! mountpoint "$mountpoint" &>/dev/null ; then
+ return 0
+ fi
+
for (( try=1; try<=tries; try++ )); do
if [[ ${try} -eq ${tries} ]]; then
# Last time, show errors this time
mount -t devtmpfs udev "${MNTPOINT}"/dev
mount -t devpts devpts "${MNTPOINT}"/dev/pts
if [ "$DEBUG" = "true" ] ; then
- chroot "$MNTPOINT" /bin/bash -x /bin/chroot-script ; RC=$?
+ chroot "$MNTPOINT" /bin/bash -x /bin/chroot-script
else
- chroot "$MNTPOINT" /bin/chroot-script ; RC=$?
+ chroot "$MNTPOINT" /bin/chroot-script
fi
try_umount 3 "$MNTPOINT"/dev/pts
try_umount 3 "$MNTPOINT"/dev
- eend $RC
fi
# finally get rid of chroot-script again, there's no good reason to
fi
if [ -n "$ISODIR" ] ; then
- if grep -q "$ISODIR" /proc/mounts ; then
- einfo "Unmount $MNTPOINT/$ISODIR"
- umount "$MNTPOINT/$ISODIR"
- fi
+ einfo "Unmount $MNTPOINT/$ISODIR"
+ try_umount 3 "$MNTPOINT/$ISODIR"
fi
- if grep -q "$MNTPOINT" /proc/mounts ; then
- if mountpoint "${MNTPOINT}"/run/udev &>/dev/null ; then
- einfo "Unmounting bind-mount /run/udev"
- umount "${MNTPOINT}"/run/udev
- fi
+ try_umount 3 "${MNTPOINT}"/run/udev
- if [ -n "$PARTITION" ] ; then
- einfo "Unmount $MNTPOINT"
- umount "$MNTPOINT"
- fi
+ if [ -n "$PARTITION" ] ; then
+ try_umount 3 "$MNTPOINT"
fi
}
# }}}