![将 Windows 8 移至新分区](https://linux22.com/image/1349675/%E5%B0%86%20Windows%208%20%E7%A7%BB%E8%87%B3%E6%96%B0%E5%88%86%E5%8C%BA.png)
我已经安装了 Ubuntu-Windows 7-Windows 8 的三重启动。当我决定使用 Windows 8 并且需要空间时,我决定删除 Windows 7 分区。
当我这样做时,我无法启动 Windows 8,这意味着引导加载程序已被删除。在 Windows 8 分区上安装引导加载程序并没有解决这个问题(它位于扩展分区上,我猜是为什么),所以我决定将它复制到安装 Windows 7 的分区上。
在创建自定义 grub 条目(如下所列)后,它顺利启动,但有一个问题:它启动的是 EXTENDED 分区。这意味着我有一个超大的启动分区,以前 Windows 7 就位于该分区,而启动的 Windows 8 分区空间很小。
现在我想完全删除扩展分区,但在删除之前,我想确保能够启动新分区。到目前为止,我都失败了:尝试重建 BCD 并修复启动,即使在 diskpart 上选择了正确的卷,也无济于事。
我究竟做错了什么?
Grub 入口:
menuentry "Windows 8 - Fixed Entry" {
set root='(hd0,msdos2)'
ntldr /bootmgr
}
编辑:好的,一些新的进展:事实证明,重建 bcd 命令确实做了一些事情,那就是向 NTLDR 添加一个新的启动项,从而启动正确的分区。
问题是这个新分区不能正常运行,检查事件日志后,我怀疑问题来自于系统分区现在是 D:,而不是 C:。
但是,当我尝试更改旧分区的字母时,一切都崩溃了:似乎即使通过在正确的分区中启动操作系统,里面的所有内容都指向旧分区。
但是,我未能将新分区的卷号更改为 C:,那么可以从恢复控制台执行此操作吗?
答案1
这些来自微软的说明展示如何纠正 Windows 忘记其分区应具有哪个字母的问题。虽然链接说它们仅适用于 Windows XP,但这些说明已经过审查,适用于 Windows Vista、7 和 8。
基本上,Windows 通过合并物理磁盘的签名/ID 和分区相对于磁盘起始位置的偏移量来识别分区。如果您向前或向后移动分区,Windows 将不再能够识别它是原来的分区。
即使您正确地将 BCD 指向正确的分区,一旦 Windows 加载,它仍可能为自己分配一个不同的字母,因为它仍在等待旧分区地址再次出现(MountedDevices 注册表项包含物理分区和逻辑驱动器字母之间的匹配)。这些说明将纠正此问题。
您可以在基于 Windows 的恢复环境中遵循相同的说明,但是您需要先安装注册表配置单元(如果不小心可能会很危险!)。