1

I have installed Arch Linux on a fresh SSD, and I am having trouble booting into it with UEFI.

I successfully boot to the ISO on a USB, and I believe that I have successfully installed Arch Linux on the SSD because I can use arch-chroot to access enter that environment.

I used efibootmgr to modify the UEFI boot order so that the highest priority is an EFI file on an appropriate partition. I know that this is working because if I change that EFI file, the behaviour changes.

After running efibootmgr to point UEFI to that partition, I saw that the partition was empty. Is efibootmgr supposed to populate a .efi file for me? If not, how do I make or get an EFI file?

I have tried copying EFI files from my Arch Linux ISO USB. The first boots into a EFI SHELL, but it is not useful because the terminal does not scroll and the font is huge, so the text very quickly prints off the bottom of the screen. The second EFI file searches for the ISO USB drive in /dev/disk/by-label/ and tries to boot from it. This might be useful if I can direct it to search for the home partition of my SSD.

Any advice is appreciated.

1 Answer 1

0

Got it working, answering myself to help anyone who comes across this.

Is efibootmgr supposed to populate a .efi file for me?

No, efibootmgr just points UEFI to an EFI file

how do I make or get an EFI file?

One way to do it is to use GRUB as described here: https://itsfoss.com/install-arch-linux/

Which tells us we need grub and efibootmgr installed, and an EFI partition mounted. Then issue this command:

grub-install --target=x86_64-efi --bootloader-id=<name> --efi-directory=<path-to-efi-mount-point>

Where <name> is just the label that will appear when listing the EFI priority with efibootmgr. The command will generate an EFI file on the EFI partition and modify the EFI boot priority to point to that EFI file. The last step is to generate a grub config file.

Note that GRUB is a very flexible boot loader and using it to generate EFI files is just one of the many functions. The default use case for grub appears to be with BIOS instead of UEFI which is why it took me quite some time to find this invocation.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .