我有一个双引导安装。我首先将 Windows 7 安装在它自己的磁盘 (C:) 中,并断开了辅助驱动器的连接。我这样做是因为我知道 Windows 有与其他驱动器混淆的趋势。然后我连接了一个辅助驱动器并创建了一个数据分区 (D:) 并在第三个分区中安装了 Linux。
总结一下:
- 磁盘 1:Windows 分区 (C:)
- 磁盘 2:数据 (D:)、Linux(由于文件系统的原因,在 Windows 中是不可见的)、交换区。
Linux 安装自身时,它还在第二个磁盘(BIOS,不是 UEFI)中安装了 GRUB。因此,未使用安装在 C: 中的 Windows 引导加载程序。尽管如此,如果在紧急情况下我断开了第二个磁盘的连接或者它发生故障,Windows 7 引导加载程序仍然可以工作。
这多年来一直运作良好。
现在,作为本月 Windows 更新的一部分,我认为它与那个用支持结束消息和可能升级到 Windows 10 的更新相关,Windows 7 已将其自己的引导加载程序从 C: 移动到数据分区在辅助磁盘 (D:)中。现在D:有bootmgr.exe
一个Boot
文件夹,C:没有。
虽然通过 GRUB 双引导仍然工作正常,但我希望 Windows 自己的引导加载程序保留在 C: 它所属的位置。将 bootmngr.exe 和 Boot 文件夹复制回 C: 是否足够,或者我应该使用 Windows 安装 DVD 来“修复”Windows 安装?如果我单独修复该磁盘,辅助磁盘中的 GRUB 是否仍然有效?
更新:(2019 年 12 月)又发生了!我安装了一个安全累积包,显然 Windows 认为安装它的 SSD 不好,并将其自身移动到另一个硬盘驱动器。
更新 我断开了第二个磁盘的连接,重新启动,Windows 启动进入修复模式而不是正常模式。我选择了“启动修复”,但没有用。它说windows无法自动修复。显示的错误详细信息类似于“NoOsLoader”。我插入原始的 Windows 安装 DVD 并重新启动 PC。在 BIOS 中它说“按任意键从 DVD 启动”,所以我这样做并从 DVD 启动。选择时区和键盘,然后再次选择“启动修复”,它修复了丢失的引导加载程序,而无需执行完全重新安装。现在 windows 再次重新启动,这次它可以正常从 C: 启动。在此期间,辅助硬盘驱动器已断开连接(电源线和数据线),以防万一 Windows 修复实用程序决定弄乱该磁盘。确认修复成功后,我再次连接另一个硬盘并启动进入 linux。我检查了 D: 分区,发现了一些以前不存在的文件,这些文件是最近由 windows 创建的:
所以这绝对是问题的原因。Windows 已将其自己的 BOOTOADER 移动到他选择的分区。
我删除了这些文件,因为它们已经重新安装到它们所属的 C: 中。
现在为了防止这种情况再次发生,我有 2 个选择:
这是我大约一年前遇到的问题,我试图在第二个驱动器上安装 Windows 以促进数据从旧 HDD 迁移到新 SSD。在安装过程中,无论是错误还是设计,Windows 都会检测其他磁盘上的引导加载程序并将其自身安装在那里。无论如何,我无法在正确的磁盘上获取引导加载程序,并且所有补救尝试都遇到了蓝屏或整齐的“未找到操作系统”消息。
最好的办法是尝试在断开 Linux 磁盘连接的情况下使用安装磁盘/USB 修复 Windows。虽然可能可以移动文件,但我不建议这样做,因为 Microsoft 喜欢创建关联,这可能会让您的生活变得痛苦。
这个问题很微妙,因为 Windows 7 启动过程非常脆弱。
理论上,可以将包含 Boot 文件夹的系统保留分区从 D 复制到 C,但有一些陷阱:
Windows 7 分区必须保留其准确的扇区地址,否则引导过程将无法进行。如果您要移动它以释放磁盘空间,它可能会变得无法启动。
将系统保留分区从D复制到C后,设置BCD的命令为:
而且它必须从 Windows 内部发布,所以你必须从 grub 启动,而且还不清楚将更新哪个 BCD Store。如果是 D 盘,那么您可能需要将 Windows 7 从 USB 启动到命令提示符,并使用正确的卷号发出此命令,并断开 Linux 磁盘的连接。
在开始之前,我建议采取一些预防措施:
做好备份,包括C盘的系统镜像。使用第三方产品,比如傲梅轻松备份,制作 启动盘 测试。这将为您提供将磁盘恢复到其工作状态的方法。
准备与您的安装具有相同服务包级别的 Windows 7 启动媒体,因为您可能需要进行 启动修复 ,或者,如果这不起作用,请 进行修复安装以修复 Windows 7。
您也许可以绕过上述一些预防措施,但您需要运气。