解释我的“efibootmgr -v”输出

我正在尝试使用命令sudo 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:00.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...BCDOBJECT=.{.9.dea8.6.2.c.-.5.cdd-.4.e.7.0.-.acc1.-.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. 

我打算把它们排除在外,因为一些早期的行提到了后面的行。 输出的大部分是Boot####行,它们描述了引导选项。

 Boot0000 Setup Boot0001 Boot Menu Boot0002 Diagnostic Splash 

您的示例输出包含大量此类选项,这些选项具有名称但无需进一步详细说明。 这些可能是您特定固件的内置选项。 在您的情况下,前三个似乎是进入固件设置菜单,启动内置启动管理器和显示诊断启动屏幕的选项 – 但实际上,没有办法确定它们是什么,至少不是单独从efibootmgr输出。

Boot字符串后面的数字是hex的,任何给定的数字都没有什么特别之处 – 也就是说, 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系统上的回退引导加载程序文件( EFI/BOOT/bootx64.efi ,至少在x86-64系统上)分区(ESP)。 与BIOS一样,EFI不使用嵌入在磁盘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...BCDOBJECT=.{.9.dea8.6.2.c.-.5.cdd-.4.e.7.0.-.acc1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................ 

这些条目都标识存储在硬盘上的EFI引导加载程序。 它们的语法略有不同 – 请注意,第一个以ACPI(...)PCI(...)条目开头,就像之前的那样,而第二个使用HD(...)标识符。 后者包括分区的GUID以及其他一些标识。 两个条目都包含文件名( File(...) )。 Windows条目最后包含更多类似于乱码的数据,但在这种情况下,它是一个UTF-16字符串,作为选项传递给引导加载程序。

您的示例包含大量条目。 许多EFI会产生更短的列表 – 例如,它们可能缺少内置选项或PXE从网络引导的选项。 OTOH,有时您会看到其他选项,例如引用BIOS模式启动的条目。 值得注意的是,您的列表中没有一个用于启动Ubuntu的条目。 这是我的一台电脑上的这样一个条目:

 Boot000D* ubuntu HD(1,800,112800,a8d39218-44ce-455b-8735-919754df131d)File(\EFI\UBUNTU\GRUBX64.EFI)..BO 

正如您所看到的,这在基本forms上与Windows引导加载程序的条目非常相似,但当然细节不同。 您的示例可能缺少Ubuntu条目,因为您还没有安装Ubuntu,因为您在BIOS / CSM / legacy模式下安装了Ubuntu(一个错误),因为您的EFI是错误的,因此efibootmgr无法添加条目,或者因为您在创建条目后明确删除了该条目。 如果您遇到启动问题,我建议您提出其他问题并提供详细信息。

其余条目遵循这些模式。 现在,备份到开始……

 ubuntu@ubuntu:~$ sudo efibootmgr -v BootCurrent: 0008 

BootCurrent行标识用于引导计算机的条目。 在这种情况下,它是Boot0008 ,它是我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),依此类推。

您可以使用以下命令获取efibootmgr软件包的详细说明:

  man efibootmgr 

它详细解释了您从efibootmgr获得的输出。