+ 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 ! [ -r "$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
+ log "Installing boot addons."
+ einfo "Installing boot addons."
+
+ # copy addons from system packages or grml-live-addons
+ copy_addon_file ipxe.lkrn /usr/lib/ipxe addons
+ copy_addon_file ipxe.efi /usr/lib/ipxe addons
+ copy_addon_file pci.ids /usr/share/misc addons
+
+ # memtest86+ <=5.01-3.1
+ copy_addon_file memtest86+.bin /boot addons
+ # make memtest filename FAT16/8.3 compatible
+ if [ -r "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" ] ; then
+ mv "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" \
+ "${BUILD_OUTPUT}/boot/addons/memtest"
+ fi
+
+ # memtest86+ >=6.00-1
+ copy_addon_file memtest86+x32.bin /boot addons
+ copy_addon_file memtest86+x32.efi /boot addons
+ copy_addon_file memtest86+x64.bin /boot addons
+ copy_addon_file memtest86+x64.efi /boot addons
+
+ # provide memtest86+ >=6.00-1 files as "memtest" file
+ # for BIOS boot in isolinux/syslinux
+ if ! [ -r "${BUILD_OUTPUT}/boot/addons/memtest" ] ; then
+ if [[ "$ARCH" == "amd64" ]] ; then
+ copy_addon_file memtest86+x64.bin /boot addons
+ mv "${BUILD_OUTPUT}/boot/addons/memtest86+x64.bin" \
+ "${BUILD_OUTPUT}/boot/addons/memtest"
+ elif [[ "$ARCH" == "i386" ]] ; then
+ copy_addon_file memtest86+x32.bin /boot addons
+ mv "${BUILD_OUTPUT}/boot/addons/memtest86+x32.bin" \
+ "${BUILD_OUTPUT}/boot/addons/memtest"
+ fi
+ fi
+
+ # 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
+
+ # 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
+
+ eend 0
+
+ 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 modules for GRUB
+ if [ "${ARCH}" = "arm64" ] ; then
+ mkdir -p "${BUILD_OUTPUT}"/boot/grub/arm64-efi/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/arm64-efi/*.mod "${BUILD_OUTPUT}"/boot/grub/arm64-efi/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/arm64-efi/*.lst "${BUILD_OUTPUT}"/boot/grub/arm64-efi/
+ # NOTE: usage of /boot/grub/core.img + /boot/grub/grub.img unclear yet
+ elif [ "${ARCH}" = "amd64" ] || [ "${ARCH}" = "i386" ] ; then
+ # grub-pc-bin
+ 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/
+
+ # grub-efi-amd64-bin
+ 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/
+
+ # grub-efi-ia32-bin
+ mkdir -p "${BUILD_OUTPUT}"/boot/grub/i386-efi/
+ cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/i386-efi/*.{mod,lst} "${BUILD_OUTPUT}"/boot/grub/i386-efi/
+
+ cp -a "${CHROOT_OUTPUT}"/boot/grub/core.img "${BUILD_OUTPUT}"/boot/grub/
+ cp -a "${CHROOT_OUTPUT}"/boot/grub/grub.img "${BUILD_OUTPUT}"/boot/grub/
+ fi