我已经在我的计算机上双重启动 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 -v
Pastebin 中 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
如所列)通过启动修复)。