VM feature: improve sed command line to replace root=... kernel option
[grml-debootstrap.git] / grml-debootstrap
index 619d651..2a6c683 100755 (executable)
@@ -961,6 +961,18 @@ prepare_vm() {
     modprobe dm-mod ; eend $?
   fi
 
+  # make sure loop module is present
+  if ! losetup -f >/dev/null 2>&1; then
+    einfo "Can not find a usable loop device, retrying after loading loop module."
+    modprobe loop
+    if losetup -f >/dev/null 2>&1; then
+      einfo "Found a usable loop device now, continuing."
+    else
+      eerror "Error finding usable loop device" ; eend 1
+      bailout 1
+    fi
+  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
@@ -1019,7 +1031,7 @@ finalize_vm() {
   einfo "Adjusting grub.cfg for successful boot sequence."
   # ugly but needed to boot grub acordingly
   sed -i "s;set root=.*;set root='(hd0,msdos1)';" "${MNTPOINT}"/boot/grub/grub.cfg
-  sed -i "s; root=/dev/.*; root=/dev/sda1;" "${MNTPOINT}"/boot/grub/grub.cfg
+  sed -i "s;root=[^ ]\+;root=/dev/sda1;" "${MNTPOINT}"/boot/grub/grub.cfg
 
   umount "${MNTPOINT}"
   kpartx -d "${ORIG_TARGET}" >/dev/null