Skip to content

installer: create EFI NVRAM boot entry for EVE-OS after installation#5712

Open
rucoder wants to merge 2 commits intolf-edge:masterfrom
rucoder:rucoder/boot-entry-v2
Open

installer: create EFI NVRAM boot entry for EVE-OS after installation#5712
rucoder wants to merge 2 commits intolf-edge:masterfrom
rucoder:rucoder/boot-entry-v2

Conversation

@rucoder
Copy link
Copy Markdown
Contributor

@rucoder rucoder commented Mar 27, 2026

Description

this is a reincarnation of very old branch i found on my disk.

After writing the EFI partition to disk, the installer did not create an EFI NVRAM boot entry. On some hardware and firmware configurations this means EVE-OS would not appear in the boot menu after installation and the system
might not boot into EVE without manual BIOS intervention.

This change adds create_efi_boot_entry() to the installer script. It:

  • Detects the EFI bootloader path by architecture (x86_64, ARM64, RISCV64) from the installer's own EFI files (available at /root/EFI/BOOT/ via the linuxkit init layer)
  • Removes any pre-existing "EVE-OS" NVRAM entries to avoid duplicates on reinstall
  • Creates a new NVRAM entry pointing to the correct EFI bootloader on the installed disk using efibootmgr

efibootmgr is added as a runtime dependency of the installer container and registered in the Alpine 3.16 package mirror.

How to test and validate this PR

  1. Build an installer image: make installer
  2. Flash to USB and boot on an EFI-capable x86_64 or ARM64 device
  3. After installation completes, reboot and enter the BIOS/UEFI boot menu
  4. Verify an "EVE-OS" entry is present and the system boots from it
  5. Run the installer a second time on the same device and verify there is only
    one "EVE-OS" entry (no duplicates)

Alternatively, test in QEMU with OVMF:

make run-installer-raw   # installs to target.img
make run-target          # boots from target.img — should boot EVE without grub fallback

Changelog notes

EVE-OS installer now creates an EFI NVRAM boot entry during installation, ensuring the device boots into EVE-OS automatically after installation on EFI-capable hardware.

PR Backports

  • 16.0-stable: No
  • 14.5-stable: No
  • 13.4-stable: No

Checklist

  • I've provided a proper description

  • I've added the proper documentation

  • I've tested my PR on amd64 device

  • I've tested my PR on arm64 device

  • I've written the test verification instructions

  • I've set the proper labels to this PR

  • I've checked the boxes above, or I've provided a good reason why I didn't
    check them.

@rucoder rucoder requested a review from eriknordmark as a code owner March 27, 2026 22:27
@rucoder rucoder requested a review from rene March 27, 2026 22:29
@rucoder rucoder force-pushed the rucoder/boot-entry-v2 branch 5 times, most recently from 0fae539 to f0485c6 Compare March 27, 2026 22:55
rucoder added 2 commits March 29, 2026 22:30
After writing the EFI partition to disk, the installer did not create
an EFI NVRAM boot entry. On some hardware and firmware configurations
this means EVE-OS would not appear in the boot menu and the system
might not boot into EVE without manual BIOS intervention.

Add create_efi_boot_entry() to the installer script. It detects the
EFI bootloader path by architecture (x86_64, ARM64, RISCV64) from the
installer's own EFI files, removes any pre-existing "EVE-OS" NVRAM
entries to avoid duplicates on reinstall, then creates a new entry
pointing to the correct EFI bootloader on the installed disk.

Add efibootmgr as a runtime dependency of the installer container and
register it in the Alpine 3.16 package mirror.

Signed-off-by: Mikhail Malyshev <mike.malyshev@gmail.com>
Update all Dockerfiles to use the current eve-alpine base image hash
as required by the repo consistency check.

Signed-off-by: Mikhail Malyshev <mike.malyshev@gmail.com>
@rucoder rucoder force-pushed the rucoder/boot-entry-v2 branch from f0485c6 to dafd328 Compare March 29, 2026 22:30
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