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.
- 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
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.