Troubleshooting missing firmware access

UEFI firmware implementations

Some systems has a nasty habit of losing access to the firmware after your Linux installation. A couple of examples

This document is a work-in-progress ...

The cause

It is not clear what makes this happen - a lot is pointing to bad implementations of the UEFI specification - in some cases the firmware is hardcoded to load $esp/EFI/boot/bootx64.efi 6.

Your system will usually be able to boot your installed Linux - only the firmware is not displaying correctly.

Usually you should be able to load the firmware on next reboot by using

$ systemctl reboot --firmware-setup

The cure

There is no one-size-fits-all answer - the following is a list compiled from Manjaro Forum and the first being from Arch Wiki.

I am listing the possibilities from least to most intrusive action.

  1. Use the most basic approach
    • Boot your Linux system Arch Wiki
    • Switch user to root su - - provide the root password when requisted
    • Copy the grub or systemd-boot efi stub to the $esp/EFI/BOOT/BOOTX64.EFI
    • Try booting to the firmware using the aforementioned command
  2. Removing the newly installed efistub
    • Boot your Linux system
    • Remove the grub efi loader - usually in a subfolder named for your distribution - e.g. $esp/EFI/Manjaro/grubx64.efi - rename the file or move it to another location
    • Try booting to the firmware
  3. Remove everything from the $esp mount point
    • This requires having some kind of boot media readily available to be able to do some system rescue.
    • This has proven to work on at least 2 occasions and requires you to have some experience using chroot to resque the system
  4. Using GRUB console to boot a removable media
    • This requires having some kind of boot media readily available and more intimate knowledge of the GRUB shell
    • It also requires the availability of either a Windows installation media or a dedicated rescue media like Hirens BootCD