“efibootmgr -v”输出的解释

“efibootmgr -v”输出的解释

我正在尝试使用命令确定 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 获得的输出。

相关内容