X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=grml-live;h=29d19f973e3d637d32c621b407acae7c490b5423;hb=0a249151a07fb36736c71b53b029eb0342385679;hp=5e081bab90036b4055b3f8db3ed59484cd930973;hpb=82345f34a6fd3441ce4c65483c056e078370d6f9;p=grml-live.git diff --git a/grml-live b/grml-live index 5e081ba..29d19f9 100755 --- a/grml-live +++ b/grml-live @@ -23,7 +23,7 @@ fi # exit on any error: set -e -GRML_LIVE_VERSION='0.9.18' +GRML_LIVE_VERSION='0.9.20' PN="$(basename $0)" CMDLINE="$0 $@" ISO_DATE="$(date +%Y-%m-%d)" @@ -230,11 +230,7 @@ while getopts "a:C:c:g:i:o:r:s:t:v:bBFuqVz" opt; do C) CONFIG="$OPTARG" ;; g) GRML_NAME="$OPTARG" ;; i) ISO_NAME="$OPTARG" ;; - o) OUTPUT="$OPTARG" - CHROOT_OUTPUT="$OUTPUT/grml_chroot" - BUILD_OUTPUT="$OUTPUT/grml_cd" - ISO_OUTPUT="$OUTPUT/grml_isos" - ;; + o) OUTPUT="$OPTARG" ;; q) SKIP_MKSQUASHFS=1 ;; r) RELEASENAME="$OPTARG" ;; s) SUITE="$OPTARG" ;; @@ -256,6 +252,11 @@ specify it on the command line using the -c option." [ -n "$OUTPUT" ] || bailout 1 "Error: \$OUTPUT unset, please set it in $LIVE_CONF or specify it on the command line using the -o option." +# set subdirectories according to $OUTPUT: +CHROOT_OUTPUT="$OUTPUT/grml_chroot" +BUILD_OUTPUT="$OUTPUT/grml_cd" +ISO_OUTPUT="$OUTPUT/grml_isos" + # trim characters that are known to cause problems inside $GRML_NAME; # for example isolinux does not like '-' inside the directory name [ -n "$GRML_NAME" ] && export SHORT_GRML_NAME="$(echo $GRML_NAME | tr -d ',./;\- ')" @@ -378,6 +379,15 @@ if [ -n "$SUITE" ] ; then # /usr/share/debootstrap/scripts/unstable does not exist, instead use 'sid': case $SUITE in unstable) SUITE='sid' ;; + # make sure that we *NEVER* write any broken suite name to sources.list, + # otherwise we won't be able to adjust it one next (correct) execution + stable) ;; + testing) ;; + etch) ;; + lenny) ;; + squeeze) ;; + sid) ;; + *) echo "Sorry, $SUITE is not a valid Debian suite, exiting.">&2; bailout 1 ;; esac DIST=" etch\| stable\| lenny\| squeeze\| testing\| sid\| unstable" @@ -562,7 +572,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then if [ -z "$NO_ADDONS" ] ; then if ! [ -d /usr/share/grml-live/templates/boot/addons/bsd4grml ] ; then - ewarn "Boot addons not found, skipping therefor. (Consider installing package grml-live-addons)" ; eend 0 + ewarn "Boot addons not found, skipping therefore. (Consider installing package grml-live-addons)" ; eend 0 else # copy only files so we can handle bsd4grml on its own for file in ${TEMPLATE_DIRECTORY}/boot/addons/* ; do @@ -625,6 +635,27 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then sed -i "s/%GRML_NAME_SQUASHFS%/$GRML_NAME_SQUASHFS/" "$BUILD_OUTPUT"/boot/isolinux/f4 sed -i "s/%GRML_NAME_SQUASHFS%/$GRML_NAME_SQUASHFS/" "$BUILD_OUTPUT"/boot/isolinux/f5 + # jump back to grub from bsd4grml: + if [ -e "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 ]; then + if [ -e "$BUILD_OUTPUT"/boot/grub/core.img ]; then + GRUB_VERSION=2 + else + GRUB_VERSION=1 + fi + if [ -e "$BUILD_OUTPUT"/boot/grub/stage2 ]; then + GRUB_LEGACY=stage2 + else + GRUB_LEGACY=stage2_eltorito + fi + + # why not ed(1)? + for file in "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 \ + "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.cfg; do + sed -i -e "s!%GRUB_VERSION%!$GRUB_VERSION!g" \ + -e "s!%GRUB_LEGACY%!$GRUB_LEGACY!g" "$file" + done + fi + # autostart for Windows: if [ -d "${TEMPLATE_DIRECTORY}/windows/autostart/" ] ; then cp ${TEMPLATE_DIRECTORY}/windows/autostart/* "$BUILD_OUTPUT"/ @@ -734,6 +765,18 @@ elif [ "$BOOT_METHOD" = "grub" ] ; then fi if [ -f "${ISO_OUTPUT}/${ISO_NAME}" -a -z "$UPDATE" -a -z "$BUILD_ONLY" -a -z "$BUILD_DIRTY" ] ; then + + # support mkisofs as well as genisoimage + if which mkisofs >/dev/null 2>&1; then + MKISOFS=mkisofs + elif which genisoimage >/dev/null 2>&1; then + MKISOFS=genisoimage + else + log "Sorry, neither mkisofs nor genisoimage available - can not create ISO." + eerror "Sorry, neither mkisofs nor genisoimage available - can not create ISO." ; eend 1 + bailout + fi + log "$ISO_OUTPUT exists already, skipping stage 'iso build'" ewarn "$ISO_OUTPUT exists already, skipping stage 'iso build'" ; eend 0 else @@ -741,8 +784,8 @@ else CURRENT_DIR=$(pwd) if cd "$BUILD_OUTPUT" ; then - log "mkisofs -V '${GRML_NAME} ${VERSION}' -publisher 'grml-live | grml.org' -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b $BOOT_FILE -o ${ISO_OUTPUT}/${ISO_NAME} ." - mkisofs -V "${GRML_NAME} ${VERSION}" -publisher 'grml-live | grml.org' \ + log "$MKISOFS -V '${GRML_NAME} ${VERSION}' -publisher 'grml-live | grml.org' -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b $BOOT_FILE -o ${ISO_OUTPUT}/${ISO_NAME} ." + $MKISOFS -V "${GRML_NAME} ${VERSION}" -publisher 'grml-live | grml.org' \ -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table \ -b $BOOT_FILE -no-pad \ -o "${ISO_OUTPUT}/${ISO_NAME}" . ; RC=$? @@ -776,7 +819,10 @@ else else log "Creating hybrid ISO file with manifold method" einfo "Creating hybrid ISO file with manifold method" - echo 1 63 | mksh /usr/share/grml-live/scripts/bootgrub.mksh | cat - boot/grub/core.img | dd conv=notrunc of="${ISO_OUTPUT}/${ISO_NAME}" conv=notrunc + echo 1 63 | \ + mksh /usr/share/grml-live/scripts/bootgrub.mksh -A -M 1 -p 0x83 -g $cyls:16:32 | \ + cat - boot/grub/core.img | \ + dd conv=notrunc of="${ISO_OUTPUT}/${ISO_NAME}" conv=notrunc 2>/dev/null eend $? fi fi