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 专业版, 以下实测PE环境可以正常使用
DiskGenius Pro v4.8.0 x64.exe
DiskGenius Pro v4.8.0 x64.exe


二、准备工作

在原机 Windows 内执行:

1
powercfg -h off

此命令关闭快速启动并删除 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 分区起始扇区 + 源机械硬盘 C 分区总扇区数 - 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
bcdboot W:\Windows /s S: /f UEFI /l zh-cn

参数说明:

参数 含义
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 完成了三件事:

  1. 将引导文件(bootmgfw.efi 等)从 W:\Windows\System32\ 复制到 S:\EFI\Microsoft\Boot\
  2. 在 ESP 写入全新 BCD,自动读取当前 SSD 的磁盘 GUID 和分区 GUID 填入,不存在 GUID 错乱问题
  3. S:\EFI\Boot\ 放置 bootx64.efi 作为 UEFI 固件的默认启动入口

4.3 启动

拔出安装盘 U 盘,重启,进入 BIOS 确认启动顺序选择该 SSD,正常进入 Windows。


五、扩展 C 盘(事后操作)

进入 Windows 后,SSD 上存在约 22G 的未分配空间。在 Windows 磁盘管理中将其扩展给 C 盘:

1
2
右键"此电脑"→ 管理 → 磁盘管理
右键 C 盘 → 扩展卷 → 下一步 → 完成

磁盘管理的扩展操作在本次场景下安全:C 盘和未分配空间同属 SSD,磁盘 GUID 不会改变,BCD 不受影响。