+ dd if=/dev/zero of="${CHROOT_OUTPUT}/${EFI_IMG}" bs=4M count=1 2>/dev/null || bailout 50
+ mkfs.vfat -n GRML "${CHROOT_OUTPUT}/${EFI_IMG}" >/dev/null || bailout 51
+ mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI || bailout 52
+ mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI/BOOT || bailout 52
+ mcopy -i "${CHROOT_OUTPUT}/${EFI_IMG}" "${CHROOT_OUTPUT}/${BOOTX32}" ::EFI/BOOT/bootia32.efi >/dev/null || bailout 53
+ log "Generated 32-bit EFI image $BOOTX32"
+ einfo "Generated 32-bit EFI image $BOOTX32" ; eend 0
+ fi
+}
+# }}}
+
+# BUILD_OUTPUT - execute arch specific stuff and squashfs {{{
+[ -n "$BUILD_OUTPUT" ] || BUILD_OUTPUT="$OUTPUT/grml_cd"
+mkdir -p "$BUILD_OUTPUT" || bailout 6 "Problem with creating $BUILD_OUTPUT for stage ARCH"
+
+# prepare ISO
+if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then
+ if [ -n "$BOOTSTRAP_ONLY" ] ; then
+ log "Skipping stage 'boot' as building with bootstrap only."
+ ewarn "Skipping stage 'boot' as building with bootstrap only." ; eend 0
+ else
+ # booting stuff:
+ mkdir -p "$BUILD_OUTPUT"/boot/isolinux
+ mkdir -p "$BUILD_OUTPUT"/boot/"${SHORT_NAME}"
+
+ # if we don't have an initrd we a) can't boot and b) there was an error
+ # 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_NAME}"/initrd.img
+ find $CHROOT_OUTPUT/boot/ -name initrd\*.bak -exec rm {} \;
+ else
+ log "Error: No initrd found inside $CHROOT_OUTPUT/boot/ - Exiting"
+ eerror "Error: No initrd found inside $CHROOT_OUTPUT/boot/ - Exiting" ; eend 1
+ bailout 10
+ fi
+
+ 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_NAME}"/vmlinuz
+ else
+ log "Error: No kernel found inside $CHROOT_OUTPUT/boot/ - Exiting"
+ eerror "Error: No kernel found inside $CHROOT_OUTPUT/boot/ - Exiting" ; eend 1
+ bailout 11
+ fi
+
+ # we need to set "$BOOTID" before we invoke adjust_boot_files for the
+ # first time, being inside grub_setup below
+ 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 ',./;\- ')"
+ mkdir -p "$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
+
+ grub_setup
+
+ # EFI boot files
+ if [ -r "${CHROOT_OUTPUT}/boot/efi.img" -a -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then
+ einfo "Copying 64-bit EFI boot files into ISO path."
+ log "Copying 64-bit EFI boot files into ISO path."
+ RC=$0
+ cp "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/" || RC=$?
+ mkdir -p "${BUILD_OUTPUT}/EFI/BOOT/" || RC=$?
+ cp "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/EFI/BOOT/bootx64.efi" || RC=$?
+ eend $?
+ elif [ -r "${CHROOT_OUTPUT}/boot/efi.img" -a -r "${CHROOT_OUTPUT}/boot/bootia32.efi" ] ; then
+ einfo "Copying 32-bit EFI boot files into ISO path."
+ log "Copying 32-bit EFI boot files into ISO path."
+ RC=$0
+ cp "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/" || RC=$?
+ mkdir -p "${BUILD_OUTPUT}/EFI/BOOT/" || RC=$?
+ cp "${CHROOT_OUTPUT}/boot/bootia32.efi" "${BUILD_OUTPUT}/EFI/BOOT/bootia32.efi" || RC=$?
+ eend $?
+ else
+ ewarn "No EFI boot files found, skipping." ; eend 0
+ 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."
+ eerror "Error: ${TEMPLATE_DIRECTORY}/boot does not exist. Exiting." ; eend 1
+ bailout 8
+ fi
+
+ # copy _required_ isolinux files
+ if [ -d "${CHROOT_OUTPUT}/usr/lib/ISOLINUX" ] ; then
+ copy_addon_file isolinux.bin /usr/lib/ISOLINUX isolinux
+ for file in ${CHROOT_OUTPUT}/usr/lib/syslinux/modules/bios/*.c32 ; do
+ copy_addon_file "$(basename "$file")" /usr/lib/syslinux/modules/bios/ isolinux