双引导后,GRUB2不显示Windows 8选项

昨天,我尝试将Ubuntu 16.04双启动到我的硬盘上,为我的现有Windows 8创建了一个新的Ubuntu分区。首先,我在Windows 8中禁用了快速启动选项,但仍然没有加载GRUB,它直接转到Windows启动。 然后我做了一些研究,发现这篇文章:

Grub没有在启动时显示Windows 8.1 Ubuntu 13.10双启动

基本上,我在Windows中发出了BCDEdit命令,并输入以下代码:

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

当我重新启动时,我得到一个基本的GRUB2终端,在输入exit命令后,出现第二个Shell提示符,再次输入exit命令后,选择要引导的操作系统的GRUB2菜单最终出现…只有Ubuntu和Ubuntu内存测试作为选项,而不是Windows 8。

启动到Ubuntu后,我尝试运行Boot-repair Utility,但是显示以下错误: Legacy Mode vs. EFI session

我该如何处理这个问题? Pastebin日志在这里: https : //pastebin.com/3NHMxxFh

谢谢您的帮助!

您遇到了兼容性支持模块(CSM;又称旧式启动或BIOS模式启动)问题。 大多数现代计算机使用可扩展固件接口(EFI;通常为Unified EFI,或UEFI,即EFI版本2.x)固件。 EFI固件与从20世纪80年代到2011年主导PC行业的旧BIOS固件有根本的不同。然而,CSM提供了向后兼容层,使新的基于EFI的计算机能够启动旧操作系统。 这在某些情况下很有用,但如果使用不当,会导致一系列新问题,因为您需要知道如何控制启动模式,这可能很棘手。 即使你知道自己在做什么,也有很多模型到模型的差异,预测计算机将会做什么几乎是不可能的。 有关此主题的更多信息,请参阅CSM上的我的网页。

您的计算机似乎同时安装了BIOS模式和EFI模式的GRUB。 我怀疑 (但不是100%肯定)您的计算机当前配置为启动到EFI模式GRUB,但此版本配置错误。 退出时,会出现EFI shell提示符。 当您退出时,BIOS模式GRUB启动并使您能够启动Ubuntu。 但是,您的Windows安装在EFI模式下,并且BIOS模式GRUB无法启动EFI模式Windows。

如果我的分析是正确的,那么问题至少有两个很好的解决方案:

  • 使用rEFInd – 此方法将主引导程序从GRUB更改为rEFInd。 由于rEFInd仅为EFI,因此禁用CSM并不重要。
    1. 下载我的rEFInd启动管理器的USB闪存驱动器或CD-R版本。
    2. 从下载的文件中准备介质。
    3. 引导到rEFInd介质。 它应该显示启动Windows和Ubuntu的选项。 (可能有两个Ubuntu选项,其中一个将启动无function的GRUB,另一个将正确启动。)
    4. 测试Windows和Ubuntu引导选项。
    5. 如果你可以启动Windows和Ubuntu,启动到Ubuntu。
    6. 安装rEFInd PPA或Debian软件包。
    7. 此时,当您重新启动时,即使已拔出可移动磁盘,也应显示rEFInd。 你现在将通过rEFInd启动,绕过GRUB。 您可能想要调整rEFInd配置,但这是另一回事。
  • 在EFI模式下使用引导修复 – 此方法需要禁用CSM,或至少学习控制引导模式。 然后,您可以修复EFI模式GRUB。
    1. 启动到固件设置实用程序。
    2. 禁用您的CSM。 确切地说,如何做到这一点因机器而异。 请参阅我的CSM页面以获取一些建议。
    3. 在“安装前尝试”模式下启动Ubuntu安装盘。
    4. 打开终端窗口。
    5. 查找名为/sys/firmware/efi的目录。 如果它存在,您已启动EFI模式并可以继续; 如果它不存在,你就不能成功禁用你的CSM,应该再试一次,或者至少学会控制你的启动模式,如我的CSM页面所述。
    6. 像以前一样,下载并启动Boot Repair。
    7. 告诉Boot Repair修复您的安装。 正如您现在已在EFI模式下启动,它应该进行EFI模式修复。
    8. 重启并希望它有效。 运气好的话,你会在GRUB菜单中看到Ubuntu和Windows选项,两者都应该有效。 (不过,请参阅下面的另一个警告。)

