X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=grml-live;h=a4a1fa83ade60083beece15097c30eca910e767b;hb=ce2488fd462565431f378e96f4dee01b17c7ba9a;hp=a8f5eaae9c8a77e8f321f412faf87e6e7bbf5879;hpb=d09708b40e7d2d06a172da9c167348e2fa44558b;p=grml-live.git diff --git a/grml-live b/grml-live index a8f5eaa..a4a1fa8 100755 --- a/grml-live +++ b/grml-live @@ -4,7 +4,7 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2 or any later version. -# Latest change: Sun Nov 25 17:16:07 CET 2007 [mika] +# Latest change: Mon Nov 26 15:13:41 CET 2007 [mika] ################################################################################ # read configuration files, set some misc variables {{{ @@ -15,7 +15,7 @@ export LC_ALL=C # exit on any error: set -e -GRML_LIVE_VERSION='0.0.10' +GRML_LIVE_VERSION='0.0.11' CMDLINE="$0 $@" ISO_DATE="$(date +%Y-%m-%d)" @@ -68,6 +68,7 @@ bailout() { log "------------------------------------------------------------------------------" exit "$EXIT" } +# trap bailout 1 2 3 6 9 14 15 trap bailout 1 2 3 15 # }}} @@ -90,11 +91,18 @@ fi touch $LOGFILE chown root:adm $LOGFILE chmod 640 $LOGFILE -# clean/zero logfile: +# clean/zero grml-live logfile: if [ -n "$ZERO_LOGFILE" ] ; then echo -n > $LOGFILE fi +# clean/zero/remove old FAI directory: +if [ -n "$ZERO_FAI_LOGFILE" ] ; then + if [ -d /var/log/fai/"$HOSTNAME" ] ; then + rm -rf /var/log/fai/"$HOSTNAME"/"$(readlink /var/log/fai/"$HOSTNAME"/last)" + fi +fi + NFSROOT_CONF=/etc/grml/fai/make-fai-nfsroot.conf # }}} @@ -179,10 +187,11 @@ http://grml.org/bugs/ # command line parsing {{{ -while getopts "a:c:g:i:o:r:s:t:v:FhuV" opt; do +while getopts "a:C:c:g:i:o:r:s:t:v:FhuV" opt; do case "$opt" in a) ARCH="$OPTARG" ;; c) CLASSES="$OPTARG" ;; + C) CONFIG="$OPTARG" ;; g) GRML_NAME="$OPTARG" ;; i) ISO_NAME="$OPTARG" ;; o) OUTPUT="$OPTARG" @@ -218,6 +227,7 @@ if [ -z "$FORCE" ] ; then echo echo " FAI classes: $CLASSES" echo " main directory: $OUTPUT" + [ -n "$CONFIG" ] && echo " configuration: $CONFIG" [ -n "$CHROOT_OUTPUT" ] && echo " chroot target: $CHROOT_OUTPUT" [ -n "$BUILD_OUTPUT" ] && echo " build target: $BUILD_OUTPUT" [ -n "$ISO_OUTPUT" ] && echo " ISO target: $ISO_OUTPUT" @@ -241,6 +251,26 @@ if [ -z "$FORCE" ] ; then echo fi +# read local (non-packaged) configuration: +LOCAL_CONFIG=/etc/grml/grml-live.local +if [ -r "$LOCAL_CONFIG" ] ; then + log "Sourcing $LOCAL_CONFIG" + . $LOCAL_CONFIG +else + LOCAL_CONFIG='' +fi + +if [ -n "$CONFIG" ] ; then + if ! [ -f "$CONFIG" ] ; then + log "Sorry, $CONFIG could not be read. Exiting. [$(date)]" + eerror "Sorry, $CONFIG could not be read. Exiting." + bailout 1 + else + log "Sourcing $CONFIG" + . $CONFIG + fi +fi + start_seconds=$(cut -d . -f 1 /proc/uptime) log "------------------------------------------------------------------------------" log "Starting grml-live [${GRML_LIVE_VERSION}] run on $(date)" @@ -271,10 +301,15 @@ fi # does this suck? YES! if [ -n "$SUITE" ] ; then - sed -i "s/SUITE=.*/SUITE=\"$SUITE\"/" $LIVE_CONF - DIST="\|\ etch\ \|\ stable\ \|\ lenny\ \|\ testing\ \|\ sid\ \|\ unstable\ " - sed -i "s/\(deb .\+\)\([ \t]+\)$DIST\([ \t]+\)\(main \)/\1\2 $SUITE \3\4/" $LIVE_CONF + for file in "$LIVE_CONF" "$CONFIG" "$LOCAL_CONFIG" ; do + if [ -n "$file" ] ; then + sed -i "s/SUITE=.*/SUITE=\"$SUITE\"/" $LIVE_CONF + DIST="\|\ etch\ \|\ stable\ \|\ lenny\ \|\ testing\ \|\ sid\ \|\ unstable\ " + sed -i "s/\(deb .\+\)\([ \t]+\)$DIST\([ \t]+\)\(main \)/\1\2 $SUITE \3\4/" $file + fi + done + sed -i "s/\(deb .\+\)\([ \t]+\)$DIST\([ \t]+\)\(main \)/\1\2 $SUITE \3\4/" /etc/grml/fai/apt/sources.list # notice: activate grml-live pool only if we are building against unstable: if grep -qe unstable -qe sid /etc/grml/fai/apt/sources.list ; then @@ -286,7 +321,11 @@ if [ -n "$SUITE" ] ; then sed -i 's/.*grml-live.*/# removed grml-live repository/' /etc/grml/fai/apt/sources.list fi - sed -i "s|FAI_DEBOOTSTRAP=\"[a-z]* |FAI_DEBOOTSTRAP=\"$SUITE |" $LIVE_CONF + for file in "$LIVE_CONF" "$CONFIG" "$LOCAL_CONFIG" ; do + if [ -n "$file" ] ; then + sed -i "s|FAI_DEBOOTSTRAP=\"[a-z]* |FAI_DEBOOTSTRAP=\"$SUITE |" "$file" + fi + done sed -i "s|FAI_DEBOOTSTRAP=\"[a-z]* |FAI_DEBOOTSTRAP=\"$SUITE |" $NFSROOT_CONF fi @@ -322,14 +361,15 @@ if [ -d "$CHROOT_OUTPUT/bin" -a -z "$UPDATE" ] ; then ewarn "$CHROOT_OUTPUT exists already, skipping stage 'fai dirinstall'" ; eend 0 else mkdir -p "$CHROOT_OUTPUT" || bailout 5 "Problem with creating $CHROOT_OUTPUT for FAI" + if [ -n "${MIRROR_DIRECTORY}" ] ; then mkdir -p "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}" mount --bind "${MIRROR_DIRECTORY}" "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}" fi + log "Executed FAI command line:" log "fai $VERBOSE -C $GRML_FAI_CONFIG -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS" fai $VERBOSE -C "$GRML_FAI_CONFIG" -c"$CLASSES" -u "$HOSTNAME" $FAI_ACTION "$CHROOT_OUTPUT" $FAI_ARGS | tee -a $LOGFILE - echo "debug: $?" log "Setting /etc/grml_version to $GRML_NAME $VERSION Release Codename $RELEASENAME [$ISO_DATE]" echo "$GRML_NAME $VERSION Release Codename $RELEASENAME [$ISO_DATE]" > $CHROOT_OUTPUT/etc/grml_version @@ -491,6 +531,11 @@ if [ -f "$BUILD_OUTPUT"/live/grml.squashfs -a -z "$UPDATE" ] ; then ewarn "$BUILD_OUTPUT/live exists already, skipping stage 'squashfs'" ; eend 0 else [ -d "$BUILD_OUTPUT"/live ] || mkdir "$BUILD_OUTPUT"/live + # make sure we don't leave (even an empty) base.tgz: + [ -f "$CHROOT_OUTPUT/base.tgz" ] && rm -f "$CHROOT_OUTPUT/base.tgz" + + # execute squashfs: + log "mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend" mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend log "Finished execution of stage 'squashfs' [$(date)]" einfo "Finished execution of stage 'squashfs'" ; eend 0 @@ -518,6 +563,7 @@ else mkdir -p "$ISO_OUTPUT" || bailout 6 "Problem with creating $ISO_OUTPUT for stage 'iso build'" CURRENT_DIR=$(pwd) cd "$BUILD_OUTPUT" && + log "mkisofs -V grml $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 $VERSION" -publisher 'grml-live | grml.org' \ -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table \ -b $BOOT_FILE \