Skip to content

Secure Boot: document the ipxe.efi fallback chain, bump fog-ipxe pin - #980

Merged
mastacontrola merged 1 commit into
dev-branchfrom
secureboot-ipxe-chain-doc-15
Aug 3, 2026
Merged

Secure Boot: document the ipxe.efi fallback chain, bump fog-ipxe pin#980
mastacontrola merged 1 commit into
dev-branchfrom
secureboot-ipxe-chain-doc-15

Conversation

@mastacontrola

Copy link
Copy Markdown
Member

Summary

Port of #979 to dev-branch. fog-ipxe v2.0.0-fog.3 stages a second signed Secure Boot chain, ending the situation where Secure Boot was the one boot path in FOG with no fallback loader.

The two signed loaders fail on disjoint hardware:

  • snponly.efi drives the NIC through the firmware's own UEFI SNP protocol. Right default — whatever the vendor shipped and tested — but dead in the water where SNP is broken or absent.
  • ipxe.efi carries iPXE's native drivers and takes the NIC over from the firmware. Recovers exactly those machines, and hangs where the takeover fails.

Non-Secure-Boot installs have always had that choice via DHCP option 67.

What changed

1. FOG_IPXE_VERSIONv2.0.0-fog.3. Without it the paragraph below names a boot file the installer never downloads — the admin points DHCP at a path that TFTP 404s and cannot tell that from a broken chain. iPXE itself is unchanged at v2.0.0; only the fog-ipxe packaging moved.

2. One paragraph on the Secure Boot configuration page, framed by symptom rather than by binary:

If that chain loads but the network never comes up, the firmware's own UEFI network stack is at fault. Point the boot filename at secureboot/ipxe-shimx64.efi instead, which uses iPXE's built-in NIC drivers rather than the firmware's. Arm64 clients use the files under secureboot/arm64-efi/.

Port notes

Verified this branch actually needs it before porting:

  • downloadipxesecureboot() exists here (lib/common/functions.sh:935) and stages into the same secureboot/ tree, so the paths named are real on this branch too.
  • FOG_IPXE_VERSION was on the same v2.0.0-fog.2 pin.
  • The page lives at fogconfigurationpage.class.php here vs .page.php on 1.6, and emits with successive echo/printf calls rather than 1.6's accumulated $steps string. Rewritten in this branch's idiom rather than transplanted.

php -l clean. No FOG_BCACHE_VER bump needed — PHP only.

🤖 Generated with Claude Code

Port of the working-1.6 change (GH-979). fog-ipxe v2.0.0-fog.3 stages a
second signed chain beside snponly, so a site whose firmware UEFI SNP is
broken has somewhere to go -- but only if it knows the file is there.

Framed by symptom rather than by binary ("loads but the network never
comes up") because an admin hitting this has no way to know the fault is
in their firmware's network stack, and that is the only signal that
distinguishes the two chains. shim resolves its second stage from its own
filename, so switching is purely a DHCP change with nothing to rename
server-side.

FOG_IPXE_VERSION moves with it: without the bump the paragraph names a
boot file the installer never downloads, so the admin points DHCP at a
path that TFTP 404s and cannot tell that from a broken chain.

Written against this branch's own idiom -- successive echo/printf calls
rather than 1.6's accumulated $steps string -- rather than transplanted.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mastacontrola
mastacontrola merged commit 4ddf3d3 into dev-branch Aug 3, 2026
@mastacontrola
mastacontrola deleted the secureboot-ipxe-chain-doc-15 branch August 3, 2026 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant