是否有默认的 EFI 文件设置之类的东西。我有一个装有 Linux 的磁盘驱动器,还有多个 efi 文件。我的电脑无法启动它。我还有另一个装有 Windows 的磁盘驱动器,还有多个 efi 文件甚至文件夹。uefi 如何决定启动哪一个。是它遇到的第一个还是什么?编辑:修复拼写错误
答案1
它将路径存储在主板的 NVRAM(仍称为“CMOS 内存”)中。
详细信息可在免费提供的UEFI 规范(第 3 节)。EFI NVRAM 包含以下列表:启动选项变量名为Boot####
(例如 Boot0001、Boot0002),每个变量都存储单个 .efi 文件的精确路径 - 包括分区的 GUID。
$ efibootmgr
BootCurrent: 0000
BootOrder: 0000,000F,0001
Boot0000* Linux Boot Manager
HD(1,GPT,760e363e-[...],0x800,0x80000)/File(\EFI\systemd\systemd-bootx64.efi)
Boot0001* Windows Boot Manager
HD(1,GPT,760e363e-[...],0x800,0x80000)/File(\EFI\Microsoft\Boot\Bootmgfw.efi)
启动选项不是按数字顺序使用的,而是按变量指定的顺序使用的BootOrder
。(操作系统也可以设置BootNext
为请求 EFI 重新启动一次直接进入其中一个启动选项,或者可以设置OsIndications
请求重新启动进入 UEFI 设置屏幕。)
您可以使用以下方法查看与启动相关的 EFI 变量:
在 Linux 上:(
efibootmgr
旧版本需要efibootmgr -v
)(您也可以通过 /sys/firmware/efi/efivars/ 列出所有 EFI 变量。)
在 Windows 上:
bcdedit /enum firmware
请注意,bcdedit 输出使用 Windows BCD 特定的术语,并且一切看起来都与实际的 EFI 变量完全不同,但每个条目仍然代表一个“Boot####”项 - 除了 {fwbootmgr},其“displayorder”参数代表“BootOrder”。
在里面电喷外壳:
bcfg boot dump
如果你从可移动介质启动(NVRAM 当然不知道)——或者如果你从内部磁盘启动,但 BootOrder 选项都不起作用——固件将寻找一每个 EFI 系统分区中的特定路径 – 始终\EFI\Boot\BootX64.efi
在 x86_64 系统上。(“3.5.1.1 可移动媒体启动行为”部分列出了每个 CPU 架构的名称。)
大多数操作系统安装程序都会将其引导加载程序的副本放置在 \EFI\Boot\BootX64.efi 中,以确保系统仍能启动到某物即使 NVRAM 数据丢失。
(最后……一些固件会自动查找\EFI\Microsoft\Boot\Bootmgfw.efi
,因为 Windows 启动管理器就位于此处。如果幸运的话,固件将使用它作为第二条后备路径。然而,有些 UEFI 主板坚持只使用此路径,并拒绝启动 Windows 以外的任何其他程序。)