Merge branch 'master' of ssh://git@git.grml.org/grml2usb
authorMichael Prokop <mika@grml.org>
Sat, 24 Oct 2009 12:27:07 +0000 (14:27 +0200)
committerMichael Prokop <mika@grml.org>
Sat, 24 Oct 2009 12:27:07 +0000 (14:27 +0200)
debian/changelog
grml2iso
grml2iso.8.txt
grml2usb

index 8deb48c..9f808b3 100644 (file)
@@ -2,15 +2,19 @@ grml2usb (0.9.14) UNRELEASED; urgency=low
 
   [ Ulrich Dangel ]
   * Do not use '-' in the directory name for the linux kernel to allow
+    creating iso image from generated directory layout.
   * Introduced --remove-bootoption in grml2usb to delete existing
-    default boot
+    default boot entries.
+  * Added -c option to grml2iso for copying the contents of specified
+    directory to the generated iso image.
+  * Added -b option to grml2iso for specifing additional default boot entries.
 
   [ Michael Prokop ]
   * Sync and add grml2usb-compat to grml2usb package. This simplifies
     installation as well as use for developers and users.
   * Drop unnecessary header line from grml2usb script.
 
- -- Michael Prokop <mika@grml.org>  Sat, 24 Oct 2009 11:50:49 +0200
+ -- Ulrich Dangel <mru@grml.org>  Sat, 24 Oct 2009 14:05:34 +0200
 
 grml2usb (0.9.13) unstable; urgency=low
 
index 1b2cfec..661ef86 100755 (executable)
--- a/grml2iso
+++ b/grml2iso
@@ -7,8 +7,7 @@
 # License:       This file is licensed under the GPL v2 or any later version.
 ################################################################################
 # TODO:
-# * support isolinux as bootloader on the ISO
-# * support setting grml2usb options (e.g. --bootoptions=...)
+# * support setting grml2usb options
 ################################################################################
 
 # define function getfilesize before "set -e" {{{
   set -e
 
   usage() {
-    echo >&2 "Usage: $0 -o target.iso source1.iso [source2.iso ...]"
+    echo >&2 "Usage: $0 [OPTIONS] -o target.iso source1.iso [source2.iso ...]"
+    echo >&2 "
+Options:
+     -b Boot Params    Additional boot parameters passed to grml2usb
+     -c Directory      Copy files from directory to generated iso
+     -f                Force overwrite of existing target.iso
+     -r BootParam      Remove specified boot params.
+                       Could be specfied multiple times.
+"
     [ -n "$1" ] && exit $1 || exit 1
   }
 # }}}
   [[ $# -gt 2 ]] || usage 1
 
   ISOFILE=''
-  while getopts ao: name; do
+  DIR=''
+  ADD_OPTS=''
+  FORCE=''
+  typeset -a REMOVE_OPTS
+  while getopts fb:c:o:r: name; do
     case $name in
       o)   ISOFILE="$OPTARG";;
+      b)   ADD_OPTS="--bootoption="$OPTARG"";;
+      c)   DIR="$OPTARG";;
+      f)   FORCE='true';;
+      r)   REMOVE_OPTS+=(--remove-bootoption="$OPTARG");;
       ?)   usage 2;;
     esac
   done
   [ -n "$ISOFILE" ] || usage 1
 
 # we don't to override any files by accident
-  if [ -e "$ISOFILE" ]; then
+  if [ -e "$ISOFILE" -a ! -n "$FORCE" ]; then
     echo "Error: target file $ISOFILE exists already." >&2
     exit 1
   fi
 
+  if [ ! -z "$DIR" -a ! -d "$DIR" ] ; then
+     echo "Error: specified parameter for -c is not a directory" >&2
+     exit 1
+  fi
+
   shift $(($OPTIND - 1))
 # }}}
 
 # }}}}
 
 # execute grml2usb with all ISOs you'd like to install {{{
