SBL payload stage is to boot a target OS. It is a modular design to extend bootloader to perform a purpose-driven functionality that is generally independent of platform hardware.


Os Loader (Built-in)
A versatile linux loader implementation that boots Linux, hypervsior, Android, or ELF executable, PE executables. It supports MultiBoot specification
Firmware Update Payload (Built-in)
A special purpose payload to update full boot flash in a secure and fault-tolerant flow.
UEFI Payload (External)
A EDK II based payload implementation to boot Windows. It provides secure boot, SMM, and UEFI runtime services.
Custom Payload
SBL supports launching customized payloads that provides purpose-driven functionality.

Payload Types

Tightly Coupled
Implementation depends on SBL source code to build. It requires platform specific libraries.
Loosely Coupled
Implementation can either be self-contained or depends on libraries in BootloaderCommonPkg and PayloadPkg. The platform abstraction is provided through Hand-off-Blocks (HOB) data structures. These payloads are platform agnostic.

Multiple Payload Support

In some use cases, more than one payload is necessary in SBL. However, it is difficult to fit all payloads into limited flash device. For example, UEFI payload image can be over 1MB in size. This feature is designed to support multiple payloads, allowing built-in payload (OsLoader) reside in redundant region, while the external payloads in non-redundant region.

See Integrating Multiple Payloads into SBL for more details.

See Creating New Payload for more details.