GRUB 和 Windows 启动问题

GRUB 和 Windows 启动问题

我已经在我的计算机上双重启动 Windows 10 和 Linux (KDE Neon) 几个月了,没有出现任何问题。然而,今天,启动进入 linux,然后重新启动并尝试选择 windows 后,我收到此错误:

Error: file /efi/microsoft/boot/bootmgfw.efi not found

不确定我的 Windows 启动是否会出现问题,我回到 Linux 并更新了 grub。这样做的结果是 grub 在重新启动或引导时根本不显示。

然后我使用实时 USB 打开启动修复,返回以下内容:

检测到 GPT。请创建一个 BIOS-Boot 分区(>1MB、未格式化的文件系统、bios_grub 标志)。这可以通过 Gparted 等工具来执行。然后再试一次。或者,您可以在激活 [单独的 /boot/efi 分区:] 选项后重试。

我不确定这意味着什么,目前担心会进一步破坏任何东西。这是我的粘贴箱:https://paste.ubuntu.com/p/K6qrpzmwZc//

我在 Ubuntu 论坛中提出了这个问题,并被重定向到这里,尽管我相当确定 Linux 发行版对此问题没有影响。

答案1

尽管引导修复是以本机 UEFI 样式启动的(因为它可以向您显示输出efibootmgr -v),但它建议的修复与在 GPT 分区磁盘上设置传统样式启动有关。这似乎不适合您的情况。当心!

有关未找到的错误消息/efi/microsoft/boot/bootmgfw.efi表明您的系统最初使用 UEFI 本机启动方式。对于 Windows,使用 GPT 分区的系统磁盘需要 UEFI 启动方式;你不能像 Linux 那样混合使用 GPT + 传统启动。应用建议的修复将导致无法选择从 GRUB 启动的操作系统;您必须使用固件设置(“BIOS 设置”)来切换引导顺序和/或首选引导样式以在操作系统之间切换。

看起来可能有什么东西损坏了 EFI 系统分区 (ESP)。它通常是一个小的 FAT32 分区,由固件 NVRAM 设置中的 UUID 标识。在 Debian、Ubuntu 和相关发行版中,通常安装到/boot/efi.

使用任何启动修复工具时,应小心以 UEFI 模式启动它们。当系统以传统模式启动时,修复工具将无法访问 UEFI NVRAM 启动设置。在 Linux 中,efibootmgr -v如果系统处于 UEFI 模式,您可以使用查看启动设置。

根据efibootmgr -vPastebin 中 Boot-Repair 的输出,Boot-Repair 引用的分区/dev/sdb2应包含两个操作系统的 UEFI 引导加载程序(Windows 的 Windows 引导管理器,以及 Ubuntu 的安全引导 shim + GRUB)。但有些事情看起来很奇怪:

BootCurrent: 0005
Timeout: 1 seconds
BootOrder: 0002,0000,0001,0004,0005
Boot0000* Windows Boot Manager  HD(2,GPT,dc5ce41b-3e41-4a19-9f92-7883a6981bfb,0xfa000,0x31800)/File(EFIUBUNTUGRUBX64.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.}...M................
Boot0001* Windows Boot Manager  HD(2,GPT,dc5ce41b-3e41-4a19-9f92-7883a6981bfb,0xfa000,0x31800)/File(EFIMICROSOFTBOOTBOOTMGFW.EFI)..BO
Boot0002* ubuntu    HD(2,GPT,dc5ce41b-3e41-4a19-9f92-7883a6981bfb,0xfa000,0x31800)/File(EFINEONSHIMX64.EFI)
Boot0004* UEFI OS   HD(2,GPT,dc5ce41b-3e41-4a19-9f92-7883a6981bfb,0xfa000,0x31800)/File(EFIBOOTBOOTX64.EFI)..BO
Boot0005* UEFI: Imation Classic PMAP    PciRoot(0x0)/Pci(0x14,0x0)/USB(3,0)..BO

Boot0000条目被标记为 Windows Boot Manager,但引用了\EFI\Ubuntu\grubx64.efi(我假设缺少反斜杠是使用 Pastebin 的产物?)。看起来Boot0001基本上对 Windows 有效(同样没有反斜杠),但它缺少出现在Boot0000.主引导条目是Boot0002,它启动安全引导垫片\EFI\Neon\shimx64.efi,随后将启动该垫片\EFI\Neon\grubx64.efi

如果输出中实际上缺少反斜杠efibootmgr -v,则可能是某些内容错误地修改了您的启动 NVRAM 设置,或者您可能遇到了相当严重的 UEFI 固件错误。查看是否有适用于您的特定硬件型号的固件更新(“BIOS 更新”)。

但看起来\EFI\Neon\EFI\Microsoft目录可能都丢失了sdb2

/boot/efi detected in the fstab of sda3: UUID=E46B-39C6  (sdb2)
Presence of EFI/Boot file detected: /mnt/boot-sav/sdb2/EFI/Boot/bkpbootx64.efi
Presence of EFI/Boot file detected: /mnt/boot-sav/sdb2/EFI/Boot/bootx64.efi
Presence of EFI/Boot file detected: /mnt/boot-sav/sdb2/EFI/Boot/fbx64.efi
Presence of EFI/Boot file detected: /mnt/boot-sav/sdb2/EFI/Boot/grubx64.efi
Presence of bkp file detected: /mnt/boot-sav/sdb2/EFI/Boot/bkpbootx64.efi
/usr/share/boot-sav/bs-cmd_terminal.sh: line 194: warning: command substitution: ignored null byte in input

/mnt/boot-sav/sdb2/EFI/Neon/shimx64.efi它也应该检测到/mnt/boot-sav/sdb2/EFI/Microsoft/Boot/bootmgfw.efi,但没有检测到。

您可以尝试从 Windows 10 安装介质启动并使用“修复 Windows”自动修复工具,然后从实时 Linux 介质启动,chroot 进入 KDE Neon 安装,然后将 GRUB 和安全启动 shim 重新安装到 ESP(sdb2如所列)通过启动修复)。

相关内容