无法打开 \EFI\Microsoft\Boot\grubx64.efi

无法打开 \EFI\Microsoft\Boot\grubx64.efi

我有一台预装了 Windows 的笔记本电脑。我把它抹掉了,然后安装了初级linux 发行版。几个月后,我在另一个分区安装了 ubuntu 版本,因此实现了双 linux 启动。

从此以后,我一直无法摆脱启动时出现的这条消息:

Booting in insecure mode
Failed to open \EFI\Microsoft\Boot\grubx64.efi - 80000000000000E
Failed to load image
Failed to open \EFI\Microsoft\Boot\MonkManager.efi - 80000000000000E
Failed to load image

我检查了 Efi 分区,它看起来像:

EFI/
    BOOT/
        bootx64.efi
        bootx64.efi.grb
    Microsoft/
        Boot/
            bootmgfw.efi
            bootmgfw.efi.grb
            bootx64.efi
            bootx64.efi.grb
    ubuntu/
        grub.cfg
        grub64.efi
        MokManager.efi
        shimx64.efi

我已使用过多次启动修复但并未解决问题。

提到我能够启动这样做:

  • 启动时按 ESC 显示 BIOS 选项
  • 按 F9:启动设备选项
  • 它通过手动选择以下之一来启动:
    • ubuntu(由于某些原因,此选项重复)
    • 初级
  • 它无法启动并显示上述这些选项的错误:
    • 操作系统启动管理器
    • EFI HDD 设备
    • rEFInd 启动管理器(也许我很久以前就安装过它,不记得了)
    • 从 EFI 文件启动(这向我显示:NO VOLUME LABEL.通过单击,我可以导航到上面描述的 efi 分区,并查看 Microsoft、ubuntu 和 boot 的不同目录
    • 笔记本硬盘(这个启动grub,我不知道如何使用它)

我离开 Linux 已经有一段时间了,有没有什么办法可以解决这个问题?我原本打算清理机器,所以如果有解决方案可以删除我所有的安装,那我就可以接受(但如果不需要这样做就更好了)。

我很清楚这一点类似问题但对我没什么帮助,也许这是一个不同的问题。

编辑: 从 Live CD启动sudo efibootmgr -v,结果如下:

BootCurrent: 0007
Timeout: 0 seconds
BootOrder: 0002,3002,0001,0003,0005,0006,0008,2001,2002,2003
Boot0000* Notebook Hard Drive   BIOS(2,500,00)................-.j.......j.A.j........................................
Boot0001* ubuntu    HD(4,749f000,2f800,4aec4607-34ba-4fa3-451d-befd65c8d660)File(\EFI\ubuntu\shimx64.efi)
Boot0002* Windows Boot Manager  HD(4,749f000,2f800,4aec4607-34ba-4fa3-451d-befd65c8d660)File(\EFI\Microsoft\Boot\bootmgfw.efi)RC
Boot0003* EFI HDD Device (SAMSUNG MZMPC128HBFU-000H1)   ACPI(a0341d0,0)PCI(1f,2)SATA(1,0,0)HD(1,800,100000,3ef48298-b7e8-459f-8189-134862cd346b)RC
Boot0004* USB Hard Drive - Generic Flash Disk   BIOS(7,500,00).......................................................................
Boot0005* elementary    HD(4,749f000,2f800,4aec4607-34ba-4fa3-451d-befd65c8d660)File(\EFI\elementary\grubx64.efi)
Boot0006* rEFInd Boot Manager   HD(4,749f000,2f800,4aec4607-34ba-4fa3-451d-befd65c8d660)File(\EFI\refind\shimx64.efi)
Boot0007* USB Hard Drive (UEFI) - Generic Flash Disk    ACPI(a0341d0,0)PCI(1d,0)USB(0,0)USB(0,0)HD(1,2,7adffe,00000000)RC
Boot0008* Ubuntu    HD(4,749f000,2f800,4aec4607-34ba-4fa3-451d-befd65c8d660)File(\EFI\ubuntu\grubx64.efi)RC
Boot2001* USB Drive (UEFI)  RC
Boot3002* Internal Hard Disk or Solid State Disk    RC

答案1

如果你的计算机尽管出现这些错误但仍能正确启动,别理他们!!!!!!!!!!!!!!!!!!!!

基本上,解决这个问题需要篡改非常您的安装中一个微妙且至关重要的部分——即您的引导加载程序配置。您可能会修复该问题,但至少您最终可能会创建一个很多更大的问题。修复一个微不足道的外观问题真的值得冒造成严重损坏甚至可能导致计算机根本无法启动的风险吗?

如果你真的想冒险,我建议你打开终端并输入sudo efibootmgr -v。这将产生类似这样的输出:

$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0003,0007,2003,0001,2001,2002
Boot0000* rEFInd (direct)   ACPI(a0341d0,0)PCI(1f,2)03120a00010000000000HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\refind\refind_x64.efi)
Boot0001* Lenovo Recovery System    HD(3,276800,1f4000,de3b7563-97f5-48c6-ab7f-2f5d6d57c644)File(\EFI\Microsoft\Boot\LrsBootMgr.efi)RC
Boot0002* EFI Network 0 for IPv4 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)IPv4(0.0.0.0:0<->0.0.0.0:0,0, 0RC
Boot0003* ubuntu    HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\shimx64.efi)
Boot0004* EFI Network 0 for IPv6 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)030d3c000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000RC
Boot0007* Windows Boot Manager  HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)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.}....................
Boot2001* EFI USB Device    RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network   RC

