UefiPayloadPkg - lersek/edk2 GitHub Wiki

UEFI Payload

UEFI Payload is an EDK II based project to enable UEFI support for bootloaders like Slim Bootloader and coreboot.

Note: this package replaces CorebootModulePkg and CorebootPayloadPkg, which were deprecated for the 201905 stable tag release.

Overview

The Unified Extensible Firmware Interface (UEFI) specification defines interfaces for firmware modules interoperability and provides an interface for the operating systems to consume firmware services. EDK II is a modern, feature-rich, cross-platform firmware development environment that implements UEFI.

UEFI Payload is an EDK II based project to enable UEFI support for bootloaders like Slim Bootloader and coreboot. Bootloaders follow a modular approach for platform initialization (initialization stages) and OS boot logic (payload). The separation of platform initialization and boot logic allows the choice of different payloads. UEFI Payload relies on the underlying boot firmware to initialize the platform and consumes the platform initialization information to be platform agnostic as much as possible.

UEFI Payload components

Comparing with bootloader that focuses on platform specific initialization, UEFI Payload focuses on boot logic using platform independent drivers. The platform specific information, e.g. memory map info and serial port settings, could be retrieved from bootloader to feed into generic drivers in UEFI Payload.

The way to get platform information from bootloader is to use the ParseLib. It gets information from bootloader and builds HOBs for the UEFI payload modules.

ParseLib instance SblParseLib is used to parse information from Slim Bootloader and ParseLib instance CbParseLib is used to parse information from coreboot.

Build and Integration

UEFI payload provides a generic payload for bootloaders to boot UEFI OS. In an ideal case, UEFI payload does not require any customization or any platform porting and can boot on different platforms by consuming the platform information from the bootloader.

Building the UEFI payload is similar to building other EDK II platforms. See BuildAndIntegrationInstructions.txt for more details.