I am confused about UEFI shells. I think I understand the UEFI boot process, but I need to update a card using a UEFI flash process. I'm on 13.1 amd64 with an ASUS motherboard. The ASUS firmware has an option to boot to a UEFI shell. Is loader.efi (which exists as /boot/efi/efi/boot/bootx64.efi, among other places) a UEFI shell or does it just function as a loader? Do I need to download a UEFI shell and put it in /boot/efi/efi/boot/shellx64.efi? (or actually build a USB memstick with the same).
Can anyone explain all this, or point me to an explanation?
What loader.efi is
/boot/efi/efi/boot/bootx64.efi (or /boot/loader.efi in FreeBSD) is FreeBSD’s bootloader, not a UEFI shell.
It’s the program UEFI calls to start loading FreeBSD’s kernel and system — similar to GRUB or Windows Boot Manager.
So:
loader.efi = FreeBSD bootloader (not an interactive shell).
2. What a UEFI Shell is
A UEFI Shell is a small command-line environment built for UEFI itself — kind of like a “mini-OS” that runs before any operating system.
It lets you:
Run .efi applications directly
Flash firmware
Change NVRAM boot variables
View UEFI devices, partitions, etc.
It’s completely separate from FreeBSD or any OS loaders.
3. How to get and use one
If your ASUS firmware has a “Launch EFI Shell” option, it expects to find a file called shellx64.efi in a standard path, for example:
/efi/boot/shellx64.efi
To use it:
Download the UEFI Shell binary from a trusted source, e.g.
Tianocore EDK2 Shell (official UEFI project)
Rename it to shellx64.efi.
Put it on a FAT32 USB stick in the path:
\EFI\Boot\shellx64.efi
Boot from that USB, or use your BIOS “Launch EFI Shell” option.
That gives you the interactive UEFI command prompt you can use to run firmware utilities, including flash tools.
In short:
loader.efi = FreeBSD’s bootloader (not a shell).
shellx64.efi = actual UEFI shell, downloaded separately.
Place it on a FAT32 USB at \EFI\Boot\shellx64.efi and boot to it to run UEFI commands or firmware flash tools.