-  $GRML2USB "$@" "$WRKDIR/cddir"
+  $GRML2USB "${REMOVE_OPTS[@]}" ${ADD_OPTS:+"$ADD_OPTS"} "$@" "$WRKDIR/cddir"
 # }}}
 
 # move syslinux to isolinux {{{
   echo "include hd.cfg" >> boot/isolinux/grmlmain.cfg
 # }}}
 
+# copy specified directory to cd {{{
+  if [ -n "$DIR" ] ; then
+     echo >&2 "Copying ${DIR} to generated iso"
+     rsync -a ${DIR}/ .
+  fi
+
+# }}}
+
 # generate the CD/DVD ISO {{{
   mkisofs -V 'grml-multiboot' -l -r -J -no-pad \
     -no-emul-boot -boot-load-size 4 -boot-info-table \
index eed39bb..24fbc2d 100644 (file)
@@ -30,12 +30,32 @@ WRKDIR specifies the work directory for creating the filesystem.
 The work directory needs at least as much free disk space as the sum
 of all specified ISOs.
 
-  *\--o <target.iso>*::
+  *\-o <target.iso>*::
 
 This option is mandatory and specifies where the resulting multiboot grml ISO
 should be placed. Note that (to avoid any possible data loss) grml2iso will exit
 if the specified target.iso exists already.
 
+  *\-c <directory>*::
+
+The content of the specified directory will be copied to the resulting
+multiboot grml ISO.
+
+  *\-b <boot params>*::
+
+Use specified default bootoptions as default.
+
+  *\-f *::
+
+Force the program to run and overwrite an existing iso image.
+
+  *\-r <boot param>*::
+
+Remove specified boot parameter from existing command line. Could be specified multiple times.
+
+
+
+
 Usage examples
 --------------
 
@@ -43,6 +63,14 @@ Usage examples
 
 Create multiboot ISO /tmp/grml.iso with grml_2009.05.iso and grml64_2009.05.iso.
 
+ # grml2iso -b 'lang=de ssh=passwd' -c /tmp/grml-content -o /srv/grml.iso /srv/grml/grml_2009.10.iso
+
+Create a new iso with additional boot parameters and copy the content from /tmp/grml-content to the generated iso image.
+
+  # grml2iso -r quiet -r vga=791 -o /srv/grml.iso /srv/grml-small_2009.10.iso
+
+Create a new iso and remove existing boot parameters quiet and vga=791.
+
   # GRML2USB=/srv/git/grml2usb grml2iso -o /srv/grml.iso /srv/grml/grml_2009.05.iso /srv/grml/grml64-medium_2009.05.iso
 
 Create multiboot ISO /srv/grml.iso with grml_2009.05.iso and
index 34ea78a..fee2026 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -1254,11 +1254,14 @@ def modify_grub_config(filename):
     if options.removeoption:
         regexe = []
         for regex in options.removeoption:
-            regexe.append(re.compile(r'(.*/boot/release/.*linux26.*)(%s)(.*)' % regex))
+            regexe.append(re.compile(r'%s' % regex))
+
+        option_re = re.compile(r'(.*/boot/release/.*linux26.*)')
 
         for line in fileinput.input(filename, inplace=1):
-            for regex in regexe:
-                line = regex.sub( r'\1 \3', line)
+            if regexe and option_re.search(line):
+                for regex in regexe:
+                    line = regex.sub(' ', line)
 
             sys.stdout.write(line)
 
@@ -1439,9 +1442,12 @@ def adjust_syslinux_bootoptions(src, flavour):
         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'(.*/boot/release/.*/initrd.gz.*)(%s)(.*)' % regex))
+            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)
@@ -1449,8 +1455,9 @@ def adjust_syslinux_bootoptions(src, flavour):
         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)
+        if option_re and option_re.search(line):
+            for regex in regexe:
+                line = regex.sub(' ', line)
         sys.stdout.write(line)
     fileinput.close()