]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[build] Allow for building EFI ISOs without syslinux nosyslinux 992/head
authorMichael Brown <mcb30@ipxe.org>
Mon, 10 Jul 2023 12:45:47 +0000 (13:45 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 10 Jul 2023 12:51:33 +0000 (13:51 +0100)
The isohybrid tool (that creates a partition table to describe the ESP
embedded within the ISO image) relies upon the existence of the
x86-only isolinux.bin file.  This file may not be available on non-x86
build hosts.

We already allow for the possibility that isohybrid may not be present
on the build host, in which case we fall back to creating a non-hybrid
ISO image.  Make a similar allowance for the possibility that the
isolinux.bin file may not be present: require its existence only if we
are attempting to build a BIOS-bootable image, or if we will be
attempting to use isohybrid to create a hybrid ISO image.

Reported-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/util/genfsimg

index 0c0692793a085b3426ae27c39a847917769ce743..4160b4ba2d2effc6509c4299dac0ec4596ec9323 100755 (executable)
@@ -229,17 +229,27 @@ done
 
 # Configure ISO image, if applicable
 #
-# Note that the BIOS boot files are required even for an EFI-only ISO,
-# since isohybrid will refuse to work without them.
+# Note that the BIOS boot files are required even for an EFI-only
+# hybrid ISO, since isohybrid will refuse to work without them.
 #
 if [ -n "${ISOIMG}" ] ; then
     ISOARGS="-J -R -l"
-    copy_syslinux_file "isolinux.bin" "${ISODIR}"
-    copy_syslinux_file "ldlinux.c32" "${ISODIR}" 2>/dev/null || true
-    ISOARGS="${ISOARGS} -no-emul-boot -eltorito-boot isolinux.bin"
-    ISOARGS="${ISOARGS} -boot-load-size 4 -boot-info-table"
+    if isohybrid --version >/dev/null 2>&1 ; then
+       ISOHYBRID=isohybrid
+    else
+       ISOHYBRID=
+    fi
+    if [ -n "${LKRN}" -o -n "${ISOHYBRID}" ] ; then
+       copy_syslinux_file "isolinux.bin" "${ISODIR}"
+       copy_syslinux_file "ldlinux.c32" "${ISODIR}" 2>/dev/null || true
+       ISOARGS="${ISOARGS} -no-emul-boot -eltorito-boot isolinux.bin"
+       ISOARGS="${ISOARGS} -boot-load-size 4 -boot-info-table"
+       if [ -n "${EFI}" ] ; then
+           ISOARGS="${ISOARGS} -eltorito-alt-boot"
+       fi
+    fi
     if [ -n "${EFI}" ] ; then
-       ISOARGS="${ISOARGS} -eltorito-alt-boot -no-emul-boot -e esp.img"
+       ISOARGS="${ISOARGS} -no-emul-boot -e esp.img"
     else
        FATIMG=
     fi
@@ -309,7 +319,7 @@ if [ -n "${ISOIMG}" ] ; then
            -appid "iPXE - Open Source Network Boot Firmware" \
            -publisher "ipxe.org" -sysid "iPXE" -o "${ISOIMG}" \
            ${ISOARGS} "${ISODIR}"
-    if isohybrid --version >/dev/null 2>&1 ; then
+    if [ -n "${ISOHYBRID}" ] ; then
        ISOHYBRIDARGS=
        if [ -n "${EFI}" ] ; then
            ISOHYBRIDARGS="${ISOHYBRIDARGS} --uefi"
@@ -317,7 +327,7 @@ if [ -n "${ISOIMG}" ] ; then
        if [ -n "${SOURCE_DATE_EPOCH:-}" ] ; then
            ISOHYBRIDARGS="${ISOHYBRIDARGS} --id ${SOURCE_DATE_EPOCH}"
        fi
-       isohybrid ${ISOHYBRIDARGS} "${ISOIMG}"
+       "${ISOHYBRID}" ${ISOHYBRIDARGS} "${ISOIMG}"
     fi
 fi