Ray
Is there any more information on “Payload Image Extend Header”? This is mentioned, but I don’t see detailed information.
-Jaben
From: devel@edk2.groups.io <devel@edk2.groups.io>
On Behalf Of Ni, Ray
Sent: Thursday, October 22, 2020 6:18 PM
To: devel@edk2.groups.io
Cc: Zimmer, Vincent <vincent.zimmer@intel.com>; Ma, Maurice <maurice.ma@intel.com>; Rangarajan, Ravi P <ravi.p.rangarajan@intel.com>; Dong, Guo <guo.dong@intel.com>; Hau, Tze-ming <tze-ming.hau@intel.com>; Ni, Ray <ray.ni@intel.com>
Subject: [edk2-devel] RFC: Universal Payload Interface
With the fact that there are many different firmware implementations, we tried to decouple today’s monolithic UEFI firmware binary to two independent components: bootloader and payload.
Basically, bootloader initializes the silicon hardware and payload prepares the OS required data and services. Bootloader passes control to payload.
https://universalpayload.github.io/documentation/spec/spec.html defines the universal interface between bootloader and payload. So that different bootloaders
can work with different payloads, initializing different hardware and booting different OSes.
The interface document is in very draft phase. Any feedback is welcome.
We also developed the POC code to demonstrate the idea. Please use below steps to get the code that uses SBL as the bootloader and EDKII UEFI Payload as the payload. This POC is being developed for QEMU Q35 virtual machine.
This step downloads the initial tools that will setup the dev environment.
This script downloads branched SBL (https://github.com/universalpayload/slimbootloader.git) and edk2 (https://github.com/universalpayload/edk2.git).
Then it builds the firmware binary “SlimBootloader.bin” in “codeworkspace” directory.
Because the code is under active development, please contact us when you cannot build or boot successfully.
Besides the SBL, we modified coreboot (https://github.com/universalpayload/coreboot.git) to let it conform to the universal interface as a bootloader.
Besides the EDK2 UEFI Payload, we created a payload (https://github.com/universalpayload/linuxpayload.git) that can boot Linux.
Thanks,
Ray