set -e
# global variables
-GRML_LIVE_VERSION='0.9.22'
+GRML_LIVE_VERSION='0.9.26-pre1'
PN="$(basename $0)"
CMDLINE="$0 $@"
ISO_DATE="$(date +%Y-%m-%d)"
-c <classe[s]> classes to be used for building the ISO via FAI
-C <configfile> configuration file for grml-live
-F force execution without prompting
- -g <grml_name>] set the grml flavour name
+ -g <grml_name> set the grml flavour name
-h display short usage information and exit
-i <iso_name> name of ISO
-I <src_directory> directory which provides files that should become
-n skip generation of ISO
-o <output_directory> main output directory of the build process
-q skip mksquashfs
- -r <release_name< release name
+ -r <release_name> release name
-s <suite> Debian suite; values: etch, lenny, squeeze, sid
-t <template_directory> place of the templates
-u update existing chroot instead of rebuilding it from scratch
[ -n "$OUTPUT" ] || OUTPUT='/grml/grml-live'
[ -n "$RELEASENAME" ] || RELEASENAME='grml-live rocks'
[ -n "$SQUASHFS_EXCLUDES_FILE " ] || SQUASHFS_EXCLUDES_FILE='/etc/grml/fai/squashfs-excludes'
-[ -n "$SUITE" ] || SUITE='stable'
+[ -n "$SUITE" ] || SUITE='lenny'
[ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates'
[ -n "$USERNAME" ] || USERNAME='grml'
[ -n "$VERSION" ] || VERSION='0.0.1'
# 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 ',./;\- ')"
+[ -n "$GRML_NAME" ] && export SHORT_NAME="$(echo $GRML_NAME | tr -d ',./;\- ')"
# export variables to have them available in fai scripts:
[ -n "$GRML_NAME" ] && export GRML_NAME="$GRML_NAME"
chmod 644 $CHROOT_OUTPUT/etc/grml_version
einfo "Rebuilding initramfs"
# make sure new /etc/grml_version reaches the initramfs:
- chroot $CHROOT_OUTPUT update-initramfs -u -t
+ # chroot $CHROOT_OUTPUT update-initramfs -u -t => might break when using kernel-package :(
+ chroot $CHROOT_OUTPUT update-initramfs -u -k all
eend $?
fi
einfo "Finished execution of stage 'fai dirinstall'"
fi
- einfo "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)."
- log "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)."
+ einfo "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)"
+ log "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)"
eend 0
fi
fi # BUILD_DIRTY?
else
# booting stuff:
[ -d "$BUILD_OUTPUT"/boot/isolinux ] || mkdir -p "$BUILD_OUTPUT"/boot/isolinux
- [ -d "$BUILD_OUTPUT"/boot/"${SHORT_GRML_NAME}" ] || mkdir -p "$BUILD_OUTPUT"/boot/"${SHORT_GRML_NAME}"
+ [ -d "$BUILD_OUTPUT"/boot/"${SHORT_NAME}" ] || mkdir -p "$BUILD_OUTPUT"/boot/"${SHORT_NAME}"
if [ -z "$NO_ADDONS" ] ; then
[ -d "$BUILD_OUTPUT"/boot/addons ] || mkdir -p "$BUILD_OUTPUT"/boot/addons
# during build, so check for the file:
INITRD="$(ls $CHROOT_OUTPUT/boot/initrd* 2>/dev/null| grep -v '.bak$' | sort -r | head -1)"
if [ -n "$INITRD" ] ; then
- cp $INITRD "$BUILD_OUTPUT"/boot/"${SHORT_GRML_NAME}"/initrd.gz
+ cp $INITRD "$BUILD_OUTPUT"/boot/"${SHORT_NAME}"/initrd.gz
find $CHROOT_OUTPUT/boot/ -name initrd\*.bak -exec rm {} \;
else
log "Error: No initrd found inside $CHROOT_OUTPUT/boot/ - Exiting"
KERNEL_IMAGE="$(ls $CHROOT_OUTPUT/boot/vmlinuz* 2>/dev/null | sort -r | head -1)"
if [ -n "$KERNEL_IMAGE" ] ; then
- cp "$KERNEL_IMAGE" "$BUILD_OUTPUT"/boot/"${SHORT_GRML_NAME}"/linux26
+ cp "$KERNEL_IMAGE" "$BUILD_OUTPUT"/boot/"${SHORT_NAME}"/linux26
else
log "Error: No kernel found inside $CHROOT_OUTPUT/boot/ - Exiting"
eerror "Error: No kernel found inside $CHROOT_OUTPUT/boot/ - Exiting" ; eend 1
bailout 8
fi
+ # *always* copy files to output directory so the variables
+ # get adjusted according to the build
cp ${TEMPLATE_DIRECTORY}/boot/isolinux/* "$BUILD_OUTPUT"/boot/isolinux/
if [ -n "$NO_ADDONS" ] ; then
RELEASE_INFO="$(extend_string_end 68 "$RELEASE_INFO")"
sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/GRML/grml-version
- sed -i "s/%DATE%/$ISO_DATE/" "$BUILD_OUTPUT"/GRML/grml-version
-
- sed -i "s/%RELEASE_INFO%/$RELEASE_INFO/" "$BUILD_OUTPUT"/boot/isolinux/boot.msg
- sed -i "s/%DATE%/$ISO_DATE/" "$BUILD_OUTPUT"/boot/isolinux/boot.msg
-
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/isolinux/isolinux.cfg
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/isolinux/syslinux.cfg
-
- sed -i "s/%RELEASE_INFO%/$RELEASE_INFO/" "$BUILD_OUTPUT"/boot/isolinux/boot-beep.msg
- sed -i "s/%DATE%/$ISO_DATE/" "$BUILD_OUTPUT"/boot/isolinux/boot-beep.msg
-
- sed -i "s/%VERSION%/$VERSION/" "$BUILD_OUTPUT"/boot/grub/menu.lst
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/grub/menu.lst
-
- sed -i "s/%VERSION%/$VERSION/" "$BUILD_OUTPUT"/boot/grub/grub.cfg
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/grub/grub.cfg
-
- if [ -r "${BUILD_OUTPUT}/boot/isolinux/${DISTRI_NAME}.cfg" ] ; then
- sed -i "s/%VERSION%/$VERSION/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%GRML_LONG_NAME%/$DISTRI_NAME/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%ARCH%/$ARCH/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- fi
-
- sed -i "s/%VERSION%/$VERSION/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%GRML_LONG_NAME%/$GRML_NAME/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%GRML_NAME%/$SHORT_GRML_NAME/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
- sed -i "s/%ARCH%/$ARCH/" "$BUILD_OUTPUT"/boot/isolinux/grml.cfg
-
- sed -i "s/%DISTRI_INFO%/$DISTRI_INFO/" "$BUILD_OUTPUT"/boot/isolinux/vesamenu.cfg
- sed -i "s/%DISTRI_SPLASH%/$DISTRI_SPLASH/" "$BUILD_OUTPUT"/boot/isolinux/vesamenu.cfg
+ sed -i "s/%DATE%/$ISO_DATE/" "$BUILD_OUTPUT"/GRML/grml-version
# make sure the squashfs filename is set accordingly:
- GRML_NAME_SQUASHFS="$GRML_NAME.squashfs"
- sed -i "s/%GRML_NAME_SQUASHFS%/$GRML_NAME_SQUASHFS/" "$BUILD_OUTPUT"/boot/isolinux/isolinux.cfg
- sed -i "s/%GRML_NAME_SQUASHFS%/$GRML_NAME_SQUASHFS/" "$BUILD_OUTPUT"/boot/isolinux/syslinux.cfg
- sed -i "s/%GRML_NAME_SQUASHFS%/$GRML_NAME_SQUASHFS/" "$BUILD_OUTPUT"/boot/grub/menu.lst
-
- GRML_NAME_SQUASHFS="$(cut_string 20 "$GRML_NAME_SQUASHFS")"
- GRML_NAME_SQUASHFS="$(extend_string_end 20 "$GRML_NAME_SQUASHFS")"
- 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
+ SQUASHFS_NAME="$GRML_NAME.squashfs"
+
+ # adjust all variables in the templates with the according distribution information
+ for file in "${BUILD_OUTPUT}"/boot/isolinux/*.cfg "${BUILD_OUTPUT}"/boot/isolinux/*.msg \
+ "${BUILD_OUTPUT}"/boot/grub/* ; do
+ sed -i "s/%ARCH%/$ARCH/g" "${file}"
+ sed -i "s/%DATE%/$ISO_DATE/g" "${file}"
+ sed -i "s/%DISTRI_INFO%/$DISTRI_INFO/g" "${file}"
+ sed -i "s/%DISTRI_NAME%/$DISTRI_NAME/g" "${file}"
+ sed -i "s/%DISTRI_SPLASH%/$DISTRI_SPLASH/g" "${file}"
+ sed -i "s/%GRML_NAME%/$GRML_NAME/g" "${file}"
+ sed -i "s/%SQUASHFS_NAME%/$SQUASHFS_NAME/g" "${file}"
+ sed -i "s/%RELEASE_INFO%/$RELEASE_INFO/g" "${file}"
+ sed -i "s/%SHORT_NAME%/$SHORT_NAME/g" "${file}"
+ sed -i "s/%VERSION%/$VERSION/g" "${file}"
+ done
+
+ # adjust bootsplash accordingly but make sure the string has the according lenght
+ SQUASHFS_NAME="$(cut_string 20 "$SQUASHFS_NAME")"
+ SQUASHFS_NAME="$(extend_string_end 20 "$SQUASHFS_NAME")"
+ sed -i "s/%SQUASHFS_NAME%/$SQUASHFS_NAME/" "$BUILD_OUTPUT"/boot/isolinux/f4
+ sed -i "s/%SQUASHFS_NAME%/$SQUASHFS_NAME/" "$BUILD_OUTPUT"/boot/isolinux/f5
if ! [ -r "${BUILD_OUTPUT}/boot/isolinux/${DISTRI_NAME}.cfg" ] || [ "$DISTRI_NAME" = "grml" ] ; then
- log "including grml.cfg in ${BUILD_OUTPUT}/boot/isolinux/distri.cfg"
- echo "include grml.cfg" > "${BUILD_OUTPUT}/boot/isolinux/distri.cfg"
- [ -n "$NO_ADDONS" ] || echo "include addons.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/distri.cfg"
+ log "including grmlmain.cfg in ${BUILD_OUTPUT}/boot/isolinux/distri.cfg"
+ echo "include grmlmain.cfg" > "${BUILD_OUTPUT}/boot/isolinux/distri.cfg"
+ echo "include default.cfg" > "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ echo "include menuoptions.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ echo "include grml.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ echo "include options.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ if [ ! -n "$NO_ADDONS" ] ; then
+ echo "include addons.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ fi
+ echo "include isoprompt.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ echo "include hd.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
+ echo "include hidden.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/grmlmain.cfg"
else # assume we are building a custom distribution:
log "File ${BUILD_OUTPUT}/boot/isolinux/${DISTRI_NAME}.cfg found, using it."
einfo "File ${BUILD_OUTPUT}/boot/isolinux/${DISTRI_NAME}.cfg found, using it."
md5sum ${file}.exe > ${file}.exe.md5
done )
fi
+
+ log "Finished execution of stage 'WINDOWS_BINARIES' [$(date)]"
+ einfo "Finished execution of stage 'WINDOWS_BINARIES'" ; eend 0
fi
- log "Finished execution of stage 'WINDOWS_BINARIES' [$(date)]"
- einfo "Finished execution of stage 'WINDOWS_BINARIES'" ; eend 0
fi
FORCE_ISO_REBUILD=true
;;
esac
fi
+
+ # if we still want to use mksquashfs-lzma then let's choose
+ # blocksize 256k as this gives best result with regards to time + comopression
+ [[ "$SQUASHFS_BINARY" == "mksquashfs-lzma" ]] && SQUASHFS_OPTIONS="-b 256k -lzma"
fi
fi
# make sure to drop the -nolzma option if it's not available:
if echo "$SQUASHFS_OPTIONS" | grep -q -- "-nolzma" ; then
if ! $SQUASHFS_BINARY --help 2>&1 | grep -q -- '-nolzma' ; then
- log "$SQUASHFS_BINARY does NOT support the nolzma option, dropping it and using default mode."
- ewarn "$SQUASHFS_BINARY does NOT support the nolzma option, dropping it and using default mode."
+ log "The $SQUASHFS_BINARY binary does NOT support the nolzma option, dropping it and using default mode."
+ ewarn "The $SQUASHFS_BINARY binary does NOT support the nolzma option, dropping it and using default mode."
SQUASHFS_OPTIONS="$(echo $SQUASHFS_OPTIONS | sed 's/-nolzma//g')"
eend 0
fi
# make sure to drop the -lzma option if it's not available:
if echo "$SQUASHFS_OPTIONS" | grep -q -- "-lzma" ; then
if ! $SQUASHFS_BINARY --help 2>&1 | grep -q -- '-lzma' ; then
- log "$SQUASHFS_BINARY does NOT support the lzma option, dropping it and using default mode."
- ewarn "$SQUASHFS_BINARY does NOT support the lzma option, dropping it and using default mode."
+ log "The $SQUASHFS_BINARY binary does NOT support the lzma option, dropping it and using default mode."
+ ewarn "The $SQUASHFS_BINARY binary does NOT support the lzma option, dropping it and using default mode."
SQUASHFS_OPTIONS="$(echo $SQUASHFS_OPTIONS | sed 's/-lzma//g')"
eend 0
fi
else
mkdir -p "$ISO_OUTPUT" || bailout 6 "Problem with creating $ISO_OUTPUT for stage 'iso build'"
- if $FORCE_ISO_REBUILD ; then
+ if $FORCE_ISO_REBUILD && ! [ -f "${ISO_OUTPUT}/${ISO_NAME}" ] ; then
log "Forcing rebuild of ISO because files on ISO have been modified."
einfo "Forcing rebuild of ISO because files on ISO have been modified."
fi