1

So I decided to replace the operating system on my laptop. I used to have Manjaro Linux installed with UEFI mode and it worked fine. Now I decided to install Fedora.

I first live booted Fedora Workstation up in UEFI from USB. Every thing worked fine. Then I launched the official installer and selected automatic disk partitioning. The installation was successful. I restarted my computer. When it booted up it coudn't detect any bootable media. Becouse of that, I decided to reinstall the system with manual partitioning. I created a gpt partition table with 2 partitions; efi system partition mounted at /boot/efi formatted with fat-32 and a root partition formated with ext4 and mounted at /. The efi partition has the efi flag set and is 500MiB. The install went through fine, but the system still doesn't boot.

I then tried several more times with little adjusments and no luck. I tried installing the system with same configurations in virtual box with UEFI (yes I checked the Enable EFI (special OSes only)) and it worked every time. Maybe faulty laptop?

Do you have any suggestions what might I have done wrong, or what might the problem be?

3

On UEFI, the bootloader is normally identified by the unique UUID of the EFI system partition and the bootloader file pathname, both stored into UEFI boot variables in system NVRAM. Unlike with old MBR-style boot, just specifying the disk to boot from is not necessarily enough.

Some system manufacturers have designed their UEFI firmware with a built-in assumption that the OS will be Windows, and added a "helpful" feature that will reset the UEFI boot variables to the exact values used by Windows.

Start by booting the system to rescue mode in UEFI mode. Then run efibootmgr -v as root. That will tell you the current state of the UEFI boot variables. You can also use the blkid command to list the filesystem and partition UUIDs of each disk the system has. The partition UUID (listed in blkid output as PARTUUID=<value>) of the EFI system partition should match the UUID listed in the boot variables listed by efibootmgr -v command. If necessary, you can use other options with efibootmgr to fix the contents of the boot variables. See man efibootmgr for details.

(Note: the UEFI firmware uses partition UUIDs, while the GRUB bootloader can use filesystem UUIDs. The blkid lists the former as PARTUUID= and the latter as UUID=. Don't confuse the two.)

If you find that the UEFI boot variables don't point to the Fedora bootloader and that any changes you make won't stick over a reboot, then you very likely have some variation of the UEFI firmware bug I mentioned earlier. Roderick W. Smith calls this a boot coup: see this link for a list of some known variations and workarounds for them.

Basically, one possible workaround is to set up (a copy of) the bootloader into either the standard removable-disk-boot path on the EFI system partition (\EFI\boot\boot<arch>.efi, where <arch> is typically x64 or possibly ia32 on typical PC hardware. Another is to place the Linux UEFI bootloader into the same path Windows normally uses (\EFI\Microsoft\Boot\bootmgfw.efi).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy