Extended grml2iso to add default bootoptions and copy external files to
authorUlrich Dangel <uli@spamt.net>
Fri, 23 Oct 2009 22:05:45 +0000 (00:05 +0200)
committerUlrich Dangel <uli@spamt.net>
Sat, 24 Oct 2009 12:18:43 +0000 (14:18 +0200)
generated iso.

Added -b option for specifying default boot options.
Added -c option for copying the contents of the specified directory to the
generated iso image.

Added -f flag to grml2iso forcing overwrite of existing iso image.

Adjusted documentation of grml2iso.

grml2iso
grml2iso.8.txt

index 1b2cfec..36f939a 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
+"
     [ -n "$1" ] && exit $1 || exit 1
   }
 # }}}
   [[ $# -gt 2 ]] || usage 1
 
   ISOFILE=''
-  while getopts ao: name; do
+  DIR=''
+  GRML2USB_PARAMS=''
+  FORCE=''
+  while getopts fb:c:o: name; do
     case $name in
       o)   ISOFILE="$OPTARG";;
+      b)   GRML2USB_PARAMS='--bootoptions='"${OPTARG}";;
+      c)   DIR="$OPTARG";;
+      f)   FORCE='true';;
       ?)   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 "${GRML2USB_PARAMS}" "$@" "$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..b2414ce 100644 (file)
@@ -30,12 +30,27 @@ 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.
+
+
+
 Usage examples
 --------------
 
@@ -43,6 +58,10 @@ 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.
+
   # 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