UEFI Shell

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?

Thanks in advance.
 
Not all UEFI systems have the shell.


They can be useful if you have any unusual booting requirements but not something you’d probably need that often.
 
UEFI shell is a shell of a firmware (BIOS in PCs). It resembles a bit of a DOS prompt. It has nothing to do with any OS or their loaders.

Usually what you do is you boot to the prompt or you select to boot to this shell via BIOS menu. Once you are there you have few built-in commands to look around. help or alike command should give you a list. map gives you a map of devices.

But even if you do this blindly, let's say you have FAT32 USB key with all your firmware. Doing fs0: will try to "cd" to this FS. If not try fs1: and so on.
Once you changed to the USB you can execute whatever you need to upgrade the FW on the card. Almost always you have these commands in README or similar file attached to a fw.
 
Some flashers even use a script to execute the flashing under EFI.

startup.nsh
storcli.efi /c0 download file=HBA_9400-8i_Mixed_Profile.bin
 
Okay, thanks a bunch for the replies, although at least one of my questions was not answered, but still very helpful. Here are my take a ways:

1. No, loader.efi is not a UEFI shell. It just loads!
2. A UEFI shell, at least on modern mobos, is provided by the mobo.
3. To update a UEFI card, put all the required data and UEFI flash programs on a USB in a FAT32 efi gpt partition, and reboot to the mobo UEFI shell. Then flash the card!

Sound right? And thanks again.
 
A UEFI shell, at least on modern mobos, is provided by the mobo.
Not always included though, or may be an older version. But you can download a full UEFI shell here: https://github.com/tianocore/edk2/releases/
Save it on the efi partition, if you use rEFInd store it as EFI/Tools/Shellx64.efi then rEFInd will automatically detect it and you can start the shell from the rEFInd boot menu.
 
I thought I'd put this one to bed. I downloaded a pre-built ISO with several of the UEFI shells for various CPUs and split out the AMD64 version named bootx64. I then took a memstick, created a GPT geom on it, added an efi partition, formatted it as a FAT32 filesystem, mounted it temporarily, created the directory efi/boot on the filesystem, and copied the downloaded bootx64 into that directory. That memstick shows up as bootable on my UEFI motherboards and booting it comes up as a UEFI shell.

I was able to upgrade several SAS cards with that shell and a UEFI flasher for the cards. All of this seems very nice and was easy to do.

Rick
 
Back
Top