Do not use partition for bootflag check but disk itself
authorMichael Prokop <mika@grml.org>
Wed, 9 Jan 2013 00:40:44 +0000 (01:40 +0100)
committerMichael Prokop <mika@grml.org>
Thu, 10 Jan 2013 12:48:30 +0000 (13:48 +0100)
A device like /dev/sdX1 won't have a bootflag enabled, so instead
look for the bootflag on the corresponding /dev/sdX device instead.

Tested-by: Markus Rekkenbeil
grml2usb

index 16b53cd..6e74786 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -312,7 +312,12 @@ def check_uid_root():
 
 
 def check_boot_flag(device):
 
 
 def check_boot_flag(device):
-    with open(device, 'r') as image:
+    if device[-1:].isdigit():
+        boot_dev = re.match(r'(.*?)\d*$', device).group(1)
+    else:
+        boot_dev = device
+
+    with open(boot_dev, 'r') as image:
         data = image.read(512)
         bootcode = data[440:]
         if bootcode[6] == '\x80':
         data = image.read(512)
         bootcode = data[440:]
         if bootcode[6] == '\x80':
@@ -320,7 +325,7 @@ def check_boot_flag(device):
         else:
             logging.debug("bootflag is NOT enabled")
             raise VerifyException("Device %s does not have the bootflag set. "
         else:
             logging.debug("bootflag is NOT enabled")
             raise VerifyException("Device %s does not have the bootflag set. "
-                "Please enable it to be able to boot." % device)
+                "Please enable it to be able to boot." % boot_dev)
 
 
 def mkfs_fat16(device):
 
 
 def mkfs_fat16(device):