Restore the eight commands upstream's BIOS trim list disables - #3
Merged
Conversation
A legacy-BIOS PXE client cannot boot FOG with the binaries this repository
publishes. It loads undionly.kkpxe, runs the embedded script, fetches
default.ipxe over TFTP, and then dies:
params: command not found
Could not boot: Exec format error (https://ipxe.org/2e022001)
The installer generates default.ipxe with "params", ten "param" lines and a
"boot.php##params" chain, and bootmenu.class.php emits param/params 46 more
times. None of it works, so every BIOS PXE boot fails.
The cause is upstream's "Disable commands not historically included in BIOS
builds" block. "Historically" is upstream's history, not FOG's: before
fogproject's f61a90d97 (2026-01-26) FOG's header carried no PLATFORM_pcbios
block at all and all eight commands were enabled for BIOS. That commit copied
upstream master's headers in wholesale and brought the block with it.
fogproject's a02a2c2cd rebase caught three other flips from the same copy --
CONSOLE_PCBIOS, ACPI_SETTINGS, DOWNLOAD_PROTO_FILE -- but not these, so they
survived it.
It stayed invisible because fogproject shipped committed prebuilt binaries
until 182701dd6 moved iPXE here. Only -S/--force-https installs rebuilt, so
only they were affected. Now every install boots what this repository builds,
which turned a latent bug into a universal one. Both fogproject branches
consume these assets, so 1.5 and 1.6 are equally affected.
Two of the eight are load-bearing rather than diagnostic:
PARAM_CMD the failure above.
CONSOLE_CMD bootmenu.class.php uses "console --picture" for the boot menu
background image and gates its first sanboot variant on
"console && sanboot --drive 0". Without it the background
silently never renders and BIOS clients quietly fall through to
sanboot --drive 0x80.
The other six are the diagnostic commands FOG's documentation leans on and
were equally unintended casualties, so the whole set is restored rather than
just the two that visibly break. That returns BIOS builds to what FOG actually
shipped and tested for years.
Upstream's block is left byte-for-byte intact and the restore is an explicit
override after it. Deleting lines out of upstream's block would make the next
refresh onto a new tag diff dirty and make this read as more drift; an override
reads as a deliberate choice, which is the point of the deviations table.
EFI is unaffected -- the block is PLATFORM_pcbios-gated, which is also why UEFI
testing never caught this.
Verified on a VirtualBox BIOS client against a 1.6 server: with the published
binary, "params: command not found"; with this one, the full registered-host
FOG boot menu. Binary grows 87551 -> 91464 bytes.
Co-Authored-By: Claude Opus 5 <[email protected]>
This was referenced Aug 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Legacy-BIOS PXE clients cannot boot FOG with the binaries this repository publishes.
undionly.kkpxeloads, runs its embedded script, fetchesdefault.ipxe, then dies:The installer generates
default.ipxewithparams, tenparamlines and aboot.php##paramschain, andbootmenu.class.phpemitsparam/params46 more times. Every BIOS PXE boot fails.Cause
Upstream's
/* Disable commands not historically included in BIOS builds */block. "Historically" is upstream's history, not FOG's — before fogproject'sf61a90d97(2026-01-26) FOG's header carried noPLATFORM_pcbiosblock at all and all eight commands were on for BIOS. That commit copied upstream master's headers wholesale and brought the block along. fogproject'sa02a2c2cdrebase caught three other flips from that same copy (CONSOLE_PCBIOS,ACPI_SETTINGS,DOWNLOAD_PROTO_FILE) but not these.It stayed invisible because fogproject shipped committed prebuilt binaries until
182701dd6moved iPXE here — only-S/--force-httpsinstalls rebuilt. Now every install boots what this repo builds, so a latent bug became universal. Both fogproject branches consume these assets: 1.5 and 1.6 are equally affected.Why all eight, not just the broken one
PARAM_CMDdefault.ipxe+ 46 emissions inbootmenu.class.phpCONSOLE_CMDconsole --pictureboot-menu background; gates firstsanboot --drive 0--drive 0x80All eight were on before
f61a90d97; none was ever a FOG decision.Upstream's block is left byte-for-byte intact and the restore is an explicit override after it, so the next refresh onto a new upstream tag diffs cleanly and this reads as a deliberate deviation rather than more drift.
EFI is unaffected — the block is
PLATFORM_pcbios-gated, which is also why UEFI testing never caught this.Verification
VirtualBox BIOS client against a 1.6 server, same server / same
default.ipxe/ same DHCP, binary the only variable:params: command not found87551 → 91464 bytes.