You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
#957 decided what FOG does about Secure Boot: nothing out of the box, opt-in and documented. The guide is merged at fog-docs secure-boot-signing.
What has not happened is anyone booting that chain on real hardware. Every individual link is upstream-supported and the artefacts have been inspected, but the end-to-end path is unproven and the guide says so in its Known limits. This issue tracks closing that gap.
Describe the solution you'd like
Boot a UEFI machine with Secure Boot on, through:
firmware → ipxe-shimx64.efi (Microsoft UEFI CA 2011 + 2023, from ipxe/shim)
→ ipxe.efi (iPXE Secure Boot Intermediate G1A, extracted
from ipxe-x86_64-sb.usb at EFI/BOOT/IPXE.EFI)
→ autoexec.ipxe (FOG's boot logic, served over TFTP)
→ bzImage (signed locally, key enrolled via MOK)
and confirm it reaches the FOG menu and completes a deploy.
Specific things to check, because they are the parts most likely to be wrong:
Where autoexec.ipxe has to live. iPXE's efi_autoexec_network() calls imgacquire() with a bare filename, which resolves against cwuri — the directory the .efi was loaded from, not the TFTP root. So a stock ipxe.efi sitting at /tftpboot/ipxe.efi looks for /tftpboot/autoexec.ipxe, which FOG does not currently create; FOG only ships /tftpboot/autoexec/autoexec.ipxe. Confirm what cwuri actually resolves to when the binary is reached via shim rather than directly — the shim is loaded first, and whether cwuri follows the shim's path or iPXE's is worth observing rather than assuming.
Whether the installer should place autoexec.ipxe at the TFTP root, or whether the shim and ipxe.efi should live in their own subdirectory with a copy beside them. Falls out of (1).
That MOK enrolment via mmx64.efi works from a PXE-booted shim, not just from an installed distro.
Is your feature request related to a problem? Please describe.
#957 decided what FOG does about Secure Boot: nothing out of the box, opt-in and documented. The guide is merged at fog-docs
secure-boot-signing.What has not happened is anyone booting that chain on real hardware. Every individual link is upstream-supported and the artefacts have been inspected, but the end-to-end path is unproven and the guide says so in its Known limits. This issue tracks closing that gap.
Describe the solution you'd like
Boot a UEFI machine with Secure Boot on, through:
and confirm it reaches the FOG menu and completes a deploy.
Specific things to check, because they are the parts most likely to be wrong:
autoexec.ipxehas to live. iPXE'sefi_autoexec_network()callsimgacquire()with a bare filename, which resolves againstcwuri— the directory the.efiwas loaded from, not the TFTP root. So a stockipxe.efisitting at/tftpboot/ipxe.efilooks for/tftpboot/autoexec.ipxe, which FOG does not currently create; FOG only ships/tftpboot/autoexec/autoexec.ipxe. Confirm whatcwuriactually resolves to when the binary is reached via shim rather than directly — the shim is loaded first, and whethercwurifollows the shim's path or iPXE's is worth observing rather than assuming.autoexec.ipxeat the TFTP root, or whether the shim andipxe.efishould live in their own subdirectory with a copy beside them. Falls out of (1).mmx64.efiworks from a PXE-booted shim, not just from an installed distro.ipxe.efihas no FOG CA compiled in. See Feature Request: Support for External Intermediate CA (e.g., Smallstep step-ca) #794.CONFIG_EFI_STUB=yon the FOS kernel — under Secure Boot the kernel is loaded by the firmware's loader, not iPXE's.Additional context
Verified while filing this, so it does not need re-deriving:
ipxe-shimx64.efi(ipxe/shimipxe-16.1)EFI/BOOT/BOOTX64.EFI(inside-sb.usb)EFI/BOOT/IPXE.EFI(inside-sb.usb)/tftpboot/ipxe.efi/tftpboot/autoexec/snponly.efiFOG's binaries are unsigned by construction (
EMBED=ipxescriptplusCERT=/TRUST=), which is why the stock upstream binary has to be used here.Refs #957, #794, #959