X-Git-Url: http://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=7bb2670ce17c72f3defa9b65806d2eaf7e4cc15c;hp=bd4752c67759f4865b034a3a6bf8229ec2fdae79;hb=e1ad166158497901dbbab89ded0cfcf8ebddb119;hpb=35d64cfacc77f59024ee1cfda8c65aa71e96cc21 diff --git a/grml2usb b/grml2usb index bd4752c..7bb2670 100755 --- a/grml2usb +++ b/grml2usb @@ -7,7 +7,7 @@ grml2usb This script installs a grml system (either a running system or ISO[s]) to a USB device -:copyright: (c) 2009 by Michael Prokop +:copyright: (c) 2009, 2010, 2011 by Michael Prokop :license: GPL v2 or any later version :bugreports: http://grml.org/bugs/ @@ -22,7 +22,7 @@ import uuid import struct # global variables -PROG_VERSION = "0.9.29~git" +PROG_VERSION = "0.9.31" MOUNTED = set() # register mountpoints TMPFILES = set() # register tmpfiles DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg @@ -60,7 +60,7 @@ Run %prog --help for usage hints, further information via: man grml2usb" # pylint: disable-msg=W0603 parser = OptionParser(usage=USAGE) parser.add_option("--bootoptions", dest="bootoptions", - action="store", type="string", + action="append", type="string", help="use specified bootoptions as default") parser.add_option("--bootloader-only", dest="bootloaderonly", action="store_true", help="do not copy files but just install a bootloader") @@ -324,7 +324,7 @@ if loadfont /boot/grub/ascii.pf2 ; then set gfxmode=640x480 insmod gfxterm insmod vbe - if terminal_output.gfxterm ; then true ; else + if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm @@ -1102,7 +1102,8 @@ def copy_system_files(grml_flavour, iso_mount, target): squashfs = search_file(grml_flavour + '.squashfs', iso_mount) if squashfs is None: - logging.critical("Fatal: squashfs file not found") + logging.critical("Fatal: squashfs file not found" + ", please check that your iso is not corrupt") raise CriticalException("error locating squashfs file") else: squashfs_target = target + '/live/' + grml_flavour + '/' @@ -1204,7 +1205,7 @@ def copy_grml_files(iso_mount, target): for myfile in copy_files: grml_file = search_file(myfile, iso_mount) if grml_file is None: - logging.warn("Warning: myfile %s could not be found - can not install it", myfile) + logging.warn("Warning: file %s could not be found - can not install it", myfile) else: exec_rsync(grml_file, grml_target + myfile) @@ -1214,7 +1215,7 @@ def copy_grml_files(iso_mount, target): for myfile in 'index.html', 'style.css': grml_file = search_file(myfile, iso_mount) if grml_file is None: - logging.warn("Warning: myfile %s could not be found - can not install it") + logging.warn("Warning: file %s could not be found - can not install it", myfile) else: exec_rsync(grml_file, grml_web_target + myfile) @@ -1224,21 +1225,23 @@ def copy_grml_files(iso_mount, target): for myfile in 'button.png', 'favicon.png', 'linux.jpg', 'logo.png': grml_file = search_file(myfile, iso_mount) if grml_file is None: - logging.warn("Warning: myfile %s could not be found - can not install it") + logging.warn("Warning: file %s could not be found - can not install it", myfile) else: exec_rsync(grml_file, grml_webimg_target + myfile) -def handle_addon_copy(filename, dst, iso_mount): +def handle_addon_copy(filename, dst, iso_mount, ignore_errors=False): """handle copy of optional addons @filename: filename of the addon @dst: destination directory @iso_mount: location of the iso mount + @ignore_errors: don't report missing files """ file_location = search_file(filename, iso_mount) if file_location is None: - logging.warn("Warning: %s not found (that's fine if you don't need it)", filename) + if not ignore_errors: + logging.warn("Warning: %s not found (that's fine if you don't need it)", filename) else: exec_rsync(file_location, dst) @@ -1278,9 +1281,11 @@ def copy_addons(iso_mount, target): # memtest86+ image handle_addon_copy('memtest', addons, iso_mount) - # gpxe.lkrn - handle_addon_copy('gpxe.lkrn', addons, iso_mount) + # gpxe.lkrn: got replaced by ipxe + handle_addon_copy('gpxe.lkrn', addons, iso_mount, ignore_errors=True) + # ipxe.lkrn + handle_addon_copy('ipxe.lkrn', addons, iso_mount) def glob_and_copy(filepattern, dst): """Glob on specified filepattern and copy the result to dst @@ -1592,10 +1597,10 @@ def get_bootoptions(grml_flavour): @grml_flavour: name of the grml_flavour """ # do NOT write "None" in kernel cmdline - if options.bootoptions is None: + if not options.bootoptions: bootopt = "" else: - bootopt = options.bootoptions + bootopt = " ".join(options.bootoptions) bootopt = bootopt.replace("%flavour", grml_flavour) return bootopt @@ -1879,7 +1884,7 @@ def install(image, device): register_tmpfile(iso_mountpoint) remove_image_mountpoint = True try: - mount(image, iso_mountpoint, ["-o", "loop", "-t", "iso9660"]) + mount(image, iso_mountpoint, ["-o", "loop,ro", "-t", "iso9660"]) except CriticalException, error: logging.critical("Fatal: %s", error) sys.exit(1) @@ -1922,6 +1927,8 @@ def install_grml(mountpoint, device): try: grml_flavours = identify_grml_flavour(mountpoint) for flavour in set(grml_flavours): + if not flavour: + logging.warning("No valid flavour found, please check your iso") logging.info("Identified grml flavour \"%s\".", flavour) install_iso_files(flavour, mountpoint, device, device_mountpoint) GRML_FLAVOURS.add(flavour)