Adición de un mecanismo de recuperación a la imagen principal de Windows 10 IoT

Puedes agregar un mecanismo de recuperación a tu imagen con WinPE como un sistema operativo seguro y archivos WIM como Recuperación SW desde la partición de recuperación, siguiendo los pasos que se indican a continuación.

Consulte Windows 10 IoT Core Recuperación para obtener más información sobre los posibles mecanismos.

Paso 1: Actualizar el diseño del dispositivo con la partición de recuperación

En el archivo devicelayout.xml, agregue una nueva partición MMOS con los siguientes atributos.

  • Sistema de archivos FAT32
  • Tamaño de 2 GB de al menos ( para acomodar wim winPE y wims de recuperación)
  • Tipo de partición
    • GPT: {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}
    • MBR: 0x07

Fragmento xml de ejemplo que se muestra a continuación para un dispositivo GPT (supone un tamaño de sector de 512)

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

Consulta también diseño de dispositivo QCDB410C

Fragmento xml de ejemplo que se proporciona a continuación para un dispositivo MBR

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

Consulta también Diseño de dispositivo de recuperación de MBR 8 GB

Paso 2: Configurar las opciones de BCD

En este paso, la partición MMOS recién agregada se define como una partición de arranque en la configuración de BCD y la secuencia de recuperación está habilitada y configurada para arrancar en esta partición. Esta configuración está disponible en los siguientes paquetes dados que puede usar fácilmente. Seleccione paquetes GPT o MBR en función del dispositivo.

Paso 3: Preparación de la imagen de WinPE

La versión 1709 de Windows 10 ADK contiene el entorno de preinstalación de Windows 10 para todas las arquitecturas (x86/amd64 y arm). Para La versión 1809 de Windows 10 ADK, tendrás que instalar el complemento de Windows PE para ADK. En este WinPE, agrega lo siguiente:

  • Scripts de recuperación usados para el proceso de recuperación en el dispositivo

    • startnet.cmd, startnet_recovery.cmd: scripts predefinidos del directorio templates (consulte templates\recovery).
    • archivos de configuración: archivos generados basados en el diseño del dispositivo, colocados en Build\<arch>\<bspname>\recovery.
  • Archivos de personalizaciones de recuperación (opcional)

    • RecoveryGUI.exe : interfaz de usuario sencilla opcional para ocultar el símbolo del sistema del shell de recuperación en el dispositivo. El recoveryGUI.exe puede ser una aplicación de C++ compilada para la CPU de destino o una aplicación .NET Framework 4 Windows desde la aplicación. Newwinpe.cmd tendrá que modificarse para agregar funcionalidades de .NET Framework 4 a la imagen de WinPE.
    • pre_recovery_hook.cmd y post_recovery_hook.cmd: enlaces opcionales para agregar acciones adicionales antes y después del proceso de recuperación.
    • Coloque estos archivos en la Source-<arch>\bsp\<bspname>\WinPEExt\recovery carpeta .
  • Controladores BSP (opcional)

    • Es posible que tenga que agregar controladores bsp a la imagen winpe para arrancar o escribir en el almacenamiento, en la plataforma del dispositivo.
    • Coloque los controladores necesarios en la Source-<arch>\bsp\<bspname>\WinPEExt\drivers carpeta .

Puede crear la imagen de WinPE para bsp con el contenido anterior mediante el comando New-IoTWindowsImage en IoTCorePShell .

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

Este script generará el winpe en Build\<arch>\<product>\<config>\winpe.wim.

Paso 4: Actualizar el archivo de manifiesto de características y OEMInputFile

  • Actualice el <FM.xmlbspname> con los siguientes cambios (consulte QCDB410CFM.xml ejemplo)

    • Incluya el nuevo paquete de diseño de dispositivo, especificando el nuevo nombre de SOC, QC8016-R en el ejemplo siguiente.
    <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>    
    
  • Actualice productname<>/TestOEMInput.xml (y RetailOEMInput.xml) con los siguientes cambios (consulte el ejemplo de recuperación).

    • Especifique el nombre de SOC tal y como se define en el <FM.xml bspname>

      <SOC>QC8016-R</SOC>
      
    • Incluir la característica RECOVERY_BCD en la sección OEM

      <OEM>
      ...
      <Feature>RECOVERY_BCD</Feature>
      ...
      </OEM>
      
  • Actualice para oemcustomization.cmd invocar a . 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
    )
    

Paso 5: Creación de la imagen de recuperación mediante 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>

Esto generará el archivo de recuperación como Flash_Recovery.ffu