我正在尝试使用命令确定 EFI 启动记录在我的 Lenovo U41o 上的位置sudo efibootmgr -v
。
有人能给我解释一下吗?
$ sudo efibootmgr -v
BootCurrent: 0008
Timeout: 0 seconds
BootOrder: 0010,0003,0004,0005,0006,0008,0007,0009,000A,000B,001D
Boot0000 Setup
Boot0001 Boot Menu
Boot0002 Diagnostic Splash
Boot0003* ATA HDD2: WDC WD5000LPVT-08G33T1 ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000..bYVD.A...O.*..
Boot0004* ATA SSD1: SanDisk SSD U100 24GB ACPI(a0341d0,0)PCI(1f,2)03120a00000000000000..bYVD.A...O.*..
Boot0005* RAID DEVICE2: 030a2500d23878bc820f604d8316c068ee79d25ba5388f9ca46ace40bf2f0ade9bc05d6d01
Boot0006* RAID DEVICE1: 030a2500d23878bc820f604d8316c068ee79d25ba5388f9ca46ace40bf2f0ade9bc05d6d00
Boot0007* ATAPI CD: 030a2400d23878bc820f604d8316c068ee79d25baea2090adfde214e8b3a5e471856a354
Boot0008* USB HDD: SanDisk Cruzer Edge ACPI(a0341d0,0)PCI(1a,0)USB(0,0)USB(0,0)3.!..3.G..A.....
Boot0009* USB FDD: 030a2400d23878bc820f604d8316c068ee79d25b6ff015a28830b543a8b8641009461e49
Boot000A* USB CD: 030a2400d23878bc820f604d8316c068ee79d25b86701296aa5a7848b66cd49dd3ba6a55
Boot000B* PCI LAN: EFI Network (IPv4) ACPI(a0341d0,0)PCI(1c,1)PCI(0,0)MAC(089e01381698,0)IPv4(0.0.0.0:0<->0.0.0.0:0,0, 0x.J.+*.N.....=8.
Boot000C* Lenovo Recovery System ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000HD(3,276800,1f4000,26c6992a-07b8-43bc-98b8-d8c83e64db3b)File(\EFI\Microsoft\Boot\lrsBootMgr.efi)
Boot0010* Windows Boot Manager HD(2,1f4800,82000,72931328-061b-42e0-8fd8-8a5ac7775074)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................
Boot0014 Setup
Boot0015 Boot Menu
Boot0016 Diagnostic Splash
Boot001C* Lenovo Recovery System ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000HD(3,276800,1f4000,26c6992a-07b8-43bc-98b8-d8c83e64db3b)File(\EFI\Microsoft\Boot\lrsBootMgr.efi)
Boot001D* PCI LAN: EFI Network (IPv6) ACPI(a0341d0,0)PCI(1c,1)PCI(0,0)MAC(089e01381698,0)030d3c000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000x.J.+*.N.....=8.
答案1
我将把这些内容打乱顺序,因为前面的几行引用了后面的几行。输出的大部分Boot####
内容是描述启动选项的行。
Boot0000 Setup
Boot0001 Boot Menu
Boot0002 Diagnostic Splash
您的示例输出包含大量类似这样的选项,这些选项有名称但没有进一步说明。这些可能是您特定固件上的内置选项。就您而言,前三个选项似乎是进入固件设置菜单、启动内置引导管理器和显示诊断启动画面的选项——但实际上,没有办法确切知道它们是什么,至少不能efibootmgr
仅从输出中知道。
字符串后面的数字Boot
是十六进制的,任何给定的数字都没有什么特殊之处 —— 也就是说,Boot0000
不是为任何特定功能保留的,也不是为Boot0001
其他任何功能保留的。当程序创建新的启动条目时,会分配这些数字,这些分配本质上是没有意义的。(至少,除非有错误;我知道有些错误会使固件偏向于编号较低的启动条目。)
Boot0003* ATA HDD2: WDC WD5000LPVT-08G33T1 ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000..bYVD.A...O.*..
Boot0004* ATA SSD1: SanDisk SSD U100 24GB ACPI(a0341d0,0)PCI(1f,2)03120a00000000000000..bYVD.A...O.*..
这两个选项描述了特定的设备。Boot####
字符串后面是描述是至少在某种程度上是人类可解释的——你可以看出这是两个磁盘设备。ACPI(...)
和PCI(...)
字符串标识硬件,除非与其他硬件信息交叉检查,否则人类无法轻易解释这些信息。 然后是一些乱码,它们是条目的编码数据,人类可能很容易读取也可能不容易读取。 在这种情况下,它显然不容易被人解释。
在大多数情况下,当您看到类似这样的引用磁盘设备的条目时,该引用实际上是指EFI/BOOT/bootx64.efi
磁盘 EFI 系统分区 (ESP) 上的后备引导加载程序文件(至少在 x86-64 系统上)。EFI 不像 BIOS 那样使用嵌入在磁盘 MBR 中的引导加载程序。
Boot0005* RAID DEVICE2: 030a2500d23878bc820f604d8316c068ee79d25ba5388f9ca46ace40bf2f0ade9bc05d6d01
Boot0006* RAID DEVICE1: 030a2500d23878bc820f604d8316c068ee79d25ba5388f9ca46ace40bf2f0ade9bc05d6d00
Boot0007* ATAPI CD: 030a2400d23878bc820f604d8316c068ee79d25baea2090adfde214e8b3a5e471856a354
这些显然是更多硬件条目。我不认识这些条目的格式。您可以忽略长字符串;只需知道它们指的是硬件设备即可。
我在这里省略了一些条目,因为它们大体相同......
Boot000B* PCI LAN: EFI Network (IPv4) ACPI(a0341d0,0)PCI(1c,1)PCI(0,0)MAC(089e01381698,0)IPv4(0.0.0.0:0<->0.0.0.0:0,0, 0x.J.+*.N.....=8.
这是磁盘条目的变体,但该条目标识网络设备。请注意,它包含 MAC 地址 ( MAC(...)
) 并指定使用 IPv4 ( IPv4(...)
)。如果要启动此条目,计算机将尝试从网络服务器进行 PXE 启动。
Boot000C* Lenovo Recovery System ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000HD(3,276800,1f4000,26c6992a-07b8-43bc-98b8-d8c83e64db3b)File(\EFI\Microsoft\Boot\lrsBootMgr.efi)
Boot0010* Windows Boot Manager HD(2,1f4800,82000,72931328-061b-42e0-8fd8-8a5ac7775074)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................
这些条目都标识存储在硬盘上的 EFI 引导加载程序。它们的语法略有不同 - 请注意,第一个条目以和条目开头ACPI(...)
,PCI(...)
就像之前的条目一样,而第二个条目使用HD(...)
标识符。后者包括分区的 GUID 以及一些其他标识。两个条目都包含一个文件名 ( File(...)
)。Windows 条目在末尾包含更多类似乱码的数据,但在这种情况下,它是一个作为选项传递给引导加载程序的 UTF-16 字符串。
您的示例包括一个很多条目。许多 EFI 生成的列表要短得多——例如,它们可能缺少内置选项或用于从网络进行 PXE 启动的选项。另一方面,有时您会看到其他选项,例如引用 BIOS 模式启动的条目。值得注意的是,您的列表中缺少用于启动 Ubuntu 的条目。这是我的一台计算机上的此类条目:
Boot000D* ubuntu HD(1,800,112800,a8d39218-44ce-455b-8735-919754df131d)File(\EFI\UBUNTU\GRUBX64.EFI)..BO
如您所见,这在基本形式上与 Windows 引导加载程序的条目非常相似,尽管细节当然有所不同。您的示例可能缺少 Ubuntu 条目,因为您尚未安装 Ubuntu,因为您以 BIOS/CSM/旧模式安装了 Ubuntu(一个错误),因为您的 EFI 存在错误,因此efibootmgr
无法添加条目,或者因为您在创建条目后明确删除了条目。如果您遇到启动问题,我建议您提出另一个问题并提供详细信息。
其余条目遵循这些模式。现在,回到开头……
ubuntu@ubuntu:~$ sudo efibootmgr -v
BootCurrent: 0008
该BootCurrent
行标识了用于启动计算机的条目。在本例中,它是Boot0008
,我将其截断,但它标识了一个 USB 闪存驱动器 - 您使用存储在该驱动器上的后备引导加载程序进行启动。
Timeout: 0 seconds
此行标识 EFI 内置启动管理器的超时。实际上,它可能意味着什么,也可能不意味着什么。
BootOrder: 0010,0003,0004,0005,0006,0008,0007,0009,000A,000B,001D
此行标识了尝试启动项的顺序。在这种情况下,EFI 将尝试使用Boot0010
(Windows 启动管理器)进行启动。如果该条目标识了不存在的设备或文件,或者启动程序返回,则固件将尝试Boot0003
(您的 Western Digital 硬盘)。如果该条目失败,它将尝试Boot0004
(您的 SanDisk SSD),依此类推。
答案2
您可以使用以下命令获取 efibootmgr 包的详细说明:
man efibootmgr
它详细解释了您从 efibootmgr 获得的输出。