检查该行。它告诉您固件尝试以下BootOrder各种选项的设置顺序。在我的例子中,它首先尝试(; ),然后是(; ),依此类推。很有可能,您的固件首先尝试启动或的副本。这失败是因为缺少 Shim 的支持文件,因此固件转到下一个项目,这确实有效。(这是一个有根据的Boot####Boot0000rEFInd (direct)\EFI\refind\refind_x64.efiBoot0003ubuntu\EFI\ubuntu\shimx64.efishimx64.efishim.efi\EFI\Microsoft\Boot猜测就我而言;我可能错了,这是继续进行的危险之一!)改变变量可能会解决这个问题。您可以使用选项来BootOrder执行此操作,例如:-oefibootmgr

sudo efibootmgr -o 0003,0000,0007,2003,0001,2001,2002

在此示例中,我指定了一个新的启动顺序,将原始条目的前两项交换。在我的计算机上,结果是 Ubuntu 的 GRUB 取代 rEFInd 成为主要启动程序。您的系统几乎肯定会有一组与我的不同的条目和启动顺序,因此您需要调整条目以匹配。另外,不要只是随意交换东西;花点时间阅读并理解您正在做什么。您指定为第一项的条目应该是一个有效的引导程序。(该BootCurrent条目应该放在第一位,相对安全。)不了解您正在做什么会efibootmgr大大增加您指定不起作用的引导顺序的可能性,这当然意味着计算机无法启动!这就是为什么我仍然建议你忽略这个小小的外观问题——除非你知道自己在做什么,否则你就会冒着让事情变得很多更差!


编辑:鉴于efibootmgr输出,我的建议是将 0001 移动到启动顺序的开始,如下所示:

sudo efibootmgr -o 0001,0002,3002,0003,0005,0006,0008,2001,2002,2003

如果事情安排合理,这应该让它正常工作;但是,我不能保证这一点。从证据中可以清楚地看出,该系统有过去安装的遗留问题,而且不清楚到底是什么导致了所报告的症状。这只是我的猜测,它会Boot0001正常工作。

此外,Pilot6 错误地指出,弄乱启动顺序的风险“并不严重”——或者充其量,我们对“并不严重”有不同的看法。我见过很多人发帖说,他们删除了错误的启动项或以不适当的方式重新排列了启动顺序,导致系统无法启动。对于像我这样的专家来说,这些问题很容易解决;但对于普通人来说,这可能是一次痛苦的经历。

相关内容