X-Git-Url: https://git.grml.org/?a=blobdiff_plain;ds=sidebyside;f=grml2usb;h=92c2cbfd10972acc70c4a86eba0d44005102444b;hb=411daf1e3e9fcbb9c4e4588a9fbe92513efb1ed1;hp=eafee4b76992772a9e7796b2f06418e7015c6057;hpb=d26c252ab511ba9067c581e227f610095d2d45b1;p=grml2usb.git diff --git a/grml2usb b/grml2usb index eafee4b..92c2cbf 100755 --- a/grml2usb +++ b/grml2usb @@ -40,12 +40,13 @@ GRML_FLAVOURS = set() # which flavours are being installed? 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 +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+)$') RE_LOOP_DEVICE = re.compile(r'/dev/loop\d+$') + def syslinux_warning(option, opt, value, opt_parser): """A helper function for printing a warning about deprecated option """ @@ -132,6 +133,7 @@ class CriticalException(Exception): @Exception: message""" pass + class VerifyException(Exception): """Throw critical exception if there is an fatal error when verifying something. @@ -164,14 +166,17 @@ def cleanup(): proc = subprocess.Popen(["sync"]) proc.wait() - try: - for device in MOUNTED: + for device in MOUNTED: + try: unmount(device, "") - for tmpfile in TMPFILES: + except RuntimeError: + logging.debug('RuntimeError while umount %s, ignoring' % device) + for tmpfile in TMPFILES: + try: os.unlink(tmpfile) - # ignore: RuntimeError: Set changed size during iteration - except RuntimeError: - logging.debug('caught exception RuntimeError, ignoring') + except RuntimeError: + msg = 'RuntimeError while removing temporary %s, ignoring' + logging.debug(msg % tmpfile) def register_tmpfile(path): @@ -287,7 +292,7 @@ def search_file(filename, search_path='/bin' + os.pathsep + '/usr/bin', lst_retu @cwd: current working directory """ - return os.path.exists(os.path.join(cwd, filename)) + return os.path.exists(os.path.join(cwd, filename)) for path in paths: current_dir = path @@ -801,8 +806,7 @@ def copy_system_files(grml_flavour, iso_mount, target): squashfs = search_file(grml_flavour + '.squashfs', iso_mount) if squashfs is None: logging.error("error locating squashfs file") - raise CriticalException("squashfs file not found" - ", please check that your iso is not corrupt") + raise CriticalException("squashfs file not found, please check that your iso is not corrupt") else: squashfs_target = target + '/live/' + grml_flavour + '/' execute(mkdir, squashfs_target) @@ -977,7 +981,7 @@ def build_loopbackcfg(target): logging.debug("Found source file" + sourcefile) os.path.isfile(ops) and f.write("source " + sourcefile + "\n") - f.write("source /boot/grub/adddons.cfg\n") + f.write("source /boot/grub/addons.cfg\n") f.write("source /boot/grub/footer.cfg\n") f.close() @@ -1474,7 +1478,15 @@ def install(image, device): iso_mountpoint = image remove_image_mountpoint = False if os.path.isdir(image): - logging.info("Using %s as install base", image) + if options.force or os.path.exists(os.path.join(image, 'live')): + logging.info("Using %s as install base", image) + else: + q = raw_input("%s does not look like a grml system. " + "Do you really want to use this image? y/N " % image) + if q.lower() == 'y': + logging.info("Using %s as install base", image) + else: + logging.info("Skipping install base %s", image) else: logging.info("Using ISO %s", image) iso_mountpoint = tempfile.mkdtemp(prefix="grml2usb", dir=os.path.abspath(options.tmpdir)) @@ -1788,7 +1800,7 @@ def main(): for flavour in GRML_FLAVOURS: logging.info("Note: you can boot flavour %s using '%s' on the commandline.", flavour, flavour) - # finally be politely :) + # finally be polite :) logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION) except Exception, error: