# make sure we don't leave any mounts - FAI doesn't remove them always
umount $CHROOT_OUTPUT/proc/sys/fs/binfmt_misc 2>/dev/null || /bin/true
umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true
+ umount $CHROOT_OUTPUT/run 2>/dev/null || /bin/true
umount $CHROOT_OUTPUT/sys 2>/dev/null || /bin/true
umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true
umount $CHROOT_OUTPUT/dev 2>/dev/null || /bin/true
[ -n "$BOOT_METHOD" ] || BOOT_METHOD='isolinux'
[ -n "$CLASSES" ] || CLASSES="GRMLBASE,GRML_FULL,$(echo ${ARCH} | tr 'a-z' 'A-Z')"
[ -n "$DATE" ] || DATE="$(date +%Y-%m-%d)"
-[ -n "$DISTRI_INFO" ] || DISTRI_INFO='Grml - Live Linux for system administrators '
+[ -n "$DISTRI_INFO" ] || DISTRI_INFO='Grml - Live Linux for system administrators'
[ -n "$DISTRI_NAME" ] || DISTRI_NAME="grml"
[ -n "$DISTRI_SPLASH" ] || DISTRI_SPLASH='grml.png'
[ -n "$FORCE_ISO_REBUILD" ] || FORCE_ISO_REBUILD="false"
eend 1
bailout 1
fi
- unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*.squashfs ; rc=$?
+ unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*/*.squashfs ; rc=$?
umount "$mountpoint"
rmdir "$mountpoint"
if [ "$rc" != 0 ]; then
bailout 11
fi
+ # EFI boot files
+ if [ -r "${CHROOT_OUTPUT}/boot/efi.img" -a -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then
+ einfo "Moving EFI boot files into ISO path."
+ log "Moving EFI boot files into ISO path."
+ RC=$0
+ mv "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/" || RC=$?
+ mkdir -p "${BUILD_OUTPUT}/efi/boot/" || RC=$?
+ mv "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi" || RC=$?
+ eend $?
+ fi
+
[ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates'
if ! [ -d "${TEMPLATE_DIRECTORY}"/boot ] ; then
log "Error: ${TEMPLATE_DIRECTORY}/boot does not exist. Exiting."
cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.lst "${BUILD_OUTPUT}"/boot/grub/
cp -a "${CHROOT_OUTPUT}"/usr/share/grub/ascii.pf2 "${BUILD_OUTPUT}"/boot/grub/
cp -a "${CHROOT_OUTPUT}"/boot/grub/core.img "${BUILD_OUTPUT}"/boot/grub/
+ cp -a "${CHROOT_OUTPUT}"/boot/grub/grub.img "${BUILD_OUTPUT}"/boot/grub/
if ! [ -d "${TEMPLATE_DIRECTORY}"/GRML ] ; then
log "Error: ${TEMPLATE_DIRECTORY}/GRML does not exist. Exiting."
bailout 9
fi
- [ -d "$BUILD_OUTPUT"/GRML ] || mkdir "$BUILD_OUTPUT"/GRML
- cp -a ${TEMPLATE_DIRECTORY}/GRML/* "$BUILD_OUTPUT"/GRML/
+ mkdir -p "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/
+ cp -a ${TEMPLATE_DIRECTORY}/GRML/* "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/
# adjust boot splash information:
RELEASE_INFO="$GRML_NAME $VERSION - Release Codename $RELEASENAME"
RELEASE_INFO="$(cut_string 68 "$RELEASE_INFO")"
RELEASE_INFO="$(extend_string_end 68 "$RELEASE_INFO")"
- if [ -r "$BUILD_OUTPUT"/GRML/grml-version ] ; then
- sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/GRML/grml-version
- sed -i "s/%DATE%/$DATE/" "$BUILD_OUTPUT"/GRML/grml-version
+ if [ -r "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version ] ; then
+ sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version
+ sed -i "s/%DATE%/$DATE/" "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version
fi
# make sure the squashfs filename is set accordingly:
if ! [ -r "$DPKG_LIST" ] ; then
ewarn "$DPKG_LIST could not be read, ignoring to store package information on ISO therefore."
else
- einfo "Storing package list information as /GRML/${GRML_NAME}-packages.txt on ISO."
- cp "$DPKG_LIST" "${BUILD_OUTPUT}/GRML/${GRML_NAME}-packages.txt"
+ einfo "Storing package list information as /GRML/${GRML_NAME}/packages.txt on ISO."
+ cp "$DPKG_LIST" "${BUILD_OUTPUT}"/GRML/"${GRML_NAME}"/packages.txt
eend $?
fi
log "Skipping stage 'squashfs' as requested via option -q or -N"
ewarn "Skipping stage 'squashfs' as requested via option -q or -N" ; eend 0
else
- [ -d "$BUILD_OUTPUT"/live ] || mkdir "$BUILD_OUTPUT"/live
+ mkdir -p "$BUILD_OUTPUT"/live/"${GRML_NAME}"/
# make sure we don't leave (even an empty) base.tgz:
[ -f "$CHROOT_OUTPUT/base.tgz" ] && rm -f "$CHROOT_OUTPUT/base.tgz"
[ -n "$SQUASHFS_INFO_MSG" ] && SQUASHFS_INFO_MSG="using options: $SQUASHFS_INFO_MSG"
einfo "Squashfs build information: running binary $SQUASHFS_BINARY $SQUASHFS_INFO_MSG"
- log "$SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS"
+ log "$SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/${GRML_NAME}/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS"
- if $SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/"${GRML_NAME}".squashfs \
+ if $SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/"${GRML_NAME}"/"${GRML_NAME}".squashfs \
-noappend $SQUASHFS_OPTIONS 2>"${SQUASHFS_STDERR}" ; then
- echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/filesystem.module
+ echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/"${GRML_NAME}"/filesystem.module
log "Finished execution of stage 'squashfs' [$(date)]"
einfo "Finished execution of stage 'squashfs'" ; eend 0
else
# create md5sum file:
if [ -z "$BOOTSTRAP_ONLY" ] ; then
- ( cd $BUILD_OUTPUT/GRML &&
+ ( cd $BUILD_OUTPUT/GRML/"${GRML_NAME}" &&
find .. -type f -not -name md5sums -not -name isolinux.bin -exec md5sum {} \; > md5sums )
fi
# }}}
bailout
fi
- case "$ARCH" in
- amd64)
- # using -eltorito-alt-boot is limited to xorriso for now
- case "$MKISOFS" in
- xorriso*)
- einfo "Using xorriso for ISO generation." ; eend 0
- eindent
-
- if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then
- log "Disabling (U)EFI boot support because xorriso version is too old."
- ewarn "Disabling (U)EFI boot support because xorriso version is too old." ; eend 0
- else
- if [ -r "${CHROOT_OUTPUT}/boot/efi.img" ] ; then
- einfo "Found /boot/efi.img - using for ISO."
- log "Found /boot/efi.img - using for ISO."
- cp "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/efi.img"
- eend $?
- fi
-
- if [ -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then
- einfo "Found /boot/bootx64.efi - using as /efi/boot/bootx64.efi for ISO."
- log "Found /boot/bootx64.efi - using as /efi/boot/bootx64.efi for ISO."
- mkdir -p "${BUILD_OUTPUT}/efi/boot/"
- cp "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi"
- eend $?
- fi
-
- if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then
- einfo "/boot/efi.img found and amd64 architecture present, extending boot arguments."
- log "/boot/efi.img found and amd64 architecture present, extending boot arguments."
- BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot"
- eend $?
- else
- log "Disabling (U)EFI boot support because /boot/efi.img is missing."
- ewarn "Disabling (U)EFI boot support because /boot/efi.img is missing." ; eend 0
- fi
- fi
+ einfo "Using ${MKISOFS} to build ISO." ; eend 0
+ case "${ARCH}-${MKISOFS}" in
+ # using -eltorito-alt-boot is limited to xorriso for now
+ amd64-xorriso*)
+ eindent
+
+ if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then
+ log "Disabling (U)EFI boot support because xorriso version is too old."
+ ewarn "Disabling (U)EFI boot support because xorriso version is too old." ; eend 0
+ else
+ if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then
+ einfo "Enabling (U)EFI boot."
+ log "Enabling (U)EFI boot."
+ BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot"
+ eend $?
+ else
+ log "Disabling (U)EFI boot support because /boot/efi.img is missing."
+ ewarn "Disabling (U)EFI boot support because /boot/efi.img is missing." ; eend 0
+ fi
+ fi
- eoutdent
- ;;
- esac
+ eoutdent
;;
esac
fi
if tar -C "$OUTPUTDIR" -jcf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_NAME}_${VERSION}" ; then
- sha1sum "${OUTPUT_FILE}" > "${OUTPUT_FILE}.sha1"
+ (
+ cd $(dirname "${OUTPUT_FILE}")
+ sha1sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha1"
+ )
einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0
rm -rf "${OUTPUTDIR}"
else