使用那些听起来最吸引你的方法。 如果它不起作用,请使用其他方法 – 但请务必先阅读本答复的其余部分。

在上述任何一种情况下,您应该知道,如果您无法在Windows中禁用“ 快速启动”function,则双启动Windows和Ubuntu可能会产生问题 (请注意,许多EFI具有类似名称的function,但此function与Windowsfunction无关,并且麻烦少得多。)Windows快速启动function将关闭操作转换为挂起到磁盘操作,以加快后续操作靴子。 但是,这种做法会导致双引导方案中共享分区的文件系统损坏。 ESP是一个共享分区,因此Fast Startup可能会对此分区造成损害。 症状包括各种引导问题,包括无法启动GRUB,GRUB配置脚本无法检测Windows,以及即使Windows菜单出现在菜单中,GRUB也无法启动Windows。 rEFInd可能会出现类似的问题。 即使您没有遇到这些问题,也应该禁用快速启动,如本段顶部的链接所述。 如果遇到这些问题,则应禁用“快速启动”,如果使用GRUB,则可能需要键入sudo update-grub以便在禁用“快速启动”后更新其菜单。

请注意,在Windows 10中,除了快速启动之外,通常还需要禁用Hibernate 。 AFAIK,Windows 8不需要这样做。


编辑:

通常,rEFInd应该显示图形UI。 但是,如果它无法读取任何图标,则会回退到文本模式显示,就像您显示的那样。 因此,我怀疑rEFInd无法读取其图标 – 也可能不是它的文件系统驱动程序; 如果它可以读取驱动程序,您可能会看到一个直接启动Linux内核的条目。 您是否使用了CD-R或USB闪存驱动器映像,以及如何从映像准备引导介质? 可能是您执行此操作的方式存在问题,或者文件系统可能已损坏或以某种方式对您的特定固件不具吸引力。

要解决此问题,请尝试下载.zip文件,并在Linux中执行以下操作:

  1. 准备一个带有新FAT文件系统的USB闪存盘。 (您可以从手头上的东西开始,或者使用GParted或其他工具对USB驱动器进行分区。尝试使其成为跨越磁盘的分区。)最好使用GUID分区表(GPT)和FAT分区被标记为ESP( gdisk类型代码EF00或在GParted或parted设置的“引导标志”); 但如果它使用MBR并且未标记为ESP,它可能会起作用。
  2. 将rEFInd .zip文件解压缩并cd到生成的目录中
  3. 键入sudo ./refind-install --usedefault /dev/sdd1 --alldrivers ,将/dev/sdd1更改为USB闪存驱动器FAT分区的设备文件名。 这应该在磁盘上创建一个包含所有必需文件的全新rEFInd。

您应该能够使用此磁盘启动。 如果它仍然不起作用,那么一些非常奇怪的事情正在发生。 您可以尝试更改USB磁盘上的分区表格式(使用MBR而不是GPT,反之亦然)。

当然,您也可以尝试启动修复方法,而不是尝试让rEFInd工作。

使用rEFind zip存档和“编辑”部分提供的说明,我能够将rEFind刻录到USB驱动器。 从USB驱动器启动后,我看到了一个GUI界面,并能够成功启动Ubuntu和Windows。 但是,当我尝试使用Ubuntu PPA命令将rEFind永久安装到我的硬盘驱动器时,它无法被识别并直接引导到GRUB而不是rEFind。 现在,我将USB棒插入我的电脑,可以毫无问题地使用Ubuntu和Windows。 非常感谢你的帮助!