联想Yoga 2 Pro上的16.04双启动安装 – 启动回Windows后找不到/EFI/ubuntu/grubx64.efi

我一直在阅读其他一些线程,尤其是关于运行Windows 8.1的Lenovo Yoga 2 Pro上的双启动安装,但我似乎没有找到完全相同的问题。 我当然是新手(我第一次尝试安装Ubuntu),所以我很高兴有机会了解更多相关内容!

我为分区留出了大约60GB的空间,为交换留出了8GB的空间。 我还在/dev/sda2分区上安装了grub,这是Windows启动管理器所在的ESP。

我已经指定ubuntu / grub应该首先在BIOS Boot Menu中启动。 安全启动和Lenovo Fast Boot均已禁用。

到目前为止,一切都很顺利。 我可以启动,grub显示,允许我在Ubuntu和Windows启动管理器之间进行选择。 如果我选择Ubuntu,我可以进入Ubuntu,登录等,完全没问题。 当我选择启动Windows时,麻烦就开始了。 一旦我这样做,并尝试关闭/重新启动并启动Ubuntu,将出现以下消息:

 Failed to open /EFI/ubuntu/grubx64.efi - Not Found Failed to load image /EFI/ubuntu/grubx64.efi: Not Found start_image() returned Not Found 

我已在Windows端validation声称不存在的文件实际上位于指定的文件夹中。 使用bcdedit / enum固件检测到它们。

我也尝试过使用该命令

 bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi 

在管理员命令提示符中没有运气。

在此之后,我从USB启动并进行了启动修复,修复了GRUB …直到我再次启动回到Windows端,此时出现了同样的问题。

任何帮助将不胜感激,我将尝试提供任何其他可能有用的信息。 谢谢!

efi希望默认的引导加载程序是/efi/boot/bootx64.efi。 windows特别关注确保它的启动。

拳头关闭,从8.1上的窗口并没有真正关闭,它暂停到磁盘(像一个hibernate),以便它更快启动。 第二,它改变EFI以在引导顺序中首先进入条目0000(窗口)。

解决方法:将grubx64.efi重命名为bootx64.efi,然后替换文件efi / boot / bootx64.efi。这使得grub成为默认的引导加载程序。

第二:在ubuntu中时,使用efibootmgr删除所有efi条目。 并重新启动计算机。 确保你启动的第一个系统是ubuntu,以便将它放在条目0000中。然后启动windows。

Failed to openFailed to load image ,并且start_image() returned Not Found消息来自Shim。 (您可以检查源代码;它们位于shim.c文件中。)通常,在基于EFI的计算机上启动Ubuntu时,系统会启动Shim( shimx64.efi ),这是Ubuntu处理Secure的方式引导。 然后Shim程序启动GRUB( grubx64.efi )。 这些错误消息表明Shim已启动,但GRUB不存在 – 或无法读取。 你写了:

我已在Windows端validation声称不存在的文件实际上位于指定的文件夹中。

这表明grubx64.efi存在,但Shim无法读取。 对于Windows看到的内容与EFI看到的内容之间的差异,最可能的解释是您启用了Windows快速启动和/或Hibernatefunction。 这些function将Windows关闭操作转换为挂起到磁盘操作,以加快下次启动速度。 问题是此function可能使文件系统(包括ESP上的文件系统)处于不一致状态。 这反过来会对EFI从ESP读取文件的能力造成严重破坏 – 某些文件似乎随机消失。 作为一般规则,EFI FAT文件系统驱动程序似乎不像Windows或Linux中的FAT驱动程序那样健壮,因此Windows中的文件可能看起来不错但对EFI来说是不可读的。

解决方案是分别禁用Windows快速启动和Hibernatefunction,如此处和此处所述。

文件系统损坏也可能以其他方式出现,但Windows驱动程序碰巧能够解决问题,而EFI驱动程序却无法解决问题。 在ESP上运行磁盘检查工具(如Ubuntu中的dosfsck或Windows中的CHKDSK )可能会解决问题。 在极端情况下,备份,创建新文件系统以及恢复它可能是必要的。

请注意,ravery的解决方案只是一个创可贴 – 而且是一个有风险的解决方案。 (在删除所有固件的引导条目后,我看到至少有一台计算机开始EFI/BOOT/bootx64.efi 。)将GRUB复制到EFI/BOOT/bootx64.efi的备用文件名可能在某些情况下有效(因为它显然在你的),但在没有适当的EFI启动变量的情况下,一些EFI将支持Windows引导加载程序而不是后备启动加载程序。 更糟糕的是,因为ravery的解决方案没有解决问题的根本原因,它可能会再次出现,或者可能会发生一些其他文件系统损坏,这可能会导致其他问题。 (幸运的是,ESP上的文件数量相对较少,因此您可能无法使用完全破坏的系统; Windows和Ubuntu恢复工具可以恢复损坏的ESP文件。)

有关EFI系统如何启动的更多信息,除了使用回退文件名之外,请参阅:

  • Adam Williamson关于EFI如何工作的博客文章 – 本页描述了EFI模式启动背后的理论。
  • 有关Superuser.com上BIOS和EFI启动之间差异的问答 – 这提供了前面的基础知识,但更简洁。
  • 我在EFI系统上安装Linux的页面 – 这个页面是比Adam Williamson的博客更实用的EFI模式启动介绍。
  • UEFI上的Ubuntu社区wiki条目 – 这个页面有点脱节,但是对于EFI及其问题,它是Ubuntu特定的介绍。