+# move syslinux to isolinux {{{
+ mv "$WRKDIR"/cddir/boot/syslinux "$WRKDIR"/cddir/boot/isolinux
+ echo "menu label ^Isolinux prompt" > "$WRKDIR"/cddir/boot/isolinux/promptname.cfg
+ echo "include hd.cfg" >> "$WRKDIR"/cddir/boot/isolinux/grmlmain.cfg
+# }}}
+
+# change to $WRKDIR {{{
+ # make sure $WRKDIR is an absolute path, otherwise accessing files
+ # in it will fail later in the code path if user provided a
+ # relative directory
+ WRKDIR=$(realpath $WRKDIR)
+ cd "$WRKDIR/cddir"
+# }}}
+
+# efi boot {{{
+ # default, independent of UEFI support
+ BOOT_ARGS="-no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat"
+ UEFI_ENABLE=false
+
+ case "$MKISOFS" in
+ xorriso*)
+ echo "Using xorriso for ISO generation."
+ if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then
+ echo "Disabling (U)EFI boot support since xorriso version is not recent enough."
+ else
+ echo "xorriso with -eltorito-alt-boot support present"
+ UEFI_ENABLE=true
+
+ if ! [ -r "${WRKDIR}/cddir/boot/efi.img" ] ; then
+ echo "Warning: File /boot/efi.img not found, not extending boot arguments for (U)EFI boot."
+ UEFI_ENABLE=false
+ else
+ echo "/boot/efi.img found, extending boot arguments for (U)EFI boot."
+ BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot"
+ fi
+ fi
+ ;;
+ *)
+ echo "Using $MKISOFS for ISO generation (lacking UEFI option), disabling (U)EFI boot support."
+ ;;
+ esac
+# }}}
+
+# adjust ISO for small output if necessary {{{
+ if [ -n "$URI" ] ; then
+ bootloader_files=$(find . -name "*.cfg" -type f)
+ bootloader_files+=" "
+ bootloader_files+=$(find . -name "*.lst" -type f)
+ output_dir=$(dirname "$ISOFILE")
+ for squashfs in $(find . -name *.squashfs) ; do
+ media_path="$(dirname "$squashfs")"
+ filename="$(basename "$squashfs")"
+ target="$output_dir/$filename"
+ if [ -f "$target" ] && [ ! -n "$FORCE" ] ; then
+ echo >&2 "Warning: $target already exists, and -force not specified, not overwriting"
+ else
+ mv $squashfs $target
+ OUTPUT_FILES+=("$target")
+ fi
+ sed -i -e "s#^\(^.*$media_path.*\)\($URI\)\(.*$\)#\1$URI/$filename\3#g" $bootloader_files
+
+ done
+ fi
+# }}}
+
+# copy specified directory to cd {{{
+ if [ -n "$DIR" ] ; then
+ echo >&2 "Copying ${DIR} to generated ISO"
+ for param in GRML_NAME VERSION RELEASENAME DATE SHORT_NAME \
+ VERSION BOOTID RELEASE_INFO ; do
+ EXCLUDE_PARAM="$EXCLUDE_PARAM --exclude **%${param}%**"
+ done
+ rsync -a ${DIR}/ $EXCLUDE_PARAM .