Introduced --remove-bootoption in grml2usb to delete existing default boot
authorUlrich Dangel <uli@spamt.net>
Sat, 24 Oct 2009 00:14:38 +0000 (02:14 +0200)
committerUlrich Dangel <uli@spamt.net>
Sat, 24 Oct 2009 00:25:35 +0000 (02:25 +0200)
entrys.

Updated manpage.

grml2usb
grml2usb.8.txt

index ded9382..0ea7e29 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+       #include <stdlib.h>
 # -*- coding: utf-8 -*-
 """
 grml2usb
@@ -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",
@@ -1248,6 +1251,20 @@ 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'(.*/boot/release/.*linux26.*)(%s)(.*)' % regex))
+
+        for line in fileinput.input(filename, inplace=1):
+            for regex in regexe:
+                line = regex.sub( r'\1 \3', 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 +1303,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,9 +1362,11 @@ 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
+    """Main handler for generati3g grub (v1 and v2) configuration
 
     @grml_flavour: name of grml flavour the configuration should be generated for
     @device: device/partition where grub should be installed to
@@ -1418,12 +1439,19 @@ def adjust_syslinux_bootoptions(src, flavour):
     else:
         bootopt = options.bootoptions
 
+    regexe = []
+    if options.removeoption:
+        for regex in options.removeoption:
+            regexe.append(re.compile(r'(.*/boot/release/.*/initrd.gz.*)(%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)
+        for regex in regexe:
+            line = regex.sub( r'\1 \3', line)
         sys.stdout.write(line)
     fileinput.close()
 
index 61b97c2..9696f24 100644 (file)
@@ -127,6 +127,11 @@ Do not output anything but just errors on console.
 
 Do not install /boot/addons/ files (like dos, grub, memdisk,...).
 
+  *\--remove-bootoption=...*::
+
+Remove specified bootoption (could be a regex) from existing boot options. Use
+multiple entries for removing different bootoptions at once.
+
   *\--skip-grub-config*::
 
 Skip generation of grub configuration files. By default the configuration
@@ -630,6 +635,11 @@ file instead of the one provided by the ISO.
 Install specified ISO on device /dev/sdX1 and use "lang=de ssh=mysecret" as
 default bootoptions.
 
+
+  # grml2usb --remove-bootoption="vga=791" --remove-bootoption="quiet" grml_2009.05.iso /dev/sdX1
+
+Install specified ISO on device /dev/sdX1 remove vga=791 and quiet from existing bootoptions.
+
 [[ressources]]
 Online Ressources
 -----------------