X-Git-Url: http://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=6a2190336afa23a224a828ecca108680951183f2;hp=ded938269a80e8daafdf0951da92427ad1690a79;hb=b80799ee34a0ebf718836b65820ab549a58779db;hpb=5b8c1e9fd23ec3ceaa27e42016e4a3e40a15bec3 diff --git a/grml2usb b/grml2usb index ded9382..6a21903 100755 --- a/grml2usb +++ b/grml2usb @@ -17,9 +17,10 @@ from optparse import OptionParser from inspect import isroutine, isclass import datetime, logging, os, re, subprocess, sys, tempfile, time, os.path import fileinput +import glob # global variables -PROG_VERSION = "0.9.13" +PROG_VERSION = "0.9.14" MOUNTED = set() # register mountpoints TMPFILES = set() # register tmpfiles DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg @@ -60,6 +61,8 @@ parser.add_option("--mbr-menu", dest="mbrmenu", action="store_true", help="enable interactive boot menu in MBR") parser.add_option("--quiet", dest="quiet", action="store_true", help="do not output anything but just errors on console") +parser.add_option("--remove-bootoption", dest="removeoption", action="append", + help="regex for removing existing bootoptions") parser.add_option("--skip-addons", dest="skipaddons", action="store_true", help="do not install /boot/addons/ files") parser.add_option("--skip-grub-config", dest="skipgrubconfig", action="store_true", @@ -1145,11 +1148,12 @@ def copy_bootloader_files(iso_mount, target): 'isoprompt.cfg', 'options.cfg', \ 'prompt.cfg', 'vesamenu.c32', 'vesamenu.cfg', 'grml.png': path = search_file(filename, iso_mount + '/boot/isolinux/') - if not path: - print filename - continue exec_rsync(path, syslinux_target + filename) + # copy the addons_*.cfg file to the new syslinux directory + for filename in glob.glob(iso_mount + '/boot/isolinux/' + 'addon_*.cfg'): + exec_rsync(filename, syslinux_target) + path = search_file('hidden.cfg', iso_mount + '/boot/isolinux/') exec_rsync(path, syslinux_target + "new_" + 'hidden.cfg') @@ -1248,6 +1252,23 @@ def identify_grml_flavour(mountpath): return grml_flavour +def modify_grub_config(filename): + if options.removeoption: + regexe = [] + for regex in options.removeoption: + regexe.append(re.compile(r'%s' % regex)) + + option_re = re.compile(r'(.*/boot/release/.*linux26.*)') + + for line in fileinput.input(filename, inplace=1): + if regexe and option_re.search(line): + for regex in regexe: + line = regex.sub(' ', line) + + sys.stdout.write(line) + + fileinput.close() + def handle_grub1_config(grml_flavour, install_partition, grub_target, bootopt): """Main handler for generating grub1 configuration @@ -1286,6 +1307,8 @@ def handle_grub1_config(grml_flavour, install_partition, grub_target, bootopt): grub1_config_file.write(generate_flavour_specific_grub1_config(grml_flavour, install_partition, bootopt)) grub1_config_file.close() + modify_grub_config(grub1_cfg) + # make sure grub.conf isn't a symlink but a plain file instead, # otherwise it will break on FAT16 filesystems # this works around grub-install of (at least) Fedora 10 @@ -1343,6 +1366,8 @@ def handle_grub2_config(grml_flavour, grub_target, bootopt): grub2_config_file.write(generate_flavour_specific_grub2_config(grml_flavour, bootopt)) grub2_config_file.close() + modify_grub_config(grub2_cfg) + def handle_grub_config(grml_flavour, device, target): """Main handler for generating grub (v1 and v2) configuration @@ -1418,12 +1443,23 @@ def adjust_syslinux_bootoptions(src, flavour): else: bootopt = options.bootoptions + regexe = [] + option_re = None + if options.removeoption: + option_re = re.compile(r'/boot/release/.*/initrd.gz') + + for regex in options.removeoption: + regexe.append(re.compile(r'%s' % regex)) + for line in fileinput.input(src, inplace=1): line = boot_re.sub(r'/boot/release/%s/\2 ' % flavour.replace('-', ''), line) # line = flavour_re.sub(r'\1 %s-\2' % flavour, line) line = default_re.sub(r'%s-\1' % flavour, line) line = append_re.sub(r'\1 live-media-path=/live/%s/ ' % flavour, line) line = append_re.sub(r'\1 boot=live %s ' % bootopt, line) + if option_re and option_re.search(line): + for regex in regexe: + line = regex.sub(' ', line) sys.stdout.write(line) fileinput.close() @@ -1863,6 +1899,7 @@ def main(): # finally be politely :) logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION) + if __name__ == "__main__": try: main()