-U <username> arrange output to be owned by specified username
-v <version_number> specify version number of the release
-V increase verbosity in the build process
+ -w <date> wayback machine, build system using Debian archives
+ from specified date
-z use ZLIB instead of LZMA/XZ compression
Usage examples:
# This is because:
# * We assume that the chroot always has a "good" version of
# the file. Also it makes sources handling easier.
-# * On unstable, we Recommend the Debian packages containing
+# * On unstable, we recommend the Debian packages containing
# these files. The user can override them by putting his
# "better" version into the chroot.
-# * On stable, the Debian packages are probably not available,
-# or outdated, so we look in TEMPLATE_DIRECTORY/compat first, where
-# our grml-live-compat package installs current file versions.
+# * With older releases the Debian packages are probably
+# not available, so we look in TEMPLATE_DIRECTORY/compat,
+# where a (custom) package might install current file versions.
copy_addon_file() {
DEST="${BUILD_OUTPUT}/boot/$3"
if [ ! -d "${DEST}/" ]; then
return $?
fi
if [ -e "${TEMPLATE_DIRECTORY}/compat/$3/$1" ]; then
- log "Copying $1 from grml-live-compat"
+ log "Copying $1 from ${TEMPLATE_DIRECTORY}/compat"
cp "${TEMPLATE_DIRECTORY}/compat/$3/$1" "${DEST}/"
return $?
fi
# }}}
# command line parsing {{{
-while getopts "a:C:c:d:D:e:g:i:I:o:r:s:S:t:U:v:AbBFhnNqQuVz" opt; do
+while getopts "a:C:c:d:D:e:g:i:I:o:r:s:S:t:U:v:w:AbBFhnNqQuVz" opt; do
case "$opt" in
a) ARCH="$OPTARG" ;;
A) CLEAN_ARTIFACTS=1 ;;
u) UPDATE=1 ;;
U) CHOWN_USER="$OPTARG" ;;
V) VERBOSE="-v" ;;
+ w) export WAYBACK_DATE="$OPTARG" ;;
z) SQUASHFS_ZLIB=1 ;;
?) echo "invalid option -$OPTARG" >&2; usage; bailout 1 ;;
esac
# generate nfsroot configuration for FAI on the fly
if [ -z "$FAI_DEBOOTSTRAP" ] ; then
- FAI_DEBOOTSTRAP="$SUITE http://ftp.debian.org/debian"
+ if [ -n "$WAYBACK_DATE" ] ; then
+ FAI_DEBOOTSTRAP="$SUITE http://snapshot.debian.org/archive/debian/$WAYBACK_DATE/"
+ else
+ FAI_DEBOOTSTRAP="$SUITE http://ftp.debian.org/debian"
+ fi
fi
if [ -z "$FAI_DEBOOTSTRAP_OPTS" ] ; then
mount --bind "${OUTPUT}/grml_sources/" "${CHROOT_OUTPUT}/grml-live/sources/"
log "Executed FAI command line:"
- log "BUILD_ONLY=$BUILD_ONLY BOOTSTRAP_ONLY=$BOOTSTRAP_ONLY GRML_LIVE_CONFIG=$CONFIGDUMP fai $VERBOSE -C $GRML_FAI_CONFIG -s file:///$GRML_FAI_CONFIG/config -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
+ log "BUILD_ONLY=$BUILD_ONLY BOOTSTRAP_ONLY=$BOOTSTRAP_ONLY GRML_LIVE_CONFIG=$CONFIGDUMP WAYBACK_DATE=$WAYBACK_DATE fai $VERBOSE -C $GRML_FAI_CONFIG -s file:///$GRML_FAI_CONFIG/config -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
BUILD_ONLY="$BUILD_ONLY" BOOTSTRAP_ONLY="$BOOTSTRAP_ONLY" GRML_LIVE_CONFIG="$CONFIGDUMP" fai $VERBOSE \
-C "$GRML_FAI_CONFIG" -s "file:///$GRML_FAI_CONFIG/config" -c"$CLASSES" \
-u "$HOSTNAME" "$FAI_ACTION" "$CHROOT_OUTPUT" $FAI_ARGS | tee -a $LOGFILE
<testsuite name="grml-live-missing-packages" tests="${package_count}" time="1" failures="${package_errors}" errors="${package_errors}" skipped="0" assertions="0">
EOF
- for package in $(awk '{print $1}' "${CHECKLOG}/package_errors.log") ; do
+ for package in $(awk '{print $1}' "${CHECKLOG}/package_errors.log" | sed 's;/;\\/;') ; do
failure_reason="$(awk "/$package/ {print \$2}" "${CHECKLOG}/package_errors.log")"
cat >> "${REPORT_MISSING_PACKAGES}" << EOF
<testcase name="test_missing_packages_${package}" time="0" assertions="0">
# copy _required_ isolinux files
if [ -d "${CHROOT_OUTPUT}/usr/lib/ISOLINUX" ] ; then
copy_addon_file isolinux.bin /usr/lib/ISOLINUX isolinux
- copy_addon_file ifcpu64.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file ldlinux.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libcom32.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libgpl.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libmenu.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libutil.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file vesamenu.c32 /usr/lib/syslinux/modules/bios/ isolinux
+ for file in ${CHROOT_OUTPUT}/usr/lib/syslinux/modules/bios/*.c32 ; do
+ copy_addon_file "$(basename "$file")" /usr/lib/syslinux/modules/bios/ isolinux
+ done
else # syslinux versions <= 3:4.05+dfsg-6+deb8u1
copy_addon_file isolinux.bin /usr/lib/syslinux isolinux
copy_addon_file ifcpu64.c32 /usr/lib/syslinux isolinux
log "Boot addons not found, skipping therefore. (Consider installing package grml-live-addons)"
ewarn "Boot addons not found, skipping therefore. (Consider installing package grml-live-addons)" ; eend 0
else
- # copy addons from system packages or grml-live-compat
+ # copy addons from system packages or grml-live-addons
copy_addon_file ipxe.lkrn /usr/lib/ipxe addons
copy_addon_file pci.ids /usr/share/misc addons
copy_addon_file memtest86+.bin /boot addons
touch -r ${ISO_NAME} ${ISO_NAME}.md5
sha1sum ${ISO_NAME} > ${ISO_NAME}.sha1 && \
touch -r ${ISO_NAME} ${ISO_NAME}.sha1
+ sha256sum ${ISO_NAME} > ${ISO_NAME}.sha256 && \
+ touch -r ${ISO_NAME} ${ISO_NAME}.sha256
+ sha512sum ${ISO_NAME} > ${ISO_NAME}.sha512 && \
+ touch -r ${ISO_NAME} ${ISO_NAME}.sha512
fi
)
;;
cp "${CHROOT_OUTPUT}"/boot/initrd.img-* "$WORKING_DIR"/initrd.img
cp "${CHROOT_OUTPUT}/${pxelinux_dir}/pxelinux.0" "${WORKING_DIR}/pxelinux.0"
+ if [ -r "${CHROOT_OUTPUT}"/usr/lib/syslinux/modules/bios/ldlinux.c32 ] ; then
+ cp "${CHROOT_OUTPUT}"/usr/lib/syslinux/modules/bios/ldlinux.c32 "${WORKING_DIR}"/
+ fi
+
mkdir -p "${WORKING_DIR}/pxelinux.cfg"
if [ -r "${BUILD_OUTPUT}/boot/isolinux/netboot.cfg" ] ; then
cp "${BUILD_OUTPUT}/boot/isolinux/netboot.cfg" "${WORKING_DIR}/pxelinux.cfg/default"
(
cd $(dirname "${OUTPUT_FILE}")
sha1sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha1"
+ sha256sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha256"
+ sha512sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha512"
)
einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0
rm -rf "${OUTPUTDIR}"