windows 无损 系统迁移到SSD
Windows 系统盘迁移技术文档
源盘:未启用 windows bitlocker
源盘:1TB 机械硬盘,GPT + UEFI,分区结构 ESP + MSR + C(约199G)+ D
目标盘:240G SSD,SATA 接口
操作环境:WinPE(Windows 安装盘或第三方 WinPE U 盘)
工具:DiskGenius、Windows 安装盘 CMD(bcdboot)
一、原理说明
1.1 为什么选择离线扇区复制
扇区复制将分区内容原样写入目标盘,NTFS 文件系统结构、硬链接、符号链接、ACL、稀疏文件等全部完整保留,无需任何额外处理。
必须在源盘彻底断电、完全离线的状态下执行扇区复制。 这是本方案可靠性的前提,不可省略。
热克隆(Windows 运行期间复制)会引入三类必然出现的问题:
- NTFS dirty bit 置位:Windows 挂载卷时将 dirty bit 置 1,仅在正常卸载时清零。热克隆将 dirty=1 的状态原样复制,目标盘挂载时强制要求 chkdsk。
- hiberfil.sys RSTR 镜像:快速启动开启时,关机实为休眠,内核状态保存为 RSTR 镜像。热克隆将此镜像复制到目标盘,目标机启动时尝试恢复原机硬件状态,必然失败。
- 注册表 hive 事务不一致:Windows 运行期间注册表 hive 持续写入,热克隆可能在写入中途捕获数据,导致 primary/secondary 序列号不一致,Windows 无法正确加载注册表。
以上三类问题在彻底关机后执行扇区复制时全部不存在。
1.2 为什么不克隆 ESP
目标盘 ESP 全新创建,由 bcdboot 在最后一步写入引导文件并生成新 BCD。BCD 中的磁盘 GUID 和分区 GUID 由 bcdboot 从当前磁盘实时读取写入,不存在 GUID 不一致问题。
1.3 为什么不建 MSR 分区
Windows 10 在 GPT 磁盘上不依赖 MSR 分区完成引导,MSR 仅用于动态磁盘管理功能,普通使用可以跳过。
准备物品 WINPE U 盘
我使用的是 WePE_64_V1.3.exe
支持扇区复制功能的 DiskGenius
DiskGenius Pro v4.8.0 x64.exe
DiskGenius Pro v4.8.0 x64.exe
DiskGenius Pro v4.8.0 x64.exe
二、准备工作
在原机 Windows 内执行:
1 | |
此命令关闭快速启动并删除 hiberfil.sys。执行完成后从开始菜单选择关机(不是重启),确保 NTFS 以 dirty bit = 0 的状态卸载。
重启进入 WinPE 也可以接受:重启不会写入新的 RSTR 镜像,NTFS 正常卸载,dirty bit 同样为 0。但若上次是以快速启动方式关机,重启不会清除遗留的 hiberfil.sys,执行
powercfg -h off更稳妥。
三、WinPE 分区操作(DiskGenius)
关机后插入 WinPE U 盘,从 U 盘启动,打开 DiskGenius。
3.1 清空 SSD
选中 SSD,删除全部现有分区。
3.2 新建 ESP 分区
在 SSD 上新建分区:
- 类型:FAT32
- 大小:100MB
- 标记为 EFI System Partition
3.3 新建 C 分区
DiskGenius 新建分区时无法直接指定扇区数,需分两步完成:
第一步:新建分区,类型选 NTFS,大小随意(后续调整)。
第二步:右键该分区 → 调整分区大小,手动设置结束扇区:
1 | |
源盘 C 分区的起始扇区和总扇区数可在 DiskGenius 中点击机械硬盘 C 分区查看分区属性获得。
调整完成后,SSD C 分区的扇区数与源盘 C 分区完全一致,剩余约 22G 保持未分配空间,不创建分区。
扇区数保持一致可确保扇区复制为严格的 1:1 操作,复制完成后无需扩展 NTFS。
3.4 执行扇区复制
右键点击 SSD 的 C 分区 → 克隆分区 → 选择按扇区复制:
- 源分区:机械硬盘 C 分区
- 目标分区:SSD C 分区
等待复制完成。
四、重建系统引导(bcdboot)
扇区复制完成后,SSD 的 ESP 为空,需要写入引导文件和 BCD。
插入 Windows 安装盘,从安装盘启动,进入修复模式,打开命令提示符。
4.1 分配盘符(DiskGenius)
在 DiskGenius 中为 SSD 的两个分区分配盘符:
- 右键 ESP 分区 → 分配盘符 → 指定为
S - 右键 C 分区 → 分配盘符 → 指定为
W
分配完成后再打开命令提示符执行 bcdboot。
4.2 重建引导
1 | |
参数说明:
| 参数 | 含义 |
|---|---|
W:\Windows |
Windows 安装目录所在位置,即 SSD C 分区的 Windows 文件夹(DiskGenius 分配的盘符为 W) |
/s S: |
指定将引导文件写入哪个分区,即 SSD 的 ESP 分区(DiskGenius 分配的盘符为 S) |
/f UEFI |
指定固件类型为 UEFI,生成 .efi 格式的引导文件和对应的 BCD 结构;若为 Legacy BIOS 则填 BIOS |
/l zh-cn |
设置语言包 为 简体中文 zh-cn |
输出 Boot files successfully created 表示成功。
bcdboot 完成了三件事:
- 将引导文件(bootmgfw.efi 等)从
W:\Windows\System32\复制到S:\EFI\Microsoft\Boot\ - 在 ESP 写入全新 BCD,自动读取当前 SSD 的磁盘 GUID 和分区 GUID 填入,不存在 GUID 错乱问题
- 在
S:\EFI\Boot\放置 bootx64.efi 作为 UEFI 固件的默认启动入口
4.3 启动
拔出安装盘 U 盘,重启,进入 BIOS 确认启动顺序选择该 SSD,正常进入 Windows。
五、扩展 C 盘(事后操作)
进入 Windows 后,SSD 上存在约 22G 的未分配空间。在 Windows 磁盘管理中将其扩展给 C 盘:
1 | |
磁盘管理的扩展操作在本次场景下安全:C 盘和未分配空间同属 SSD,磁盘 GUID 不会改变,BCD 不受影响。