Option --rw-blockdev: ensure to set device to rw between grub-install runs + don...
authorMichael Prokop <mika@grml.org>
Wed, 24 May 2017 13:31:21 +0000 (15:31 +0200)
committerMichael Prokop <mika@grml.org>
Wed, 24 May 2017 13:45:55 +0000 (15:45 +0200)
If we're invoking set_rw on the source device this probably
points to the source ISO which will fail.

On the other side we invoke grub-intall with and without --force
in a loop and have to unblock the underlying block device in
between as well, otherwise failing to install.

grml2usb

index f06ab9a..b0ee2b1 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -511,11 +511,10 @@ def install_grub(device):
             else:
                 grub_device = device
 
             else:
                 grub_device = device
 
-            set_rw(device)
-            set_rw(grub_device)
-
             logging.info("Installing grub as bootloader")
             for opt in ["", "--force"]:
             logging.info("Installing grub as bootloader")
             for opt in ["", "--force"]:
+                set_rw(device)
+                set_rw(grub_device)
                 logging.debug("grub-install --recheck %s --no-floppy --root-directory=%s %s",
                               opt, device_mountpoint, grub_device)
                 proc = subprocess.Popen([GRUB_INSTALL, "--recheck", opt,
                 logging.debug("grub-install --recheck %s --no-floppy --root-directory=%s %s",
                               opt, device_mountpoint, grub_device)
                 proc = subprocess.Popen([GRUB_INSTALL, "--recheck", opt,
@@ -715,8 +714,6 @@ def mount(source, target, mount_options):
         logging.debug("Source %s is not a device, therefore not mounting.", source)
         return 0
 
         logging.debug("Source %s is not a device, therefore not mounting.", source)
         return 0
 
-    set_rw(source)
-
     logging.debug("mount %s %s %s", mount_options, source, target)
     proc = subprocess.Popen(["mount"] + list(mount_options) + [source, target])
     proc.wait()
     logging.debug("mount %s %s %s", mount_options, source, target)
     proc = subprocess.Popen(["mount"] + list(mount_options) + [source, target])
     proc.wait()