From: Michael Prokop Date: Sat, 24 Oct 2009 12:27:07 +0000 (+0200) Subject: Merge branch 'master' of ssh://git@git.grml.org/grml2usb X-Git-Tag: v0.9.14~1 X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=commitdiff_plain;h=863f75014eac9dc7ba1bc5711080e9ded5602b93;hp=4ad3f720d7ebe6040f3cc5129ec11d23a2b640ba Merge branch 'master' of ssh://git@git.grml.org/grml2usb --- diff --git a/debian/changelog b/debian/changelog index 8deb48c..9f808b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Sat, 24 Oct 2009 11:50:49 +0200 + -- Ulrich Dangel Sat, 24 Oct 2009 14:05:34 +0200 grml2usb (0.9.13) unstable; urgency=low diff --git a/grml2iso b/grml2iso index 1b2cfec..661ef86 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,15 @@ 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 } # }}} @@ -39,9 +46,17 @@ [[ $# -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 @@ -50,11 +65,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 +104,7 @@ # }}}} # 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 {{{ @@ -95,6 +115,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..24fbc2d 100644 --- a/grml2iso.8.txt +++ b/grml2iso.8.txt @@ -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 *:: + *\-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. + + *\-r *:: + +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 diff --git a/grml2usb b/grml2usb index 34ea78a..fee2026 100755 --- 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()