Skip to content

Extend validate_bootloader_layout with UEFI-dependent checks#4474

Open
Softer wants to merge 1 commit intoarchlinux:masterfrom
Softer:extend-bootloader-layout-validation
Open

Extend validate_bootloader_layout with UEFI-dependent checks#4474
Softer wants to merge 1 commit intoarchlinux:masterfrom
Softer:extend-bootloader-layout-validation

Conversation

@Softer
Copy link
Copy Markdown
Contributor

@Softer Softer commented Apr 24, 2026

Follow-up to #4442. The validator introduced there covered two Limine-specific layout cases; everything else that makes a config unbootable still lived in GlobalMenu._validate_bootloader, which meant the silent / --config path through guided.py and the safety-net call inside Installer._add_limine_bootloader never saw those checks.

This PR grows validate_bootloader_layout with a is_uefi parameter and three checks that were missing or menu-only:

  • Systemd-boot / Efistub / rEFInd on a BIOS system - none of them boot without UEFI. Previously only the rEFInd case was caught, and only in the TUI.
  • Efistub with a non-FAT boot partition - the UEFI firmware reads the kernel directly from that partition, so it must be FAT.
  • The rEFInd UEFI-only guard moves from GlobalMenu._validate_bootloader into the util, so all three call sites share it.

GlobalMenu, guided.py and Installer._add_limine_bootloader now pass SysInfo.has_uefi() as the third argument. No changes to what currently valid configs look like.

Tested in QEMU against 7 scenarios (BIOS and UEFI, happy paths and every new failure branch) - all behave as expected.

Add is_uefi parameter and three new validations: Systemd-boot, Efistub
and rEFInd require UEFI; Efistub additionally requires a FAT boot
partition. Move the rEFInd UEFI-only check out of GlobalMenu so
guided.py and Installer silent-install paths get the same coverage.
@Softer Softer requested a review from Torxed as a code owner April 24, 2026 11:27
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