Is it possible to access network resources through an EFI shell?

I keep seeing allusions to the idea that EFI / UEFI shells support network resources with an extension, but I don't seem to be able to find anything concrete.

I'm trying to get sas3flash.efi on to a local system from a network resource in the EFI shell.

I have an HTTP server with the files I need on it, I just need a little bit of space in the EFI shell (a ramdisk would do just fine) and the wget command.

I feel like this shouldn't be as hard as it is. Am I missing something critical?


Solution 1:

You cannot do what you want using HTTP from an EFI shell

I understand you want to run (retrieved from the net) some firmware update application (sas3flash.efi) In that case you must code and boot (or net-boot) a custom EFI application that using network resources of the EFI environment i.e. EFI_HTTP_PROTOCOL (as mentioned before) would be able to network retrieve and run the needed app and its components. Remember sas3flash.efi expects to locally find some components; sas3flash.efi was not designed for net retrieving them.

You can probably do what you want w/o coding but using the "tftp" UEFI shell command instead. It implements a TFTP client (kind of wget but for TFTP) able to retrieve files from a TFTP server

Solution 2:

First option:

UEFI 2.5 has added support for HTTP boot as mentioned by fpmurphy1. You can boot EFI images or ISO9660 disk image.

UEFI HTTP boot can be configured via DHCP option 67 or via UEFI firmware menu. This is documented at: https://github.com/tianocore/tianocore.github.io/wiki/HTTP-Boot

2nd option Use PXE from UEFI and load via DHCP/TFTP any EFI binaries.

3rd option Use 2nd option to load iPXE network boot loader. Compile bin-x86_64-efi/snponly.efi

git clone https://github.com/ipxe/ipxe.git
cd ipxe/src/
make bin-x86_64-efi/snponly.efi

Then use iPXE which is very flexible. It allows to have access to HTTP, HTTPS, FTP, iSCSI, FCoE, AOE. See: http://ipxe.org/ , http://networkboot.org/ for an explanation of net booting, and https://rom-o-matic.dev/ to generate custom iPXE images.

You can chainload iPXE via UEFI HTTP boot using DHCP: http://ipxe.org/appnote/uefihttp