From e855c4c64237619a43c2850bd20c81e4796850f8 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 28 Jan 2026 21:09:51 +0000 Subject: [PATCH] [ci] Produce combined BIOS/UEFI ISO and USB images Use util/genfsimg to combine the 64-bit BIOS and all UEFI builds into a single multi-architecture image in both ISO and USB formats. Include an editable autoexec.ipxe script (that matches the default iPXE behaviour) in the USB image, so that users can just mount and edit this file. Signed-off-by: Michael Brown --- .github/workflows/build.yml | 56 ++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6daadfc7f..a474775df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,6 +33,7 @@ jobs: ${{ env.bindir }}/8086100e.mrom \ ${{ env.bindir }}/ipxe.dsk \ ${{ env.bindir }}/ipxe.iso \ + ${{ env.bindir }}/ipxe.lkrn \ ${{ env.bindir }}/ipxe.pxe \ ${{ env.bindir }}/ipxe.usb \ ${{ env.bindir }}/undionly.kpxe @@ -43,9 +44,8 @@ jobs: name: ${{ env.bindir }} if-no-files-found: error path: | - src/${{ env.bindir }}/ipxe.iso + src/${{ env.bindir }}/ipxe.lkrn src/${{ env.bindir }}/ipxe.pxe - src/${{ env.bindir }}/ipxe.usb src/${{ env.bindir }}/undionly.kpxe sbi: @@ -120,8 +120,6 @@ jobs: if-no-files-found: error path: | src/${{ env.bindir }}/ipxe.efi - src/${{ env.bindir }}/ipxe.iso - src/${{ env.bindir }}/ipxe.usb src/${{ env.bindir }}/snponly.efi tests: @@ -163,3 +161,53 @@ jobs: working-directory: src run: | ${{ matrix.exec }} ${{ env.bindir }}/tests.linux + + combine: + name: BIOS + UEFI + runs-on: ubuntu-latest + needs: + - bios + - uefi + container: + image: ghcr.io/ipxe/ipxe-signer + env: + binaries: >- + bin-x86_64-pcbios/ipxe.lkrn + bin-arm32-efi/ipxe.efi + bin-arm64-efi/ipxe.efi + bin-i386-efi/ipxe.efi + bin-loong64-efi/ipxe.efi + bin-riscv32-efi/ipxe.efi + bin-riscv64-efi/ipxe.efi + bin-x86_64-efi/ipxe.efi + steps: + + - name: Check out code + uses: actions/checkout@v6 + + - name: Download + uses: actions/download-artifact@v7 + with: + pattern: "{bin-x86_64-pcbios,bin-*-efi}" + + - name: Combine + run: | + # Provide an editable placeholder autoexec.ipxe for the USB image + cat > autoexec.ipxe <<'EOF' + #!ipxe + echo + prompt --key 0x02 --timeout 2000 \ + Press Ctrl-B for the iPXE command line... \ + && shell || autoboot + EOF + ./src/util/genfsimg -o ipxe.iso ${{ env.binaries }} + ./src/util/genfsimg -o ipxe.usb -s autoexec.ipxe ${{ env.binaries }} + + - name: Upload + uses: actions/upload-artifact@v6 + with: + name: bin-combined + if-no-files-found: error + path: | + ipxe.iso + ipxe.usb