![UEFI 检测(ESP)](https://linux22.com/image/1467058/UEFI%20%E6%A3%80%E6%B5%8B%EF%BC%88ESP%EF%BC%89.png)
UEFI 启动管理器是否检测到ESP在里面谷氨酰胺磷酸酶在每个存储设备上,基于存储在 NVRAM 中的全局变量(引导配置)?
阅读UEFI 启动来自维基百科:
与 BIOS 不同,UEFI 不依赖于引导扇区,而是将引导管理器定义为 UEFI 规范的一部分。当计算机通电时,引导管理器会检查引导配置,并根据其设置加载和执行指定的操作系统加载程序或操作系统内核。引导配置是一组存储在 NVRAM 中的全局变量,包括指示操作系统加载程序或内核路径的引导变量,这些变量作为 UEFI 应用程序的组件类,以文件形式存储在固件可访问的 EFI 系统分区 (ESP) 上。
UEFI 依赖于“启动管理器“检查配置(存储在 NVRAM 中的一组全局变量),此配置包括指示 OS 加载程序/内核路径的引导变量,它们是“UEFI 应用程序”(以文件形式存储在ESP- 又名使用 FAT(12|16|32) 文件格式的 GPT 分区(1))
看看启动管理器部分UEFI 规范:
GPT 布局:
包含 ESP 的 GPT:
说明书第 117、118 页上的图片
答案1
UEFI 启动管理器从 EFI 变量(存储在 NVRAM 中)读取其配置。根据配置的条目和配置的启动顺序,它很可能会在每个存储设备上搜索 ESP。
例如,如果你有 2 个存储设备,每个设备都有一个通用条目,例如
PciRoot(0x0)/Pci(0x5,0x0) # or
PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
并且它们都在启动顺序中被引用,那么 UEFI 启动管理器就会探测它们静电放电。
此外,UEFI 规范并不禁止固件在每次启动时为每个新检测到的存储设备自动添加一些通用条目。因此,根据您的系统,您可能最终会默认自动检测任何检测到的存储设备上的 ESP。
UEFI 规范还允许固件发现不使用 EFI 系统分区 GUID ( ) 的 ESP C12A7328-F81F-11D2-BA4B-00A0C93EC93B
。相反,它可能只是探测谷氨酰胺磷酸酶具有 FAT 文件系统的分区和预期的文件EFI/BOOT
(例如BOOTX64.EFI
在 x86 64 位系统上):
UEFI 不会对系统中可以存在的系统分区的数量或位置施加限制。当 UEFI 固件需要时,它会通过检查分区 GUID 并验证分区的内容是否符合第 13.3.1.1 节中定义的 FAT 文件系统来发现系统分区。此外,UEFI 实现可能允许使用不使用 ESP GUID 的符合要求的 FAT 分区。分区创建者可以通过设置分区属性的位 1(参见 5.3.3)来阻止 UEFI 固件检查和使用特定分区,这将排除该分区作为潜在的 ESP。
(UEFI 规范版本 2.7 勘误表 A,第 13.3.3 节系统分区的数量和位置,第 516 页)
例如,Supermicro 和Qemu UEFI 固件做这个。