From: Ulrich Dangel Date: Fri, 23 Oct 2009 22:05:45 +0000 (+0200) Subject: Extended grml2iso to add default bootoptions and copy external files to X-Git-Tag: v0.9.14~1^2~3 X-Git-Url: http://git.grml.org/?p=grml2usb.git;a=commitdiff_plain;h=73803e492fb5547b10cfdcf02a3d261759deddd3 Extended grml2iso to add default bootoptions and copy external files to 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. --- diff --git a/grml2iso b/grml2iso index 1b2cfec..36f939a 100755 --- 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" {{{ @@ -30,7 +29,13 @@ 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 } # }}} @@ -39,9 +44,15 @@ [[ $# -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 @@ -50,11 +61,16 @@ [ -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)) # }}} @@ -84,7 +100,7 @@ # }}}} # execute grml2usb with all ISOs you'd like to install {{{ - $GRML2USB "$@" "$WRKDIR/cddir" + $GRML2USB "${GRML2USB_PARAMS}" "$@" "$WRKDIR/cddir" # }}} # move syslinux to isolinux {{{ @@ -95,6 +111,14 @@ 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 \ diff --git a/grml2iso.8.txt b/grml2iso.8.txt index eed39bb..b2414ce 100644 --- a/grml2iso.8.txt +++ b/grml2iso.8.txt @@ -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 *:: + *\-o *:: 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 *:: + +The content of the specified directory will be copied to the resulting +multiboot grml ISO. + + *\-b *:: + +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