X-Git-Url: http://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=05d3b38aa18c4cddbd52e25f8f20b341ad1611df;hp=06a8f8a013f8fdaa0b8f260994817c0fa6210273;hb=52eae2e4196e4e79eba9ad24c80765d4e5e120df;hpb=8cf11c36489db9467a234816a1aeb6d2e9cc6342 diff --git a/grml2usb b/grml2usb index 06a8f8a..05d3b38 100755 --- a/grml2usb +++ b/grml2usb @@ -20,7 +20,7 @@ import fileinput import glob # global variables -PROG_VERSION = "0.9.15" +PROG_VERSION = "0.9.17" MOUNTED = set() # register mountpoints TMPFILES = set() # register tmpfiles DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg @@ -1196,6 +1196,15 @@ def copy_bootloader_files(iso_mount, target): if os.path.isfile("/usr/share/grub/ascii.pf2"): exec_rsync('/usr/share/grub/ascii.pf2', grub_target + 'ascii.pf2') + # always copy grub content as it might be useful + for file in glob.glob(iso_mount + '/boot/grub/*.mod'): + exec_rsync(file, grub_target) + + for file in glob.glob(iso_mount + '/boot/grub/*.img'): + exec_rsync(file, grub_target) + + for file in glob.glob(iso_mount + '/boot/grub/stage*'): + exec_rsync(file, grub_target) def install_iso_files(grml_flavour, iso_mount, device, target): """Copy files from ISO to given target @@ -1211,6 +1220,8 @@ def install_iso_files(grml_flavour, iso_mount, device, target): # * catch "install: .. No space left on device" & CO if options.dryrun: + global GRML_DEFAULT + GRML_DEFAULT = grml_flavour return 0 elif not options.bootloaderonly: logging.info("Copying files. This might take a while....") @@ -1222,8 +1233,8 @@ def install_iso_files(grml_flavour, iso_mount, device, target): sys.exit(1) if not options.skipaddons: - if grml_flavour.endswith('-small'): - logging.info("Note: grml-small doesn't provide any addons, not installing them therefore.") + if not search_file('addons', iso_mount): + logging.info("Could not find addons, therefore not installing.") else: copy_addons(iso_mount, target) @@ -1483,10 +1494,10 @@ def adjust_syslinux_bootoptions(src, flavour): sys.stdout.write(line) fileinput.close() -def adjust_labels(src, flavour): +def adjust_labels(src, replacement): label_re = re.compile("^(\s*label\s*) ([a-zA-Z0-9_-]+)", re.I) for line in fileinput.input(src, inplace=1): - line = label_re.sub(r'\1 %s-\2' % flavour, line) + line = label_re.sub(replacement, line) sys.stdout.write(line) fileinput.close() @@ -1567,8 +1578,8 @@ def handle_syslinux_config(grml_flavour, target): new_hidden = "%s_hidden.cfg" % (flavour_filename) new_hidden_file = "%s/%s" % (syslinux_target, new_hidden) os.rename(filename, new_hidden_file) - adjust_labels(new_hidden_file, flavour_filename) - adjust_syslinux_bootoptions(new_hidden_file, flavour_filename) + adjust_labels(new_hidden_file, r'\1 %s-\2' % grml_flavour) + adjust_syslinux_bootoptions(new_hidden_file, grml_flavour) entry = 'include %s\n' % new_hidden add_entry_if_not_present("%s/hiddens.cfg" % syslinux_target, entry) @@ -1579,7 +1590,16 @@ def handle_syslinux_config(grml_flavour, target): defaults_file = '%s/defaults.cfg' % syslinux_target if os.path.isfile(defaults_file): - remove_default_entry('%s/%s_default.cfg' % (syslinux_target, flavour_filename)) + new_default_with_path = "%s/%s" % (syslinux_target, new_default) + new_grml_cfg = "%s/%s_grml.cfg" % ( syslinux_target, flavour_filename) + + # remove default menu entry in menu + remove_default_entry(new_default_with_path) + + # adjust all labels for additional isos + adjust_labels(new_default_with_path, r'\1 %s' % grml_flavour) + adjust_labels(new_grml_cfg, r'\1 %s-\2' % grml_flavour) + add_entry_if_not_present("%s/defaults.cfg" % syslinux_target, entry) @@ -1874,6 +1894,10 @@ def main(): if options.dryrun: logging.info("Running in simulation mode as requested via option dry-run.") + if options.grubmbr and not options.grub: + logging.critical("Error: --grub-mbr requires --grub option.") + sys.exit(1) + # specified arguments device = args[len(args) - 1] isos = args[0:len(args) - 1]