Skip check for bootflag if a GPT header is present mika/detect_gpt
authorMichael Prokop <mika@grml.org>
Wed, 15 May 2013 11:59:00 +0000 (13:59 +0200)
committerMichael Prokop <mika@grml.org>
Wed, 15 May 2013 11:59:00 +0000 (13:59 +0200)
The bootflag is not required when using GPT, so skip the check
and do not fail if no bootflag is present.

grml2usb

index bef2dc2..376f6d5 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -318,9 +318,14 @@ def check_boot_flag(device):
     boot_dev, x = get_device_from_partition(device)
 
     with open(boot_dev, 'r') as image:
-        data = image.read(512)
+        data = image.read(520)
         bootcode = data[440:]
-        if bootcode[6] == '\x80':
+        gpt_header = "\x55\xaa\x45\x46\x49\x20\x50\x41\x52\x54" # original GPT header
+        gpt_data = bootcode[70:80]
+
+        if gpt_data == gpt_header:
+            logging.info("GPT detected, skipping bootflag check")
+        elif bootcode[6] == '\x80':
             logging.debug("bootflag is enabled")
         else:
             logging.debug("bootflag is NOT enabled")