From 745f09771c1a7cfd9607d3300a55ee8ddbd59fac Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Mon, 28 Sep 2015 17:37:06 +0200 Subject: [PATCH] Catch parted returning None as the searched partition Certain USB devices aren't handled correctly by python-parted. As soon as the USB devices are filled/rewritten with zeros (dd if=/dev/zero of=/dev/sdX) they are recognized properly. The underlying issue couldn't be identified yet, but since we know what we get let's just fall back to the old boot device detection and print an according warning message. Thanks: to mika and Haudegen for debugging Closes: #766964 --- grml2usb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/grml2usb b/grml2usb index cb841c5..2f63ce1 100755 --- a/grml2usb +++ b/grml2usb @@ -134,6 +134,12 @@ if not os.path.isdir(GRML2USB_BASE): GRML2USB_BASE = os.path.dirname(os.path.realpath(__file__)) +class HodorException(Exception): + """Throw exception if the exact error is not known and not fatal. + + @Exception: message""" + + class CriticalException(Exception): """Throw critical exception if the exact error is not known but fatal. @@ -356,9 +362,13 @@ def check_boot_flag(device): 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, e: + logging.info("%s, falling back to old bootflag detection", e) except ImportError, e: logging.debug("could not import parted, falling back to old bootflag detection") -- 2.1.4