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

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

  •  
  •   aquatichunter · 2024-04-09 10:25:15 +08:00 via Android · 1336 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。
    估计有人推荐 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  
       2024-04-09 12:53:19 +08:00
    你确认系统不在更改后,本人建议重启一次系统,运行通用化工具,从 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  
       2024-04-09 13:33:11 +08:00
    dism++也是一个调用 dism 的界面工具吧,平时就是用它封装系统,从未失败过。

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

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

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