Windows Vista/7/8/10/11系统迁移原理及迁移步骤(保姆级教程)

将 Windows 系统从机械硬盘迁移到固态硬盘基本上属于月经帖,其实用什么工具都无所谓,但有时候遇到问题不知道从哪里下手解决,主要原因就是没有搞清楚迁移原理。


系统迁移原理

迁移系统这个操作看着复杂,其实搞清楚了原理,操作非常简单。Windows 7 及以上系统的迁移原理:就是两个步骤,一是系统分区的迁移(随便一个克隆软件都可以搞定),二是引导修复及 BCD 启动配置文件的修复。

1. 系统分区的迁移。

随便一个克隆软件都可以搞定:Drive Snapshot、 GHOST、ATI、DiskGenius、分区助手、再生龙、dism++、imagex 等等,凡是能给系统分区做克隆或者复制操作的都可以,需要注意的就是系统分区含有大量的硬链接,所以不能用直接复制的方法(如果有支持硬链接复制功能的软件,直接复制也可以)。如果源盘和目标盘能够同时访问到,那么直接用分区复制功能(ghost、Diskgenius、分区助手都可以);如果不能同时访问,就用上述软件给系统分区做一个克隆,通过移动硬盘中转一下。建议这些操作都在 PE 下进行。在将系统分区恢复到目标硬盘后,注意删除目标分区 SYSTEM 注册表:*\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices * 下的 “\DosDevices\C:” 这一项。 注意:如果你的目标硬盘使用了当前系统不支持的硬盘控制器,例如从 SATA 接口的硬盘(一般使用 AHCI)迁移到 M.2 nvme,那么你需要先在原来的系统里安装好新硬盘控制器的驱动,这个驱动一般可以从主板厂商或者硬盘厂商处获取,安装或者用 dism++ 添加到当前系统中。如果你的系统已经复制到了目标分区,也可以使用 Dism++ 添加驱动。

2. 引导及 BCD 修复。

无论硬盘是 MBR 或者 GPT 格式,用 Windows 的 bcdboot 命令行都可以修复,好多 PE 下也都提供了引导修复功能。无论哪种硬盘格式,都建议你在 PE 下事先规划好硬盘的分区,对于 mbr 就是规划系统分区和数据分区,而对于 GPT,则要事先建好 ESP (FAT32)、MSR(可选)、系统分区、数据分区。mbr 有引导扇区,GPT 则只有引导分区(也就是 ESP 分区,没有引导扇区这个概念)。由于 Windows 的系统分区是绑定硬盘 GUID 的,所以换硬盘或者换分区都需要更新 BCD 文件(BCDBOOT 都可以自动处理)。BCDBOOT 会自动复制 Windows 系统引导文件到启动分区,这些文件默认来源于目标系统: \windows\boot 这个目录,这个目录下的 PCAT 目录对应 BIOS+MBR 启动方式,EFI 目录则对应 UEFI+GPT 启动方式。


系统迁移详细步骤

了解了上述原理,那么正常情况下迁移系统,例如,将原来运行在机械硬盘上的系统和数据迁移到新换的固态硬盘上,假设源硬盘和目标硬盘不能同时访问,那么你需要准备一个移动硬盘作为中转。操作步骤如下:

1. 备份原来硬盘上的各分区。

备份原来硬盘上的系统分区(注意下原硬盘上各分区的大小及各分区上已经占用的空间大小,尤其是系统分区的大小),如果是 GPT 硬盘,建议也备份一下 ESP 分区。这个我推荐用 Drive Snapshot,在当前系统下就可以操作,直接备份到移动硬盘上即可。如果你原来的硬盘还有数据分区,同时备份到移动硬盘(可以用直接复制的办法,没必要用克隆软件)。这里需要注意一点:如果你原来的系统是在机械硬盘上,而新硬盘是 nvme 的 ssd(或者使用了不同的硬盘控制器),你在备份系统之前,需要先在原系统里安装好相应硬盘控制器的驱动(nvme 的驱动),驱动安装成功的标志就是你在老系统下能够看到新硬盘,否则迁移后的系统启动时有可能会遇到 0x7B 蓝屏错误,如果迁移后你才发现这个问题,就需要在 PE 下使用 Dism++ 注入新的硬盘控制器的驱动。

2. 给新硬盘分区。

接上新硬盘,进入 PE,给新硬盘分区(如果是 GPT 格式,要注意先建立 ESP 和 MSR 分区),新硬盘的系统分区不要小于原硬盘的系统分区。分区软件推荐 Aomei 分区助手、或者 DiskGenius,固态硬盘注意 4K 对齐。

3. 将备份恢复到新硬盘。

将备份到移动硬盘上的系统分区和数据恢复到新硬盘的对应分区上,如果是 GPT,建议同时恢复一下备份的 ESP 分区。假设新的系统分区盘符是 F:,ESP 分区盘符是 Z:,那么在 PE 的 cmd 命令行下用 (这是 UEFI+GPT 格式硬盘):

bcdboot F:\windows /s Z: /f UEFI

如果是普通 mbr 硬盘,则是:

bcdboot F:\windows /s F:

这样就同时修复了硬盘的引导及 BCD 启动配置文件。

然后注意将目标系统 system 注册表(F:\Windows\System32\config\SYSTEM)删除一下 \HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 下的 \DosDevices\C:。

用这个命令加载目标系统注册表:

reg load hklm\sys f:\windows\system32\config\system

然后在注册表编辑器中修改 hklm\sys 对应的注册表项即可。

编辑完成后,关闭注册表编辑器,然后:

reg unload hklm\sys

4. 重启测试是否正常。

重启时选择从新硬盘启动,测试迁移后的系统是否运行正常。一般来说,不会遇到什么问题。大功告成!


后记

如果你熟悉使用 grub4dos、grub4dos_UEFI、grub2、XorBOOT 这一类的第三方启动管理软件,配合 NTBOOT 这一类的启动插件,上述很多操作都可以简化,不用过多考虑引导修复,当然,我觉得这都属于高手级别的操作了,这级别的高手不需要参考上面这种小白文档。

25 Likes

先赞后看,仔细研究

1 Like

真详细,感谢!

1 Like

很详细了
一般比较容易出问题的也就目标分区没激活重建引导记录
以前装服务器还遇见过的就是需要注入SAS驱动
我是懒人不怎么输入命令,现在的PE里面一般都有重建引导记录这个
注入驱动记得有个离线注入SRS驱动的

1 Like

我win7x86想试试迁移win10x64,但是32转64需要全部重装,我也没装成功,跑不起来安装程序,以后再看看吧

正好要用,感谢分享

我顶楼这个帖子强调的是在本机迁移,从机械硬盘迁移到固态硬盘,或者从一块硬盘迁移到另一块硬盘。如果是异机迁移,就需要涉及注入SRS驱动,不过上面已经提到了这个问题,用dism++离线注入驱动即可,另外还可能涉及到清理幽灵硬件这一类的操作,不过基本上问题不大。

兄弟,你这个不叫迁移,这叫升级。这个已经超出我的能力范围了。

1 Like

有问题可以联系我。

1 Like

Mark下,好好研究下

1 Like

感谢分享,MARK一下

1 Like

感谢分享,收藏一波

很详细,学习了,感谢分享!