V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aquatichunter
V2EX  ›  问与答

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

  •  
  •   aquatichunter · 230 天前 via Android · 1079 次点击
    这是一个创建于 230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    估计有人推荐 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 的时候没有验证完整性。
    除此之外我还没有找到影响迁移成功与否的其他因素。也许根本就不应该把系统迁移到接口不同的磁盘上?
    11 条回复    2024-04-09 21:59:02 +08:00
    i8086
        1
    i8086  
       230 天前
    你确认系统不在更改后,本人建议重启一次系统,运行通用化工具,从 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
        2
    datocp  
       230 天前
    dism++也是一个调用 dism 的界面工具吧,平时就是用它封装系统,从未失败过。

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

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

    另外,PE 里的 DISM 有什么权限问题呢?可以去 ADK 文档里看看如何为 PE 集成最新版本 DISM~
    aquatichunter
        4
    aquatichunter  
    OP
       230 天前 via Android
    @YGHMXFAL 不是异机还原,就是同一台电脑,只是换了硬盘。PE 里的 dism 有很明显的权限问题,capture 过程中跑到半路很可能报错(我的电脑上绝对会),大部分都是句柄无效
    cheng6563
        5
    cheng6563  
       230 天前
    开机之后黑屏只有一个光标,是因为你没清空盘符配置导致认错 C 盘了。
    要清空这个注册表: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
    最后备份前就需要清掉,如果已经备份还原了那就离线挂载注册表清掉
    cheng6563
        6
    cheng6563  
       230 天前
    最好备份前就需要清掉,如果已经备份还原了那就离线挂载注册表清掉
    YGHMXFAL
        7
    YGHMXFAL  
       230 天前
    @aquatichunter #4 没遇见过你这问题,试试 ADK 里面最新版 DISM 呢?
    datocp
        8
    datocp  
       230 天前 via Android
    同机,双硬盘拷贝,如果不小心还启动了,似乎会导致双硬盘的一个什么参数重复,结果导致只能识别其中的一个。diskgenus 在右击盘符时能重置这个参数。由于盘符冲突只能使用 5L 的方法再重启。
    dant
        9
    dant  
       230 天前
    说起这个我就不困了.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
        10
    hefish  
       230 天前
    有这么折腾,我都重装好多遍了。。。
    ashuai
        11
    ashuai  
       230 天前   ❤️ 1
    挂双盘,插 u 盘,进 PE ,打开 ghost 分区对拷,1 分钟都不要打完收工
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:32 · PVG 06:32 · LAX 14:32 · JFK 17:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.