Grub 更新后 Windows 10 无法启动

Grub 更新后 Windows 10 无法启动

在 Ubuntu 更新似乎升级了 Grub 之后,我无法启动 Windows 10。我最初在尝试启动 Windows 时收到错误“签名无效”。过去,当我遇到此问题时,我会启动 Ubuntu Live CD,运行启动修复,这修复了 Grub 中的 Windows 启动项。但是现在,我已经尝试了多次启动修复,尝试了不同的选项。我有一个 /boot/EFI 分区。在 UEFI 中,我重新启用了 CSM 并禁用了安全启动。我安装了 rEFInd,但我不记得安装过它。我认为 Ubuntu 和 Windows 10 是在 UEFI 模式下安装的。当我在 Grub 中选择 Windows 选项时,它会转到 rEFInd 引导加载程序,其中没有启动 Windows 的选项。rEFInd 中的选项如下,它们都启动到 Ubuntu:

EFI/ubuntu/grubx64.efi 启动/vmlinuz-4.4.0-97-generic.efi

Ubuntu 和 Windows 安装在同一个 NVME 驱动器的不同分区上。EFI 分区也在那里。这是上次启动修复的结果。

https://paste.ubuntu.com/25735054/

Windows 安装在 /dev/nvme0n1p4 上,Ubuntu 根分区安装在 /dev/nvme0n1p5 上。

有人能帮忙吗?

答案1

我通过从 Windows 10 USB 密钥启动并执行启动修复解决了这个问题。我确保我可以正常启动到 Windows。然后我重新启动并从我的 Ubuntu 16.04 live USB 密钥启动,安装并运行启动修复并重新启动。然后出现了 Grub2 菜单,我现在可以双启动 Ubuntu 和 Windows。为了防止这种情况再次发生,我运行了这个命令来阻止 grub2 更新,这导致了问题的发生。

sudo apt-mark hold grub* grub*:i386

答案2

我知道您已经找到了解决方案;但我对可能的原因有一些猜测,并对如何在将来避免这种情况提出了一些建议:

  • 不要启用 CSM!兼容性支持模块 (CSM) 为固件提供了 BIOS 模式启动选项。如果您的两个操作系统都是以 EFI 模式安装的,那么 CSM 充其量是不必要的,最坏的情况是会让您陷入痛苦之中。请参阅我关于这个主题的页面了解所有细节。可以肯定的是,您提到的任何内容都不会让我认为 CSM 与您的问题有关,但您可能通过启用 CSM 在已经遇到的问题之上又创建了一组新问题。我建议您进入固件并禁用 CSM。安全启动也很可能不是导致您出现问题的原因,它至少提供了理论上的安全优势,因此您可能需要重新启用它。
  • 您说启动 GRUB 中的“Windows”选项反而启动了 rEFInd。这表明 rEFInd 的安装方式导致它取代了 Windows 引导加载程序。发生这种情况时,rEFInd 安装程序会将 Windows 引导加载程序复制到另一个位置,因此它应该保持可访问;但 GRUB 的脚本可能无法在该位置检测到它。(但 rEFInd 应该可以检测到。)无论如何,我认为这是出了什么大问题——例如,您或您运行的某个工具可能决定从非标准位置删除“重复的”Windows 引导加载程序,这将是一个严重的错误,并导致您遇到的症状。
  • 当您尝试启动 Windows 时,GRUB 会显示“签名无效”消息,这可能是因为 rEFInd(似乎已替换 Windows 引导加载程序)未由固件或 MOK 列表中的任何安全启动密钥签名。这只是 rEFInd 替换 Windows 启动管理器的另一个线索。禁用安全启动后,当您选择 Windows 时,rEFInd 将从 GRUB 启动,因为未进行安全启动密钥检查。
  • 不幸的是,Boot Repair 在 NVMe 磁盘上的表现很差,所以它似乎缺少 NVMe 磁盘上的关键数据,包括存储所有引导加载程序的 EFI 系统分区 (ESP)。如果您还没有解决问题,我会要求您发布 ESP 的完整文件列表,或者至少发布其中所有*.efi文件的完整列表;但鉴于您已经成功修复了它,我认为这样做没有什么意义。不过,您应该记住,Boot Repair 还不能正确支持 NVMe 磁盘。幸运的话,这个缺陷很快就会得到修复。
  • 通过修复 Windows 中的启动过程,您从中删除了 rEFInd(或者至少是 rEFInd 二进制文件)EFI/Microsoft/Boot,从而修复了问题;然而,如果您通过 Ubuntu PPA 安装了 rEFInd,它可能会自动更新,这反过来可能会导致问题再次出现。输入dpkg -s refind。如果您收到一条消息,提示您refind未安装,则表示您没有问题(您可能在另一个操作系统中或通过文件安装了 rEFInd .zip)。如果您获取有关 rEFInd 的软件包信息,输入sudo dpkg -P refind应该会删除该软件包并消除意外升级 rEFInd 的任何可能性。输入sudo add-apt-repository -r ppa:rodsmith/refind将从您的系统中删除 rEFInd PPA,这是防止将来意外更新 rEFInd 的另一种方法。如果您想真的彻底删除 rEFInd 文件/boot/efi/EFI/Microsoft/Boot。这些包括refind.confBOOT.CSV文件以及drivers_x64keysicons子目录。(也可能有备份:icons-backuprefind.conf-sample。)但要小心!如果您不知道自己在做什么,或者如果您粗心大意,弄乱 ESP 上的文件可能会很危险!最好在尝试之前备份整个 ESP。(文件级备份,如sudo tar cvfz /root/esp-backup.tgz /boot/efi,应该足够了。/root/esp-backup.tgz在重新启动之前,将文件复制到 USB 闪存驱动器以妥善保管。)
  • GRUB 更新不应导致此问题再次发生。事实上,GRUB 更新可能很重要,因为它们可能包含安全修复程序或您可能想要或需要的其他改进。因此,您可能希望取消标记 GRUB 被保留。

相关内容