X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=776825d4548d74bcc14180041cc5d561b8592a6c;hp=73e69dd57d84ae790b35c57b2c65504760d15eb6;hb=65c84c8b75ff4ce1abfdda8b1909f3ace4091aa4;hpb=be5760d9fb97ac3663c1e6e3bd1787e9e8584676 diff --git a/grml-debootstrap b/grml-debootstrap index 73e69dd..776825d 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -80,6 +80,7 @@ MNTPOINT="/mnt/debootstrap.$$" [ -n "$TUNE2FS" ] || TUNE2FS='tune2fs -c0 -i0' [ -n "$UPGRADE_SYSTEM" ] || UPGRADE_SYSTEM='yes' [ -n "$VMSIZE" ] || VMSIZE="2G" +[ -n "$GRUB_INSTALL" ] || GRUB_INSTALL='yes' # inside the chroot system locales might not be available, so use minimum: export LANG=C @@ -1186,6 +1187,12 @@ set_target_directory(){ if [ -b "$TARGET" ] || [ -n "$VIRTUAL" ] ; then PARTITION=1 else + # $TARGET was not detected as block device, but we do not want to create target directory in /dev/ + if [[ $TARGET == "/dev/"* ]]; then + eerror "Error: Will not create target directory $TARGET in /dev." + eerror " Please check the partition(s) of the blockdevice."; eend 1 + bailout 1 + fi set_target_directory fi # }}} @@ -1393,7 +1400,7 @@ prepare_vm() { bailout 1 fi - # make sure loop module is present and an usable loop device exists + # make sure loop module is present and a usable loop device exists modprobe -q loop if ! losetup -f >/dev/null 2>&1; then eerror "Error finding usable loop device" ; eend 1 @@ -1404,7 +1411,7 @@ prepare_vm() { # "Is device-mapper driver missing from kernel? [...]" modprobe -q dm-mod if ! grep -q 'device-mapper' /proc/misc >/dev/null 2>&1 ; then - einfo "Device-mapper support missing in kernel." + eerror "Device-mapper support missing in kernel." ; eend 1 bailout 1 fi @@ -1444,11 +1451,15 @@ prepare_vm() { } # }}} -# make VM image bootable and unmount it {{{ -finalize_vm() { +# make VM image bootable {{{ +grub_install() { if [ -z "${VIRTUAL}" ] ; then return 0 fi + if [ "${GRUB_INSTALL}" != "yes" ] ; then + einfo "Not installing GRUB as requested via \$GRUB_INSTALL=$GRUB_INSTALL" + return 0 + fi if ! mount "${TARGET}" "${MNTPOINT}" ; then eerror "Error: Mounting ${TARGET} failed, can not continue." ; eend 1 @@ -1517,6 +1528,16 @@ fi umount "${MNTPOINT}"/sys umount "${MNTPOINT}"/dev/pts try_umount 3 "${MNTPOINT}"/dev + +} +# }}} + +# unmount VM image {{{ +umount_target() { + if [ -z "${VIRTUAL}" ] ; then + return 0 + fi + umount "${MNTPOINT}" kpartx -d "${ORIG_TARGET}" >/dev/null # Workaround for a bug in kpartx which doesn't clean up properly, @@ -1889,7 +1910,7 @@ remove_configs() { for i in format_efi_partition prepare_vm mkfs tunefs \ mount_target mountpoint_to_blockdevice debootstrap_system \ preparechroot execute_pre_scripts chrootscript execute_post_scripts \ - remove_configs umount_chroot finalize_vm fscktool ; do + remove_configs umount_chroot grub_install umount_target fscktool ; do if stage "${i}" ; then if "$i" ; then stage "${i}" 'done' && rm -f "${STAGES}/${i}"