[LINUX] The Unified Extensible Firmware Interface (UEFI)

================================================ The Unified Extensible Firmware Interface (UEFI)

UEFI, the Unified Extensible Firmware Interface, is a specification governing the behaviours of compatible firmware interfaces. It is maintained by the UEFI Forum - http://www.uefi.org/.

UEFI, the Unified Extensible Firmware Interface, is a specification that manages the behavior of compatible firmware interfaces. It is managed by the UEFI Forum. http://www.uefi.org/.

UEFI is an evolution of its predecessor 'EFI', so the terms EFI and UEFI are used somewhat interchangeably in this document and associated source code. As a rule, anything new uses 'UEFI', whereas 'EFI' refers to legacy code or specifications.

UEFI is an evolution of its predecessor, "EFIE. In this document and related source code, the words EFI and UEFI are used interchangeably. In principle, the new one is" UEFI ". Use "EFI" for legacy code or usage.

UEFI support in Linux

Booting on a platform with firmware compliant with the UEFI specification makes it possible for the kernel to support additional features:

When you boot a platform with firmware that conforms to the UEFI specification, the kernel can take advantage of additional features.

  • UEFI Runtime Services

For actually enabling [U]EFI support, enable:

[U] To support and enable EFI Support:

The implementation depends on receiving information about the UEFI environment in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.

Implementation requires acquisition of information about the UEFI environment in the Flattened Device Tree (FDT). Therefore, enable CONFIG_OF.

UEFI stub

The "stub" is a feature that extends the Image/zImage into a valid UEFI PE/COFF executable, including a loader application that makes it possible to load the kernel directly from the UEFI shell, boot menu, or one of the lightweight bootloaders like Gummiboot or rEFInd.

"Stub" is a function that extends Image / zImage to valid UEFI PE / COFF executables, such as UEFI shell, boot menu, lightweight bootloaders like Gimmiboot and eEFInd. ..

The kernel image built with stub support remains a valid kernel image for booting in non-UEFI environments.

A kernel image that supports stiub retains the parameters required to boot in a non-UEFI environment.

UEFI kernel support on ARM

UEFI kernel support on the ARM architectures (arm and arm64) is only available when boot is performed through the stub.

UEFI kernel support on ARM architectures (arm and arm64) is only available when booting is done through stubs.

When booting in UEFI mode, the stub deletes any memory nodes from a provided DT. Instead, the kernel reads the UEFI memory map.

When the stub is booted in UEFI mode, the strub removes the memory required by the DT provided. Instead, the kernel reads the UEFIO memory mapu.

The stub populates the FDT /chosen node with (and the kernel scans for) the following parameters:

The stub sets the following parameters (and the kernel scans) on the FDT / chosen node.

========================== ====== =========================================== Name Size Description ========================== ====== =========================================== linux,uefi-system-table 64-bit Physical address of the UEFI System Table.

linux,uefi-mmap-start 64-bit Physical address of the UEFI memory map, populated by the UEFI GetMemoryMap() call.

linux,uefi-mmap-size 32-bit Size in bytes of the UEFI memory map pointed to in previous entry.

linux,uefi-mmap-desc-size 32-bit Size in bytes of each entry in the UEFI memory map.

linux,uefi-mmap-desc-ver 32-bit Version of the mmap descriptor format. ========================== ====== ===========================================


Originally, it is a part of the Linux Kernel source code, so it will be treated as GPLv2 (recognition that it should be).

https://www.kernel.org/doc/html/latest/index.html

Licensing documentation

The following describes the license of the Linux kernel source code (GPLv2), how to properly mark the license of individual files in the source tree, as well as links to the full license text.

https://www.kernel.org/doc/html/latest/process/license-rules.html#kernel-licensing

Recommended Posts

The Unified Extensible Firmware Interface (UEFI)
What is the interface for ...