+ mkdir -p "${BUILD_OUTPUT}/boot/grub"
+ cp -a ${TEMPLATE_DIRECTORY}/boot/grub/* "$BUILD_OUTPUT"/boot/grub/
+
+ if [ -n "$NO_ADDONS" ] ; then
+ rm -f "$BUILD_OUTPUT"/boot/grub/addons.cfg
+ log "Skipping installation of boot addons as requested via \$NO_ADDONS."
+ einfo "Skipping installation of boot addons as requested via \$NO_ADDONS."; eend 0
+ else
+ if ! [ -d "$TEMPLATE_DIRECTORY"/boot/addons ] ; then
+ 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_addon_file ipxe.lkrn /usr/lib/ipxe addons
+ copy_addon_file pci.ids /usr/share/misc addons
+ copy_addon_file memtest86+.bin /boot addons
+
+ # since syslinux(-common) v3:6.03~pre1+dfsg-4 the files are in a
+ # different directory :(
+ if [ -d "${CHROOT_OUTPUT}/usr/lib/syslinux/modules/bios/" ] ; then
+ syslinux_modules_dir=/usr/lib/syslinux/modules/bios/
+ else
+ syslinux_modules_dir=/usr/lib/syslinux
+ fi
+ for file in chain.c32 hdt.c32 mboot.c32 menu.c32; do
+ copy_addon_file "${file}" "${syslinux_modules_dir}" addons
+ done
+
+ copy_addon_file memdisk /usr/lib/syslinux addons
+
+ # make memtest filename FAT16/8.3 compatible
+ mv "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" \
+ "${BUILD_OUTPUT}/boot/addons/memtest"
+
+ # copy only files so we can handle bsd4grml on its own
+ for file in ${TEMPLATE_DIRECTORY}/boot/addons/* ; do
+ test -f $file && cp $file "$BUILD_OUTPUT"/boot/addons/
+ done
+
+ if [ -n "$NO_ADDONS_BSD4GRML" ] ; then
+ log "Skipping installation of bsd4grml as requested via \$NO_ADDONS_BSD4GRML."
+ einfo "Skipping installation of bsd4grml as requested via \$NO_ADDONS_BSD4GRML."; eend 0
+ else
+ if [ -d "$TEMPLATE_DIRECTORY"/boot/addons/bsd4grml ] ; then
+ cp -a ${TEMPLATE_DIRECTORY}/boot/addons/bsd4grml "$BUILD_OUTPUT"/boot/addons/
+ else
+ log "Missing addon file: bsd4grml"
+ ewarn "Missing addon file: bsd4grml" ; eend 0
+ fi
+ fi
+
+ fi # no "$TEMPLATE_DIRECTORY"/boot/addons
+ fi # NO_ADDONS
+
+ # generate loopback.cfg config file without depending on grub's regexp module
+ # which isn't available in Debian/squeeze
+ echo "## grub2 loopback configuration" > "${BUILD_OUTPUT}"/boot/grub/loopback.cfg
+ echo "source /boot/grub/header.cfg" >> "${BUILD_OUTPUT}"/boot/grub/loopback.cfg
+ for config in "${BUILD_OUTPUT}"/boot/grub/*_default.cfg "${BUILD_OUTPUT}"/boot/grub/*_options.cfg ; do
+ [ -r "$config" ] || continue
+ echo "source ${config##$BUILD_OUTPUT}" >> "${BUILD_OUTPUT}"/boot/grub/loopback.cfg
+ done
+ if [ -z "$NO_ADDONS" ] ; then
+ echo "source /boot/grub/addons.cfg" >> "${BUILD_OUTPUT}"/boot/grub/loopback.cfg
+ fi
+ echo "source /boot/grub/footer.cfg" >> "${BUILD_OUTPUT}"/boot/grub/loopback.cfg
+
+ # copy grub files from target
+ mkdir -p "${BUILD_OUTPUT}"/boot/grub/i386-pc/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.mod "${BUILD_OUTPUT}"/boot/grub/i386-pc/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.o "${BUILD_OUTPUT}"/boot/grub/i386-pc/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.lst "${BUILD_OUTPUT}"/boot/grub/i386-pc/
+ 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/
+
+ # copy modules for UEFI grub
+ mkdir -p "${BUILD_OUTPUT}"/boot/grub/x86_64-efi/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/x86_64-efi/*.{mod,lst} "${BUILD_OUTPUT}"/boot/grub/x86_64-efi/
+
+ if ! [ -d "${TEMPLATE_DIRECTORY}"/GRML ] ; then
+ log "Error: ${TEMPLATE_DIRECTORY}/GRML does not exist. Exiting."
+ eerror "Error: ${TEMPLATE_DIRECTORY}/GRML does not exist. Exiting." ; eend 1
+ bailout 9
+ fi
+
+ 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_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:
+ SQUASHFS_NAME="$GRML_NAME.squashfs"
+
+ if [ -n "$NO_BOOTID" ] ; then
+ log 'Skipping bootid feature as requested via $NO_BOOTID.'
+ einfo 'Skipping bootid feature as requested via $NO_BOOTID.'
+ else
+ [ -n "$BOOTID" ] || BOOTID="$(echo ${GRML_NAME}${VERSION} | tr -d ',./;\- ')"
+ [ -d "$BUILD_OUTPUT"/conf ] || mkdir "$BUILD_OUTPUT"/conf
+ einfo "Generating /conf/bootid.txt with entry ${BOOTID}."
+ log "Generating /conf/bootid.txt with entry ${BOOTID}."
+ echo "$BOOTID" > "$BUILD_OUTPUT"/conf/bootid.txt
+ eend $?
+ fi
+
+ # 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
+ if [ -r "${file}" ] && [ -f "${file}" ] ; then
+ sed -i "s/%ARCH%/$ARCH/g" "${file}"
+ sed -i "s/%DATE%/$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}"
+
+ [ -n "$DEFAULT_BOOTOPTIONS" ] && sed -i "s; boot=live; boot=live $DEFAULT_BOOTOPTIONS;" "${file}"
+
+ if [ -n "$NO_BOOTID" ] ; then
+ sed -i "s/ bootid=%BOOTID%//g" "${file}" # drop bootid bootoption
+ else
+ sed -i "s/%BOOTID%/$BOOTID/g" "${file}" # adjust bootid=... argument
+ fi