统一可扩展固件接口 (UEFI)¶
UEFI,统一可扩展固件接口,是一个管理兼容固件接口行为的规范。它由 UEFI 论坛维护 - http://www.uefi.org/。
UEFI 是其前身“EFI”的演变,因此 EFI 和 UEFI 这两个术语在本文档和相关源代码中可以互换使用。一般来说,任何新的事物都使用“UEFI”,而“EFI”指的是遗留代码或规范。
Linux 中的 UEFI 支持¶
在符合 UEFI 规范的固件平台上启动,使内核能够支持其他功能
UEFI 运行时服务
通过 UEFI 配置表的标准化接口检索各种配置信息。(ACPI, SMBIOS, ...)
要实际启用 [U]EFI 支持,请启用
CONFIG_EFI=y
CONFIG_EFIVAR_FS=y 或 m
该实现取决于在扁平化设备树 (FDT) 中接收有关 UEFI 环境的信息 - 因此仅在 CONFIG_OF 可用时才可用。
UEFI stub¶
“stub”是一项功能,它将 Image/zImage 扩展为有效的 UEFI PE/COFF 可执行文件,包括一个加载器应用程序,该应用程序使可以直接从 UEFI shell、引导菜单或 Gummiboot 或 rEFInd 等轻量级引导加载程序加载内核。
使用 stub 支持构建的内核镜像仍然是一个有效的内核镜像,可以在非 UEFI 环境中启动。
ARM 上的 UEFI 内核支持¶
仅当通过 stub 执行引导时,ARM 架构(arm 和 arm64)上的 UEFI 内核支持才可用。
在 UEFI 模式下启动时,stub 会从提供的 DT 中删除任何内存节点。 相反,内核读取 UEFI 内存映射。
stub 使用以下参数填充 FDT /chosen 节点(内核扫描)
名称 |
类型 |
描述 |
---|---|---|
linux,uefi-system-table |
64位 |
UEFI 系统表的物理地址。 |
linux,uefi-mmap-start |
64位 |
UEFI 内存映射的物理地址,由 UEFI GetMemoryMap() 调用填充。 |
linux,uefi-mmap-size |
32位 |
先前条目中指向的 UEFI 内存映射的大小(以字节为单位)。 |
linux,uefi-mmap-desc-size |
32位 |
UEFI 内存映射中每个条目的大小(以字节为单位)。 |
linux,uefi-mmap-desc-ver |
32位 |
mmap 描述符格式的版本。 |
kaslr-seed |
64位 |
用于随机化内核镜像基地址位置的熵。 |
bootargs |
字符串 |
内核命令行 |