GRML_DEFAULT = None
UUID = None
SYSLINUX_LIBS = "/usr/lib/syslinux/"
+GPT_HEADER = "\x55\xaa\x45\x46\x49\x20\x50\x41\x52\x54" # original GPT header
RE_PARTITION = re.compile(r'([a-z/]*?)(\d+)$')
RE_P_PARTITION = re.compile(r'(.*?\d+)p(\d+)$')
def check_uid_root():
"""Check for root permissions"""
if not os.geteuid() == 0:
- sys.exit("Error: please run this script with uid 0 (root).")
+ raise CriticalException("please run this script with uid 0 (root).")
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_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")
if not os.path.isfile(mbrtemplate):
logging.error('Error installing MBR (either try --syslinux-mbr or '
'install missing file "%s"?)', mbrtemplate)
- raise CriticalException("Error: %s can not be read.", mbrtemplate)
+ raise CriticalException("%s can not be read." % mbrtemplate)
if partition is not None and ((partition < 0) or (partition > 3)):
logging.warn("Cannot activate partition %d", partition)
squashfs = search_file(grml_flavour + '.squashfs', iso_mount)
if squashfs is None:
logging.error("error locating squashfs file")
- raise CriticalException("Fatal: squashfs file not found"
+ raise CriticalException("squashfs file not found"
", please check that your iso is not corrupt")
else:
squashfs_target = target + '/live/' + grml_flavour + '/'
if not source_dir:
raise CriticalException(
- "Fatal: file default.cfg could not be found." \
- "Note: this grml2usb version requires an ISO generated by grml-live >=0.9.24 ..." \
+ "file default.cfg could not be found.\n"
+ "Note: this grml2usb version requires an ISO generated by grml-live >=0.9.24 ...\n"
" ... either use grml releases >=2009.10 or switch to an older grml2usb version.")
if not os.path.exists(iso_mount + '/boot/grub/footer.cfg'):
try:
remove_mountpoint(iso_mountpoint)
except CriticalException, error:
- logging.critical("Fatal: %s", error)
cleanup()
+ raise
def install_grml(mountpoint, device):
check_boot_flag(device)
mount(device, device_mountpoint, ['-o', 'utf8,iocharset=iso8859-1'])
except VerifyException, error:
- logging.critical("Fatal: %s", error)
raise
except CriticalException, error:
mount(device, device_mountpoint, "")
os.rmdir(mountpoint)
unregister_tmpfile(mountpoint)
except CriticalException, error:
- logging.critical("Fatal: %s", error)
cleanup()
+ raise
def handle_mbr(device):
if options.verbose and options.quiet:
parser.error("please use either verbose (--verbose) or quiet (--quiet) option")
+ FORMAT = "%(message)s"
if options.verbose:
- FORMAT = "Debug: %(asctime)-15s %(message)s"
+ FORMAT = "%(asctime)-15s %(message)s"
logging.basicConfig(level=logging.DEBUG, format=FORMAT)
elif options.quiet:
- FORMAT = "Critical: %(message)s"
logging.basicConfig(level=logging.CRITICAL, format=FORMAT)
else:
- FORMAT = "%(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)
@opts option dict from OptionParser
"""
if opts.grubmbr and not opts.grub:
- logging.critical("Error: --grub-mbr requires --grub option.")
- sys.exit(1)
+ raise CriticalException("--grub-mbr requires --grub option.")
def check_programs():