在 Linux 安装失败后,我的 Windows 7 安装无法正常找到我的 MBR。它在那里 - 某个地方 - 并且如果我在启动期间使用 F12 访问主板启动选项,我就可以访问它:
请注意,它首先堆叠的是“ubuntu”——我必须向下移动到 Windows 启动管理器,然后 Windows 才能正常启动。如果我选择“ubuntu”,则会收到“未找到 BOOTMGR”消息,因此显然 BIOS 首先启动的是“ubuntu”选项,而不是在那里找到 BOOTMGR。
另请注意,Windows 在我的 BIOS 启动顺序中排在第一位:
因此,我的系统中确实有一个有效的 MBR。在某个地方。我的 BIOS 或其他程序不知道如何找到它。
我有使用修复选项(Windows 启动时按 F8)和启动修复、bootrec /fixmbr 和 bootrec /fixboot。所有报告均正确执行(bootrecs)或“未发现问题”(启动修复),但重启时仍出现 BOOTMGR Not Found 错误。
硬盘 BBS 优先级给了我这个。更改顺序没有任何作用。
在 Windows 磁盘管理器中,我可以看到 Windows 创建的 100MB 分区,但似乎没有办法将其标记为活动分区——该选项在右键单击选项中显示为灰色,在“操作/所有任务”选项中也显示为灰色。
在 EFI 删除 Ubuntu 条目后,它不再显示为启动设备,但仍然没有 BOOTMGR。
我最近从 Linux 启动修复中粘贴的内容:http://paste.ubuntu.com/7951926/
以下是 Easy UEFI 的屏幕截图:
答案1
尝试使用简易UEFI将“Windows 启动管理器”的条目移动到“启动顺序”列表的顶部。
如果这不起作用,我建议执行修复安装来修复当前安装,同时保留用户帐户、数据、程序和系统驱动程序。
详细说明请参阅: 如何执行修复安装来修复 Windows 7。
要从当前的 Windows 7 DVD 创建 Windows 7 SP1 启动 DVD,请执行以下操作:
如何整合 Windows 7 SP1 和更新以创建可启动 USB、安装 DVD 或 ISO 文件。
答案2
否,你的 MBR 是不是工作正常,但没关系,因为你的 Windows从来没有使用过它。
您的计算机有新的UEFI 固件而不是 BIOS,它不再在 MBR 中查找引导代码 - 相反,它在“EFI 系统分区”中查找引导加载程序文件,并且固件会保留已安装操作系统及其各自引导加载程序文件名的列表。当您从该列表中选择“Windows 启动管理器”时,您将从\EFI\Microsoft\Boot\bootmgfw.efi
EFI 分区启动。同样,“ubuntu”条目可能会启动\EFI\Ubuntu\grubx64.efi
或类似的东西。
(在 Windows 上,您可以通过mountvol B: /s
在命令行中运行来访问该分区。)
然而,为了与旧操作系统兼容,大多数 UEFI 系统是能够以 BIOS 方式启动 – 您的启动菜单针对每个物理磁盘都有这些特殊条目,名为P1: ...
、P2: ...
等等P3: ...
。如果您选择该P1
条目,您将启动存储在磁盘 #1 的 MBR 中的引导加载程序。
启动 Ubuntu 安装程序,并使用该efibootmgr
工具列出(和删除)损坏的 EFI 启动项:
$命令efibootmgr 启动电流:0000 超时:2 秒 启动顺序:0000,0005,0001,0006,0007 Boot0000* Linux 启动管理器 Boot0001* EFI 外壳 Boot0005* Windows 启动管理器 Boot0006* 硬盘 Boot0007 * CD/DVD 驱动器
(可选择添加-v
以查看实际路径。)要删除选项 0005:
$sudo efibootmgr -b 0005 -B
答案3
您正在根据不再适用于基于 EFI 的计算机的 BIOS 假设进行工作。正如 grawity 所说,基于 EFI 的计算机上的启动代码不驻留在 MBR 中。这意味着 Windows 命令不再起作用bootrec /fixmbr
。有 EFI 等效命令,但我对其中大多数都不熟悉。其中一个应该工作是:
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
但是,如果使用 删除 Ubuntu 条目efibootmgr
不起作用,我对 表示怀疑bcdedit
。安装后,您是否偶然运行了 Ubuntu 的 Boot Repair 工具?如果是这样,它可能已经调整了启动程序,以解决某些 EFI 中的错误。结果是在 Windows 引导加载程序应该所在的位置多了一个 GRUB 副本,而 Windows 引导加载程序被移动到了“备份”位置。在这种情况下,您应该再次运行 Boot Repair,选择其高级菜单,然后找到恢复备份文件的选项。(我不记得这个选项的确切措辞。)当您运行此选项时,Windows 引导加载程序应该恢复到其原始位置。
您还可以尝试使用 USB 闪存驱动器或 CD-R 版本的我的rEFInd 启动管理器。这可能会将 Windows 引导加载程序定位到某个奇怪的位置并启动系统。然后,您应该能够手动处理文件,使用 Windows 工具重新安装 Windows 引导加载程序,或将 rEFInd 安装到硬盘上。
最糟糕的情况是,Ubuntu 安装失败,意外破坏了 Windows 启动管理器,甚至可能是整个 Windows 安装。您可以通过查找 Windows 启动加载程序文件(例如bootmgfw.efi
)来检查这一点。EFI 系统分区,这通常是/dev/sda1
在/dev/sda2
Linux 下。使用分区工具检查分区表并查找 Windows 分区。如果没有,Windows 就没了,你必须从头开始重新安装一切。如果你有宝贵的用户数据,并且你怀疑是这种情况,立即停止使用磁盘并使用相簿或类似方法尝试恢复文件。不过,在这种最坏情况下,请做好遭受损失的准备。
答案4
弹出 Windows 安装磁盘并从该磁盘启动。然后选择自动修复,它将自动修复 EFI 系统分区。
在 EFI 中与 arch linux/windows 7 双启动斗争了大约 4 个小时试图让 windows 重新启动后,我发现了这一点。
它应该可以轻松修复您的 EFI 系统分区配置。