-""" % {'grml_flavour': grml_flavour, 'local_datestamp': local_datestamp, 'bootoptions': bootoptions, 'install_partition': install_partition } )
-
-
-def generate_flavour_specific_grub2_config(grml_flavour, install_partition, bootoptions):
- """Generate grub2 configuration for use via grub.cfg
-
- TODO
-
- @grml_flavour: name of grml flavour the configuration should be generated for"""
-
- local_datestamp = DATESTAMP
-
- return("""\
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet module=%(grml_flavour)s %(bootoptions)s
- initrd /boot/release/%(grml_flavour)s/initrd.gz
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s2ram" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26 apm=power-off boot=live nomce vga=791 quiet module=%(grml_flavour)s toram=%(grml_flavour)s %(bootoptions)s
- initrd /boot/release/%(grml_flavour)s/initrd.gz
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-debug" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce vga=791 quiet module=%(grml_flavour)s debug boot=live initcall_debug%(bootoptions)s
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-x" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce vga=791 quiet module=%(grml_flavour)s startx=wm-ng %(bootoptions)s
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-nofb" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce quiet module=%(grml_flavour)s vga=normal video=ofonly %(bootoptions)s
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-failsafe" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce quiet module=%(grml_flavour)s vga=normal lang=us boot=live noautoconfig atapicd noacpi acpi=off nomodules nofirewire noudev nousb nohotplug noapm nopcmcia maxcpus=1 noscsi noagp nodma ide=nodma noswap nofstab nosound nogpm nosyslog nodhcp nocpu nodisc nomodem xmodule=vesa noraid nolvm %(bootoptions)s
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-forensic" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce vga=791 quiet module=%(grml_flavour)s nofstab noraid nolvm noautoconfig noswap raid=noautodetect %(bootoptions)s
-}
-
-## flavour specific configuration for %(grml_flavour)s [grml2usb for %(grml_flavour)s: %(local_datestamp)s]
-menuentry "%(grml_flavour)s-serial" {
- set root=(hd0,%(install_partition)s)
- linux /boot/release/%(grml_flavour)s/linux26
- initrd /boot/release/%(grml_flavour)s/initrd.gz apm=power-off boot=live nomce quiet module=%(grml_flavour)s vga=normal video=vesafb:off console=tty1 console=ttyS0,9600n8 %(bootoptions)s
-}
-
-""" % {'grml_flavour': grml_flavour, 'local_datestamp': local_datestamp, 'bootoptions': bootoptions, 'install_partition': install_partition } )
-
-
-def generate_grub1_config(grml_flavour, install_partition, bootoptions):
- """Generate grub1 configuration for use via menu.lst
-
- @grml_flavour: name of grml flavour the configuration should be generated for"""
+ try:
+ import parted
+ part = get_partition_for_path(device)
+ if part is None:
+ raise HodorException("parted could not find partition")
+ if part.getFlag(parted.PARTITION_BOOT):
+ logging.debug("bootflag is enabled on %s" % device)
+ return
+ except HodorException as e:
+ logging.info("%s, falling back to old bootflag detection", e)
+ except ImportError as e:
+ logging.debug("could not import parted, falling back to old bootflag detection")
+
+ with open(boot_dev, 'rb') as image:
+ data = image.read(520)
+ bootcode = data[440:]
+ gpt_data = bootcode[70:80]
+
+ if gpt_data == GPT_HEADER:
+ logging.info("GPT detected, skipping bootflag check")
+ elif bootcode[6] == b"\x80":
+ logging.debug("bootflag is enabled")
+ 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)