Добавление механизма восстановления в образ Windows 10 IoT Core

Вы можете добавить в образ механизм восстановления с помощью WinPE в качестве безопасной ОС и WIM-файлов в качестве восстановления sw из раздела восстановления, выполнив приведенные ниже действия.

Дополнительные сведения о возможных механизмах см. в разделе Восстановление Windows 10 IoT Базовая.

Шаг 1. Обновление макета устройства с помощью раздела восстановления

В файле devicelayout.xml добавьте новый раздел MMOS со следующими атрибутами.

  • Файловая система FAT32
  • Размер Atleast 2 ГБ ( для размещения wim WinPE и wims восстановления)
  • Тип раздела
    • GPT: {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}
    • MBR : 0x07

Ниже приведен пример фрагмента XML для устройства GPT (предполагается, что размер сектора 512)

<Partition>
    <Name>MMOS</Name>
    <FileSystem>FAT32</FileSystem>
    <TotalSectors>4096000</TotalSectors>
    <Type>{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}</Type>
</Partition>

См. также макет устройства QCDB410C.

Ниже приведен пример xml-фрагмента для устройства MBR

<Partition>
    <Name>MMOS</Name>
    <FileSystem>FAT32</FileSystem>
    <TotalSectors>4096000</TotalSectors>
    <Type>0x07</Type>
</Partition>

См. также макет устройства восстановления MBR 8 ГБ.

Шаг 2. Настройка параметров BCD

На этом шаге добавленный раздел MMOS определяется как загрузочный раздел в параметрах BCD, а последовательность восстановления включена и настроена для загрузки в этот раздел. Эти параметры доступны в приведенных ниже пакетах, которые можно легко использовать. Выберите пакеты GPT или MBR в зависимости от устройства.

Шаг 3. Подготовка образа WinPE

Windows 10 ADK, выпуск 1709 содержит среду предварительной установки Windows 10 для всех архитектур (x86/amd64 и arm). Для Windows 10 ADK выпуска 1809 необходимо установить надстройку Windows PE для ADK. В этом winPE вы добавляете следующее:

  • Скрипты восстановления, используемые для процесса восстановления на устройстве

    • startnet.cmd, startnet_recovery.cmd: предопределенные скрипты из каталога templates (см. templates \recovery).
    • Файлы конфигурации: созданные файлы на основе макета устройства, размещенные по адресу Build\<arch>\<bspname>\recovery.
  • Файлы настроек восстановления (необязательно)

    • RecoveryGUI.exe : необязательный простой пользовательский интерфейс для скрытия запроса оболочки восстановления на устройстве. recoveryGUI.exe может быть приложениеМ C++, созданным для целевого ЦП, или платформа .NET Framework 4 Windows из приложения. Newwinpe.cmd необходимо изменить, чтобы добавить платформа .NET Framework 4 возможностей в образ WinPE.
    • pre_recovery_hook.cmd и post_recovery_hook.cmd: необязательные перехватчики для добавления дополнительных действий до и после процесса восстановления.
    • Поместите эти файлы в Source-<arch>\bsp\<bspname>\WinPEExt\recovery папку.
  • Драйверы BSP (необязательно)

    • Возможно, потребуется добавить драйверы bsp в образ winpe для загрузки и записи в хранилище на платформе устройства.
    • Поместите необходимые драйверы в Source-<arch>\bsp\<bspname>\WinPEExt\drivers папку .

Вы можете создать образ WinPE для bsp с указанным выше содержимым с помощью команды New-IoTWindowsImage в IoTCorePShell.

New-IoTWindowsImage <product> <config>
(or) newwinpe <product> <config>

Этот скрипт выдаст winpe в Build\<arch>\<product>\<config>\winpe.wim.

Шаг 4. Обновление файла манифеста компонента и OEMInputFile

  • <ОбновитеFM.xmlbspname> со следующими изменениями (см . примерQCDB410CFM.xml).

    • Включите новый пакет макета устройства, указав новое имя SOC QC8016-R в примере ниже.
    <DeviceLayoutPackages>
       <PackageFile SOC="QC8016-R" Path="%PKGBLD_DIR%" Name="%OEM_NAME%.QCDB410C.DeviceLayout-R.cab" />
       <PackageFile SOC="QC8016" Path="%BSPPKG_DIR%" Name="Qualcomm.QC8916.DeviceLayout.cab" />
    </DeviceLayoutPackages>    
    
  • Обновите имя> продукта или TestOEMInput.xml(и RetailOEMInput.xml), указав следующие изменения (см. пример< восстановления).

    • Укажите имя SOC, определенное <вFM.xml bspname>

      <SOC>QC8016-R</SOC>
      
    • Включение функции RECOVERY_BCD в раздел OEM

      <OEM>
      ...
      <Feature>RECOVERY_BCD</Feature>
      ...
      </OEM>
      
  • Обновите для oemcustomization.cmd вызова Recovery.BcdEdit.cmd

    REM The below should be called on every boot
    if exist C:\RecoveryConfig\Recovery.BcdEdit.cmd (
        call C:\RecoveryConfig\Recovery.BcdEdit.cmd
    )
    

Шаг 5. Создание образа восстановления с помощью Командой New-IoTRecoveryImage

# Build all packages
New-IoTCabPackage All
(or) buildpkg All
# Build the product image
New-IoTFFUImage <product> <config>
(or) buildimage <product> <config>
# Build the recovery image
New-IoTRecoveryImage <product> <config>
(or) buildrecovery <product> <config>

При этом будет создан файл восстановления как Flash_Recovery.ffu