UEFI Load File Protocol in Network and Disk Booting
The UEFI Load File protocol is a fundamental firmware interface that
allows the UEFI Boot Manager to retrieve bootable images and binaries
from devices that do not expose a standard, mounted file system. This
article examines the architectural role of
EFI_LOAD_FILE_PROTOCOL and its companion
EFI_LOAD_FILE2_PROTOCOL, detailing how they facilitate
network booting mechanisms like PXE and HTTP Boot, abstract media access
on disk architectures, and streamline the execution of system
loaders.
What is the UEFI Load File Protocol?
In the UEFI architecture, the boot manager relies on protocols to
locate and execute binary images (.efi files). When a
device contains a recognized file system, such as FAT32, the firmware
utilizes the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL to traverse
directories and read files.
However, many boot targets cannot present a standard file system
hierarchy to the firmware. The EFI_LOAD_FILE_PROTOCOL
bridges this gap. It exposes a single primary method,
LoadFile(), which delegates the responsibility of locating,
downloading, or reading a binary entirely to the device driver. When the
UEFI Core function gBS->LoadImage() is invoked with a
device path, it queries the handle for
EFI_LOAD_FILE_PROTOCOL if a standard file system protocol
is absent.
The Role of Load File in Network Booting
Network booting environments—such as Preboot Execution Environment
(PXE), TFTP, and UEFI HTTP Boot—rely fundamentally on
EFI_LOAD_FILE_PROTOCOL.
- Abstracting the Network Stack: Network interfaces do not maintain persistent, block-based file systems. Instead, files must be retrieved over network protocols using IP configuration, DHCP, and transport protocols.
- Fetching the Network Bootstrap Program (NBP): When
booting from a network card, the firmware's network driver stack
installs
EFI_LOAD_FILE_PROTOCOLonto the network device handle. When the boot manager selects this network target, it callsLoadFile(). - Execution Flow: The network driver executes the required transfer (initiating a DHCP request, resolving an IP, and streaming the file via TFTP or HTTP) and places the NBP directly into system memory allocated by the caller. The boot manager then executes the binary as a standard PE/COFF image.
This mechanism ensures that the UEFI Boot Manager does not need internal knowledge of networking stacks, packet framing, or transport protocols; it only requests the payload from the driver.
The Role of Load File in Disk Booting
While local disks primarily use
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL,
EFI_LOAD_FILE_PROTOCOL and
EFI_LOAD_FILE2_PROTOCOL serve vital specialized functions
in disk-based operations:
- Raw and Custom Media Access: Storage media or
partitions lacking a UEFI-compliant file system rely on
EFI_LOAD_FILE_PROTOCOLto load kernel images or recovery payloads directly from fixed offsets or proprietary formats. - Loading Initial RAM Disks (Initrd): Modern Linux
implementations utilize
EFI_LOAD_FILE2_PROTOCOLextensively for disk-based boot flows. The Linux EFI stub provides a vendor-specific device path to locate the initrd. The boot loader or Linux kernel queriesEFI_LOAD_FILE2_PROTOCOLon this device path to pull the initrd image from the disk into memory without requiring an intermediate filesystem driver in the kernel stub. - Firmware Updates and Recovery: System recovery partitions or capsule update mechanisms often employ Load File protocols to pull payloads from hidden disk sectors or protected non-volatile storage.
Comparison: Load File vs. Simple File System
| Feature | EFI_LOAD_FILE_PROTOCOL |
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL |
|---|---|---|
| Primary Media | Network devices (PXE/HTTP), raw media, initrd | Block storage (NVMe, SATA, USB) |
| Data Access Method | Streams/loads the entire file into a buffer | Provides open, read, write, and seek operations |
| Directory Navigation | Not supported; driven by fixed Device Paths | Supported via directory structures |
| Driver Responsibility | Driver handles all transport and protocol logic | Driver only handles block translation and filesystem parsing |
Conclusion
The UEFI Load File protocol provides a uniform method for transferring control from low-level communication drivers to higher-level system software. By abstracting the transfer mechanism behind a simple memory-loading interface, it enables both complex network environments and specialized disk configurations to boot reliably through the standardized UEFI boot flow.