实验 12:更新恢复映像

如果系统无法启动到该 Windows 映像,则它将故障转移到 Windows 恢复环境 (WinRE)。 WinRE 可修复无法启动操作系统的常见问题。 WinRE 基于 Windows 预安装环境 (WinPE),并且为了使其适合你的客户使用,你可以添加驱动程序、语言、Windows PE 可选组件以及其他疑难解答和诊断工具。

该 WinRE 映像包括在 Windows 10 和 Windows Server 2016 映像内,并且最终复制到目标电脑或设备上的 Windows RE 工具分区中。 为了对此进行修改,请先装载该 Windows 映像,然后将该 WinRE 映像装载到该 Windows 映像内。 进行更改,卸载该 WinRE 映像,然后卸载该 Windows 映像。

映像:装载该 Windows 映像,然后在其内装载该恢复映像。 进行更改,然后卸载该恢复映像,并且最后卸载该 Windows 映像

你应该更新你的恢复映像,以便在执行以下操作时确保一致的恢复体验:

  • 添加启动关键性 .inf-style 驱动程序,例如用于实验 1:安装 Windows PE 的图形和存储驱动程序。
  • 向 Windows 添加主要更新,例如常规分发版本(实验 5:添加更新和升级版本)。
  • 就像你在实验 4:添加语言中所做的那样添加新语言。 (该操作并非始终可行,因为不是所有语言都具有 Windows RE 等效项。)

    注意

    • 本实验假设你希望在 install.wim 内保留 winre.wim 以同步语言和驱动程序。 如果你想在工厂车间上节省一些时间,并且如果你想要单独管理这些映像,最好从映像中移除 winre.wim 并将其分别应用。
  • 在应用最新的常规分发版本(GDR,目前为 KB3200970)或任何将来的 GDR 之前服务堆栈更新 (SSU):KB3199209是必需的。

步骤 1:装载 Windows 映像

