Repository navigation
Conversation
Firmware that boots through a GRUB payload scans disks for a config (grub.cfg / syslinux / extlinux) and never chainloads the MBR. Omarchy installs Limine, whose limine.conf that firmware does not read, so the installed system does not start even though the install succeeds. Write a minimal grub.cfg next to limine.conf on the ESP for non-UEFI installs, booting the same kernel with the same cmdline. Ordinary BIOS boots the MBR Limine and never reads the file, so it is harmless there.
felixzsh
force-pushed
the
fix/grub-payload-bios-boot
branch
from
October 10, 2026 17:26
70aadc9 to
b461010
Compare
This branch has not been deployed
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.
What
On BIOS installs, also leave a minimal
grub.cfgon the ESP so firmware thatboots through a GRUB payload can hand off to the installed system.
Why
Some coreboot-based firmware boots via a GRUB payload that scans disks for a
boot config (
grub.cfg/ syslinux / extlinux) and does not chainload the MBR.Omarchy installs Limine, which writes
limine.conf; that firmware does not readit, so the install completes but the machine does not start — the payload drops
into its scanner with
.../i386-coreboot/*.mod not foundnoise.The MBR already receives Limine (
limine bios-install), but the payload neverboots the MBR on its own: it only looks for a config file. Leaving it one is the
missing piece.
How
In
finalize_limine_boot, after Limine is finalized, non-UEFI installs now get agrub/grub.cfgon the ESP next tolimine.conf:The kernel paths are read back from the generated
limine.conf(
path:/module_path:, stripping theboot():prefix and the content hash),and the cmdline is the same one Limine uses, so
cryptdevice/rootflags/resumestay correct.intel-ucode.img/amd-ucode.imgis prepended whenpresent.
Impact on normal installs
None.
the MBR Limine, and Limine reads
limine.conf; the file is inert.limine.conf, snapshots, or kernel updates.Testing
test/unit/test_bios_grub_config.py: path parsing, the generated config,and the no-op case when the entry has no kernel/initramfs paths.
./test/allpasses (72 unit tests).the file present the GRUB payload boots the installed system; without it, it
does not.
Notes
limine-snapper-synckeeps managinglimine.conf. Snapshot entries are not mirrored into thisgrub.cfg; bootinga snapshot still goes through Limine. This file is only the handoff for
firmware that cannot read
limine.conf.direct kernel entry works regardless of what is (or is not) in the MBR.
of firmware (discussion Boot fails on first boot with Libreboot/Coreboot (no EFI payload) — installer should detect non‑EFI and offer legacy/BIOS install omarchy#4209 ).