X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=7a3728f374302282beb36106b6b880886bfd1e10;hp=335ef940d14391953647dd5dcedaa34653e01b56;hb=f48891f86b25f3f2563097cfe1f50ddcd3d4c91c;hpb=04d37b915d46d73ffaa41ec9d55b6413e84ca82d diff --git a/grml-debootstrap b/grml-debootstrap index 335ef94..7a3728f 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -177,15 +177,17 @@ check4progs(){ # helper functions {{{ cleanup() { - set -x - einfo "Removing ${CHROOT_VARIABLES}" ; rm "$CHROOT_VARIABLES" ; eend $? - einfo "Removing ${STAGES}" ; rmdir "$STAGES" ; eend $? + if [ -n "$CHROOT_VARIABLES" ] ; then + einfo "Removing ${CHROOT_VARIABLES}" ; rm "$CHROOT_VARIABLES" ; eend $? + fi + + if [ -n "$STAGES" ] ; then + einfo "Removing ${STAGES}" ; rmdir "$STAGES" ; eend $? + fi # Remove temporary mountpoint again if echo "$MNTPOINT" | grep -q '/mnt/debootstrap\.' ; then - einfo "Removing directory ${MNTPOINT}" - rmdir "$MNTPOINT" - eend $? + rmdir "$MNTPOINT" 2>/dev/null fi # make sure $TARGET is not mounted when exiting grml-debootstrap @@ -204,7 +206,9 @@ cleanup() { done umount "$MNTPOINT"/dev >/dev/null 2>&1 - [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" >/dev/null 2>&1 + if [ -n "$ISODIR" ] ; then + [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" >/dev/null 2>&1 + fi if [ -n "$DIRECTORY" ] ; then einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." ; eend 0 @@ -240,7 +244,7 @@ bailout(){ cleanup [ -n "$1" ] && EXIT="$1" || EXIT="1" - [ -n "$3" ] && einfo "Notice: just remove $STAGES/$3 to reexecute the stage" + [ -n "$2" ] && einfo "Notice: remove $STAGES/$2 to reexecute the stage" exit "$EXIT" } @@ -260,7 +264,7 @@ stage() { # }}} # make sure we have what we need {{{ -check4progs debootstrap dialog || bailout 1 +check4progs debootstrap || bailout 1 # }}} # source main configuration file {{{ @@ -350,7 +354,7 @@ fi # make sure we have what we need {{{ if [ -n "$VIRTUAL" ] ; then - check4progs kpartx mksh qemu-img || bailout 1 + check4progs kpartx mksh parted qemu-img || bailout 1 fi # }}} @@ -744,6 +748,8 @@ fi # interactive mode {{{ interactive_mode() { + check4progs dialog || bailout 1 + welcome_dialog prompt_for_release @@ -948,6 +954,13 @@ prepare_vm() { dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of="$TARGET" parted -s "${TARGET}" 'mkpart primary ext3 2M -1' + # if dm-mod isn't available then kpartx will fail with + # "Is device-mapper driver missing from kernel? [...]" + if ! kpartx -av $TARGET >/dev/null 2>&1 ; then + einfo "Device-mapper not ready yet, trying to load dm-mod module." + modprobe dm-mod ; eend $? + fi + DEVINFO=$(kpartx -av $TARGET) # 'add map loop1p1 (253:0): 0 6289408 linear /dev/loop1 2048' if [ -z "${DEVINFO}" ] ; then eerror "Error setting up loopback device." ; eend 1 @@ -1237,7 +1250,7 @@ umount_chroot() { # execute filesystem check {{{ fscktool() { if [ -n "$VIRTUAL" ] ; then - einfo "Skipping filesystem check since we deploy a virtual machine." + einfo "Skipping filesystem check because we deploy a virtual machine." return 0 fi @@ -1255,7 +1268,7 @@ for i in prepare_vm mkfs tunefs mount_target debootstrap_system \ preparechroot execute_pre_scripts chrootscript execute_scripts \ umount_chroot finalize_vm fscktool ; do if stage "${i}" ; then - $i && ( stage "${i}" done && rm -f "${STAGES}/${i}" ) || bailout 2 "i" + $i && ( stage "${i}" done && rm -f "${STAGES}/${i}" ) || bailout 2 "$i" fi done