使用实验 3:添加设备驱动程序 (.inf-style) 中的步骤装载 Windows 映像。 简短版本:

  1. 以管理员身份打开命令行(开始> 键入部署 > 右键单击部署和映像工具环境 > 以管理员身份运行)。

  2. 生成文件备份 (copy "C:\Images\Win10_x64\sources\install.wim" "C:\Images\install-backup.wim")

  3. 装载映像(md C:\mount\windows,然后 Dism /Mount-Image /ImageFile:"C:\Images\install.wim" /Index:1 /MountDir:"C:\mount\windows" /Optimize

步骤 2:装载恢复映像

  • 装载 Windows RE 映像文件。

    md C:\mount\winre
    
    Dism /Mount-Image /ImageFile:"C:\mount\windows\Windows\System32\Recovery\winre.wim" /Index:1 /MountDir:"C:\mount\winre"
    

    其中 C 是包含该映像的驱动器的驱动器号。

    此步骤可能需要几分钟。

    疑难解答:如果在指定目录下看不到 winre.wim,请使用以下命令将该文件设置为可见:

    attrib -h -a -s C:\mount\windows\Windows\System32\Recovery\winre.wim

步骤 3:向 WinRE 添加启动关键驱动程序

  1. 添加你的硬件所需的任何 .inf-style 驱动程序。

    Dism /Add-Driver /Image:"C:\mount\winre" /Driver:"C:\Drivers\PnP.Media.V1\media1.inf" /LogPath=C:\mount\dism.log
    

    示例:添加文件夹及其子文件夹中的驱动程序集合,使用 /Recurse 选项:

    Dism /Add-Driver /Image:"C:\mount\winre" /Driver:"C:\Drivers\SampleDrivers" /Recurse /LogPath=C:\mount\dism.log
    

步骤 4:向映像添加更新

  1. 获取 Windows 更新包。 使用与在实验 5:添加更新和升级版本 中用于 Windows 的相同更新包。 例如,从 Microsoft 更新目录 获取在 Windows 10 更新历史记录 中列出的最新累积更新。 将 .msu 文件更新提取到某个文件夹,例如 C:\WindowsUpdates\windows10.0-kb3194798-x64_8bc6befc7b3c51f94ae70b8d1d9a249bb4b5e108.msu。

  2. 将这些更新添加到该映像。 对于具有依赖关系的程序包,请确保按顺序安装程序包。 如果你不确定依赖关系,最好将它们全都放入同一个文件夹中,然后通过添加多个 /PackagePath 项使用相同的 DISM /Add-Package 命令全部添加它们。

    示例:添加累积更新:

    Dism /Add-Package /Image:"C:\mount\winre" /PackagePath="C:\WindowsUpdates\windows10.0-kb3194798-x64_8bc6befc7b3c51f94ae70b8d1d9a249bb4b5e108.msu"  /LogPath=C:\mount\dism.log
    

    示例:添加多个更新:

    Dism /Add-Package /Image:"C:\mount\winre" /PackagePath="C:\WindowsUpdates\windows10.0-kb00001-x64.msu" /PackagePath="C:\WindowsUpdates\windows10.0-kb00002-x64.msu" /PackagePath="C:\WindowsUpdates\windows10.0-kb00003-x64.msu" /LogPath=C:\mount\dism.log
    

步骤 5:将语言添加到映像

如果电脑遇到问题,你的用户可能无法读取/理解恢复屏幕,除非你将相应的语言资源添加到 WinRE 中。

  1. 添加语言。 这些语言随附在 Windows ADK 中。 你必须使用 Windows ADK 的匹配版本来处理 Windows RE 映像。

    注意 Windows RE 现在需要 WinPE-HTA 包,它是 Windows 10 的新增功能。

    注意 WinPE-WiFi-Package 包不是特定于语言的,并且在添加其他语言时无需添加。 这是 Windows 10 的新增功能。

    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\lp.cab" 
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-Rejuv_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-EnhancedStorage_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-Scripting_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-SecureStartup_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-SRT_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-WDS-Tools_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-WMI_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-StorageWMI_fr-fr.cab"
    
    Dism /Add-Package /Image:C:\mount\winre /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\fr-fr\WinPE-HTA_fr-fr.cab"
    
  2. 设置默认恢复语言以便匹配你的客户的首选语言。

    Dism /Set-AllIntl:fr-fr /Image:C:\mount\winre
    
  3. 可选:从 Windows RE 删除语言(仅对于非英语区域需要)

    在你从 Windows 中删除语言时,从 Windows RE 中删除它们以便节约空间。

    你可以使用 /PackagePath 开关(要求 Windows 和 Windows ADK 的匹配版本)或 /PackageName 开关(要求标识包括版本号的包)。

    示例:

    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-Rejuv-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-HTA-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-StorageWMI-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-WMI-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-WDS-Tools-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-SRT-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-SecureStartup-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-Scripting-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:WinPE-EnhancedStorage-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    Dism /Remove-Package /Image:"C:\mount\winre" /PackageName:Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0 /LogPath=C:\mount\dism.fod2.log
    
  4. 验证语言包是否为映像的一部分:

    Dism /Get-Packages /Image:"C:\mount\winre"
    

    其中 C 是包含该映像的驱动器的驱动器号。

  5. 查看包结果列表,验证该列表是否包含该包。 例如:

    Package Identity : Microsoft-Windows-WinPE-Rejuv_fr-fr ...  fr-FR~10.0.14393.0
    State : Installed
    

通过恢复保持 Windows 设置

Windows 不会自动保存通过 unattend.xml 安装文件创建的设置、在完整系统重置期间由 LayoutModification.xml 创建的 Windows“开始”菜单自定义项以及来自 oobe.xml 的首次登录信息。

为了确保保存你的自定义项:

  1. 将 unattend.xml、LayoutModification.xml 以及你的 Windows\System32\Info\OOBE 文件的副本保存到 C:\Recovery\OEM\ 中。

  2. 将用于还原这些设置的脚本 ResetConfig.xml 和 EnableCustomizations.cmd 添加到 C:\Recovery\OEM\ 中。 从示例脚本:通过恢复保持 Windows 设置 中获取这些脚本。

步骤 6:优化映像,第 1 部分(可选)

在添加语言或 Windows 更新包后,你可以通过检查是否有重复的文件并且将较旧的版本标记为被取代,减小最终 Windows RE 包的大小。

  1. 优化映像:

    Dism /Cleanup-Image /Image:c:\mount\winre /StartComponentCleanup /ResetBase
    

    稍后,你将导出该映像以便删除被取代的文件。

  2. 增加暂存空间大小以便加快恢复速度:

    Dism /Set-ScratchSpace:512 /Image:c:\mount\winre
    

步骤 7:卸载 WinRE 映像

  • 卸载并保存映像:

    Dism /Unmount-Image /MountDir:C:\mount\winre /Commit
    

步骤 8:优化映像,第 2 部分(可选)

如果你已经优化了该映像,将需要导出它以便看到文件大小的变化。 在导出过程中,DISM 将删除已被取代的文件。

  1. 将 Windows RE 映像导出到一个新的 Windows 映像文件中。

    Dism /Export-Image /SourceImageFile:c:\mount\windows\windows\system32\recovery\winre.wim /SourceIndex:1 /DestinationImageFile:c:\mount\winre-optimized.wim
    
  2. 使用新优化的映像替换旧 Windows RE 映像。

    del c:\mount\windows\windows\system32\recovery\winre.wim
    
    copy c:\mount\winre-optimized.wim c:\mount\windows\windows\system32\recovery\winre.wim
    
  3. 检查 Windows RE 映像的新大小。

    Dir "C:\mount\windows\Windows\System32\Recovery\winre.wim"
    

    调整部署脚本的大小,以便它们包括足够的空间以便用于 winre.wim 以及一些可用空间。

    注意 如果 WinRE.wim 超过 470,000,000 字节,则需要执行此步骤。

    a. 将文件大小转换为 MB(字节大小 ÷ 1048576 = 以 MB 为单位的大小)。

    b. 基于 磁盘分区规则 计算 WinRE 分区所需的可用空间。 WinRE.wim 文件大小: - 最多 450MB:你将需要 50MB 可用空间。 (使用的 450MB + 50 可用空间 = 500MB) - 450MB-680MB:你将需要 320MB 可用空间。

    • 超过 680MB:你将需要 1024MB 可用空间。

    c. 使用新值修改部署脚本:CreatePartitions-UEFI.txtCreatePartitions-BIOS.txt。 示例:

    rem == 3. Windows RE tools partition ===============
    create partition primary size=465
    
  4. 提交更改并卸载 Windows 映像:

    Dism /Unmount-Image /MountDir:"C:\mount\windows" /Commit
    

    其中 C 是包含该映像的驱动器的驱动器号。

    此过程可能需要几分钟。

试用

步骤 9:将映像应用到新电脑 使用实验 2:使用脚本部署 Windows 中的步骤将映像复制到存储 U 盘、应用 Windows 映像和恢复映像并且启动映像。

请注意,你现在将包括这些步骤以便添加恢复映像:

简短版本:

  1. 将映像文件复制到存储驱动器。

  2. 使用 Windows PE U 盘将参考设备启动到 Windows PE

  3. 查找存储驱动器的驱动器号 (diskpart, list volume, exit)。

  4. 应用映像:D:\ApplyImage.bat D:\Images\install.wim

  5. 应用恢复映像: D:\ApplyRecovery.bat

    注意:要测试不同的恢复映像,请用相同方法添加它,并且指定恢复映像:

    D:\ApplyRecovery.bat D:\Images\winre_custom.wim
    
  6. 断开驱动器,然后重新启动 (exit)。

步骤 10:验证驱动程序和包

  1. 在电脑启动后,或者创建新的用户帐户,或者按 Ctrl+Shift+F3 重新启动到内置管理员帐户(这也称作审核模式)。

  2. 单击开始按钮,单击“电源”图标,然后按住 Shift 键并且选择重启

    如果已成功应用了启动关键驱动程序,则你应该看到 Windows 恢复环境。

    如果已成功添加了语言,则你或者看到新语言(针对单个语言映像),或者看到系统提示你提供你的语言(针对多个语言映像)。

下一步:实验 13:缩小映像