mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.1 KiB
74 lines
3.1 KiB
================================================ |
|
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 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 support in Linux |
|
===================== |
|
Booting on a platform with firmware compliant with the UEFI specification |
|
makes it possible for the kernel to support additional features: |
|
|
|
- UEFI Runtime Services |
|
- Retrieving various configuration information through the standardised |
|
interface of UEFI configuration tables. (ACPI, SMBIOS, ...) |
|
|
|
For actually enabling [U]EFI support, enable: |
|
|
|
- CONFIG_EFI=y |
|
- CONFIG_EFIVAR_FS=y or m |
|
|
|
The implementation depends on receiving information about the UEFI environment |
|
in a Flattened Device Tree (FDT) - so is only available with 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. |
|
|
|
The kernel image built with stub support remains a valid kernel image for |
|
booting in non-UEFI environments. |
|
|
|
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. |
|
|
|
When booting in UEFI mode, the stub deletes any memory nodes from a provided DT. |
|
Instead, the kernel reads the UEFI memory map. |
|
|
|
The stub populates the FDT /chosen node with (and the kernel scans for) the |
|
following parameters: |
|
|
|
========================== ====== =========================================== |
|
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. |
|
|
|
linux,initrd-start 64-bit Physical start address of an initrd |
|
|
|
linux,initrd-end 64-bit Physical end address of an initrd |
|
|
|
kaslr-seed 64-bit Entropy used to randomize the kernel image |
|
base address location. |
|
========================== ====== ===========================================
|
|
|