用 DISM 的 Capture 选项来迁移系统靠谱么?

217 天前
 aquatichunter
估计有人推荐 DISM++这些第三方软件。但我要尽可能只用微软的软件来完成所有操作。
基本操作是这样的:
①用 media creation tool 把 U 盘做成 PE 盘。
②重启进 PE 后,用 C 盘 System32 目录里面的 dism (不是 PE 自带的,否则会有权限问题)把整个 C 盘 Capture 成一个 wim 文件并保存到别的盘上。
③最重要的是要在命令行后面加上验证完整性的选项。
④用 diskpart 给新硬盘分区,为 efi 分区设置盘符。
⑤使用 dism 的 apply 选项把打包完成的 wim 文件应用到新硬盘上,同样也要验证完整性。
⑥用 bcdboot 把应用好的系统的启动信息写到 efi 分区上。
我一共试过两次,其中一次失败了,开机之后黑屏只有一个光标。刚开始我以为是原先的 SSD 是 pcie 3.0 而新 SSD 是 pcie 4.0 的原因,但后来发现原来是 capture 的时候没有验证完整性。
除此之外我还没有找到影响迁移成功与否的其他因素。也许根本就不应该把系统迁移到接口不同的磁盘上?
1047 次点击
所在节点    问与答
11 条回复
i8086
217 天前
你确认系统不在更改后,本人建议重启一次系统,运行通用化工具,从 Windows 安装中删除特定于电脑的信息,以便它可以安装在不同的电脑上。

%WINDIR\System32\Sysprep\Sysprep.exe /generalize /oobe /shutdown

https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/sysprep--generalize--a-windows-installation?view=windows-11
datocp
217 天前
dism++也是一个调用 dism 的界面工具吧,平时就是用它封装系统,从未失败过。

至于系统备份恢复,平时常见的是 bcd 分区加载错误,这个 pe 都有叫 bcdedit?也是很成熟的软件。其它的就是驱动不匹配蓝屏。这些年临近的 intel 主板,基本备份恢复都没大问题,至于驱动导致的蓝屏也没怎么碰到。

平时不怎么做不同硬件迁移。基本以同硬件备份为主。当然封装的系统可视为不同硬件准备,那个也是根据 windows 的要求去除了驱动部分。
YGHMXFAL
217 天前
又是异机还原,那么你一定要执行#1 的操作

另外,PE 里的 DISM 有什么权限问题呢?可以去 ADK 文档里看看如何为 PE 集成最新版本 DISM~
aquatichunter
217 天前
@YGHMXFAL 不是异机还原,就是同一台电脑,只是换了硬盘。PE 里的 dism 有很明显的权限问题,capture 过程中跑到半路很可能报错(我的电脑上绝对会),大部分都是句柄无效
cheng6563
217 天前
开机之后黑屏只有一个光标,是因为你没清空盘符配置导致认错 C 盘了。
要清空这个注册表: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
最后备份前就需要清掉,如果已经备份还原了那就离线挂载注册表清掉
cheng6563
217 天前
最好备份前就需要清掉,如果已经备份还原了那就离线挂载注册表清掉
YGHMXFAL
217 天前
@aquatichunter #4 没遇见过你这问题,试试 ADK 里面最新版 DISM 呢?
datocp
217 天前
同机,双硬盘拷贝,如果不小心还启动了,似乎会导致双硬盘的一个什么参数重复,结果导致只能识别其中的一个。diskgenus 在右击盘符时能重置这个参数。由于盘符冲突只能使用 5L 的方法再重启。
dant
217 天前
说起这个我就不困了.jpg

我来说说之前同一机器不同硬盘迁移系统的时候遇到过的坑吧:

1. DiskGenius/ntfsclone 之类的块级操作的工具,不支持两个硬盘不同 LBA 大小(消费级硬盘普遍 512 ,DC 级/企业级硬盘普遍 4096 )
1.1 BitLocker 中 LBA 参与加密,不能简单按块复制到起始 LBA 不同的分区,同时会通过 System Volume Information 中的占位文件保留空间用于存放元数据以及移动分区头(推测是为了不移动整个分区启用加密),因此也不能在两个已解锁的 BitLocker 分区之间按块复制(

2. DISM/ImageX 、以及 RoboCopy/FastCopy/rsync 之类的文件级复制工具,不能完整读取或者恢复 NTFS 元数据,包括但不限于稀疏文件(某些虚拟机镜像)、硬链接(比如 WinSxS )、WSL1 、OneDrive/NextCloud 等网盘客户端的占位文件等等
2.1 如果你已经用这种方式操作过网盘的同步文件夹,可能网盘里的数据已经变得一团糟了……

结论:如果两个硬盘 LBA 大小相同并且不需要复制完后即为加密状态,按块复制是最优解,虽然没有第一方工具(如果 PowerShell 里自己写 C# 不算的话,手动狗头)
如果两个硬盘 LBA 大小不一样,目前可能不存在特别好的方法。虽然现在回想起来按块复制之后不影响 Linux 系统挂载,似乎可以修改 NTFS 头里的 LBA 大小信息(或者使用 ntfsresize 之类的工具一键处理)让 Windows 可以正常挂载。


另外关于 PE 自带的 dism 有权限问题,很可能只是因为 PE 自带的版本老了……
hefish
217 天前
有这么折腾,我都重装好多遍了。。。
ashuai
217 天前
挂双盘,插 u 盘,进 PE ,打开 ghost 分区对拷,1 分钟都不要打完收工

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030875

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX