我有一台 HP PC,每次启动 Windows 时,它都会将 Windows 设置为第一个启动分区/设备。为了解决这个问题,我之前在 EFI 分区中用 grubx64.efi 替换了 Microsoft 的 bootmgfw.efi,以欺骗它认为它正在启动 Windows,而实际上它正在启动 GRUB。Windows Fall 升级再次重置了 Windows EFI 文件夹,但现在当我用 grubx64.efi 替换 bootmgfw.efi 文件时,GRUB 会在您选择 Windows 时启动到 GRUB(永无止境的循环)。Linux 仍然可以正常启动。
有人知道这该如何解决吗?
谢谢,
答案1
Windows 引导加载程序文件(通常为EFI/Windows/Boot/bootmgfw.efi
)必须存在于 ESP 上,Windows 才能启动。您说您用 的副本替换了此文件grubx64.efi
,但没有说明您对原始文件做了什么。如果您覆盖了它,那么除非/直到您恢复原始文件,否则 Windows 无法启动。(您可以将文件恢复为另一个名称,如下所述。)如果您有备份,则可以从中恢复它。如果没有,那么我建议您在 Windows 论坛上询问有关恢复原始文件的信息。然后您可以重新开始,对原始文件更加小心。
如果您重命名了原始文件,则应该能够编辑 GRUB 的配置以使用新名称启动文件。如果您坚持使用 GRUB,最好的方法是编辑/etc/grub.d/40_custom
以包含以下内容:
menuentry "Windows" {
insmod part_gpt
insmod chain
set root='(hd0,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
您必须更改分区 ID [ (hd0,gpt1)
-- 即本例中gpt1
第一个硬盘 ( ) 上的第一个分区 ( hd0
)] 以匹配您的 ESP。您还必须更改引导加载程序文件名,本例中将其显示为默认文件名,当然您已更改了它。
创建或编辑后/etc/grub/40_custom
,您必须键入sudo update-grub
。这会将这些更改连同其他 GRUB 设置一起传输到/boot/grub/grub.cfg
。(您可以直接编辑该文件,但每当 GRUB 更新其配置时,您的编辑都会被清除,例如在自动内核更新之后。)