Laboratorio 1a: Creación de una imagen básica (create-a-basic-image)

Para empezar, crearemos una imagen básica de Windows 10 IoT Core (IoT Core) y la colocaremos en un dispositivo de hardware específico.

Crearemos una carpeta de productos que represente nuestro primer diseño. Para nuestro primer diseño de producto, personalizaremos lo suficiente para que el dispositivo IoT Core arranque y ejecute la aplicación OOBE integrada, que deberíamos poder ver en un monitor compatible con HDMI.

Para facilitar la ejecución de estos comandos, instalaremos y usaremos el shell de IoT Core, que preestablece varias rutas de acceso y variables que se usan con frecuencia.

Requisitos previos

Asegúrese de que el equipo técnico tenga instaladas las herramientas necesarias antes de crear una imagen de IoT Core.

Consulte Obtener las herramientas necesarias para personalizar Windows IoT Core para preparar el equipo técnico.

Importante

La versión de ADK usada debe coincidir con la versión de paquetes de IoT Core que se usan a continuación.

Necesitará las siguientes herramientas instaladas para completar esta sección:

  • Windows Assessment and Deployment KiT (Windows ADK)
  • Paquetes de Windows 10 IoT Core
  • Complementos de IoT Core ADK
  • Entorno de PowerShell de IoT Core
  • Un editor de texto como Bloc de notas o VS Code

Crear una imagen básica

Crear un área de trabajo

  1. En el Explorador de Windows, vaya a la carpeta donde instaló los complementos de ADK de IoT Core, por ejemplo, C:\IoT-ADK-AddonKit y abra IoTCorePShell.cmd. Se le pedirá que ejecute como administrador.

Esto cargará el módulo de PowerShell y también comprobará las versiones del kit de ADK, IoT Core. Esto también comprobará si hay certificados de prueba en el almacén de certificados y, si no está presente, los instalará automáticamente.

Solución de problemas: Error: "El sistema no encuentra la ruta de acceso especificada". Si lo obtiene, haga clic con el botón derecho en el icono y modifique la ruta de acceso de "Destino" a la ubicación que ha elegido para instalar las herramientas.

  1. En IoTCorePShell, cree un área de trabajo que diga C:\MyWorkspace con un nombre Contoso oem para la arquitectura arm mediante New-IoTWorkspace.
New-IoTWorkspace C:\MyWorkspace Contoso arm
(or) new-ws C:\MyWorkspace Contoso arm

IoT Core admite cuatro arquitecturas, x64,x86,arm y arm64.

Solo se admiten caracteres alfanuméricos en el nombre oem, ya que se usa como prefijo para varios nombres de archivo generados.

Esto genera el IoTWorkspace.xml y establece un número de versión para el diseño, que puede usar para futuras actualizaciones. El primer número de versión tiene como valor predeterminado 10.0.0.0.

Los paquetes necesarios, como Registry.Version, Custom.Cmd y Provisioning.Auto, se importarán automáticamente en el área de trabajo.

PowerShell session showing setup of new IoTWorkSpace

  1. Importe paquetes de ejemplo en el área de trabajo. Puede optar por importar los paquetes de forma selectiva o importar todos.
# Importing Recovery packages from sample workspace (create-a-basic-image)
Import-IoTOEMPackage Recovery.*
(or) importpkg Recovery.*
# Below example imports all packages from the sample workspace (create-a-basic-image)
Import-IoTOEMPackage *
(or) importpkg *

Importación de un BSP de Raspberry Pi

Este siguiente paso es tomar los archivos del paquete de soporte técnico de la placa y agregar o compilar sus archivos .CAB para incluirlos en el archivo FFU.

  1. Descargue RPi_BSP.zip en un directorio local, por ejemplo C:\Downloads\RPi_BSP.zip, .

  2. Importación de bsp mediante Import-IoTBSP

Import-IoTBSP RPi2 C:\Downloads\RPi_BSP.zip
(or) importbsp RPi2 C:\Downloads\RPi_BSP.zip

Para obtener más información sobre los BSP disponibles, consulte BSP de Windows 10 IoT Core.

Creación de un proyecto de prueba

En el entorno de IoT Core Shell, cree una carpeta de producto que use raspberry Pi 2 BSP. Esta carpeta representa un nuevo dispositivo que queremos compilar y contiene archivos de personalización de ejemplo que podemos usar para iniciar el proyecto. Creación de un nuevo producto mediante Add-IoTProduct

Add-IoTProduct ProductA RPi2
(or) newproduct ProductA RPi2

Se le pedirá que escriba la información de SMBIOS , como nombre del fabricante (nombre oem), Familia, SKU, BaseboardManufacturer y BaseboardProduct. Estos son algunos valores de ejemplo:

  • Nombre del OEM del sistema: Fabricam
  • Nombre de familia del sistema: FabricamHub
  • Número de SKU del sistema: AI-001
  • Flecha del fabricante de placa base
  • Producto de placa base: Raspberry Pi 2

El nombre BSP es el mismo que el nombre de carpeta del BSP. Puede ver qué BSP están disponibles buscando en las C:\MyWorkspace\Source-<arch>\BSP carpetas.

Esto crea la carpeta : C:\MyWorkspace\Source-<arch>\Products\\ProductA.

New Product

archivo de OemCustomization.cmd

Cada imagen incluye un archivo oemcustomization.cmd que se ejecutará en cada arranque del dispositivo. Tiene la capacidad de modificar este archivo para personalizar lo que se ejecuta al arrancar. Este archivo se encuentra en C:\MyWorkspace\Source-<arch>\Products\\ProductA en este ejemplo. El contenido del archivo es el siguiente:

@echo off
REM OEM Customization Script file
REM This script if included in the image, is called everytime the system boots.

reg query HKLM\Software\IoT /v FirstBootDone >nul 2>&1

if %errorlevel% == 1 (
    REM Enable Administrator User
    net user Administrator p@ssw0rd /active:yes
    if exist C:\Data\oobe (
        call folderpermissions.exe 'C:\Data\oobe -e'
    )
REM - Enable the below if you need secure boot/bitlocker
REM Enable Secureboot
REM if exist c:\IoTSec\setup.secureboot.cmd  (
REM    call c:\IoTSec\setup.secureboot.cmd
REM )

REM Enable Bitlocker
REM if exist c:\IoTSec\setup.bitlocker.cmd  (
REM    call c:\IoTSec\setup.bitlocker.cmd
REM )
    reg add HKLM\Software\IoT /v FirstBootDone /t REG_DWORD /d 1 /f >nul 2>&1
)

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

REM Set the crashdump file locations to data partition, set on every boot.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v DedicatedDumpFile /t REG_SZ /d C:\Data\DedicatedDumpFile.sys /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v DumpFile /t REG_SZ /d C:\Data\MEMORY.DMP /f

Nota:

Tenga en cuenta que las características de seguridad como BitLocker y SecureBoot están deshabilitadas de forma predeterminada para una imagen de prueba personalizada. Si desea incluir estas características (en una imagen comercial), puede quitar la marca de comentario de las líneas adecuadas en el archivo, antes de crear la imagen.

Nota:

Tenga en cuenta que los comandos de este archivo se ejecutan con privilegios del sistema local.

Compilar paquetes

Desde IoT Core Shell, prepare el entorno para crear productos mediante la compilación de todos los paquetes de las carpetas de trabajo mediante New-IoTCabPackage:

New-IoTCabPackage All
(or) buildpkg All

Nota:

Si recibe errores de SignTool al compilar los paquetes en modo de prueba, ejecute installoemcerts.cmd para instalar los certificados de prueba en el equipo técnico.

Creación de una imagen

  1. Expulsar cualquier unidad de almacenamiento extraíble, incluida la tarjeta Micro SD y las unidades flash USB.

  2. Compile el archivo de imagen FFU escribiendo el siguiente comando en el entorno de PowerShell de IoT Core mediante New-IoTFFUImage:

New-IoTFFUImage ProductA Test
(or) buildimage ProductA Test

Esto compila un archivo FFU con la imagen básica en C:\MyWorkspace\Build\<arch>\ProductA\Test. Esta imagen de prueba incluirá herramientas adicionales que se pueden usar con fines de depuración. La compilación del archivo FFU final tardará entre 10 y 30 minutos en completarse.

Para dirigir toda la salida a la consola en lugar del archivo de registro, agregue -Verbose una marca, como la siguiente.

new-IoTFFUImage -Verbose ProductX Test

Nota:

Si obtiene 0x80070005 o 0x800705b4 como código de error, desconecte todas las unidades externas (incluidas las tarjetas micro SD y las unidades usb) e inténtelo de nuevo. Si esto no funciona, vuelva a Configurar su PC y descargue los ejemplos y asegúrese de que todo está instalado.

Flash de una imagen de Windows IoT Core

Ahora que se ha creado el archivo de imagen FFU, puede enviar este archivo para flash e implementar la imagen eimage en el dispositivo. A continuación se enumeran los pasos para flashear el archivo de imagen FFU en dispositivos fabricantes específicos.

Requisitos previos y requisitos

Necesitará las siguientes herramientas instaladas para completar esta sección:

  • Panel de Windows IoT Core (solo Raspberry Pi)
  • Herramienta de actualización de Dragonboard (solo Qualcomm DragonBorad)
  • Herramienta de creación de imágenes y mantenimiento y administración (DICM) de implementación (solo dispositivos Intel)

Como estamos usando Raspberry Pi aquí, empezaremos con Raspberry Pi, pero también explicaremos cómo flashear imágenes en otros dispositivos.

Raspberry Pi

  1. Inicie el panel de Windows IoT Core.

  2. Conecte la tarjeta micro SD al equipo técnico y selecciónela en la herramienta.

  3. En la sección Configurar un nuevo dispositivo , seleccione Broadcomm [Raspberry Pi 2 & 3] en Tipo de dispositivo.

  4. Seleccione Personalizado en Compilación del sistema operativo.

  5. Haga clic en Examinar y vaya y seleccione el archivo FFU que creó anteriormente. En este caso, el archivo FFU se encuentra en C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu. A continuación, haga clic en Siguiente.

  6. Compruebe que la tarjeta microSD aparece en la selección Unidad .

  7. Opcionalmente, puede establecer las selecciones Nombre del dispositivo y Administración sistrator Password para el dispositivo.

  8. Active la casilla Acepto los términos de licencia de software (inferior derecha) y haga clic en Instalar.

IoT Dashboard dialog box in Windows settings showing new device set up

El panel de Windows IoT Core ahora abrirá una ventana de comandos y usará DISM (Herramienta de administración y mantenimiento de imágenes de implementación) para flashear el archivo FFU en la tarjeta microSD.

Raspberry Pi Flashing DISM

Nota:

Como alternativa, también puede usar el comando DISM para flashear manualmente la imagen: dism.exe /Apply-Image /ImageFile:"D:\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

Una vez completado el proceso de parpadeo, expulse la tarjeta microSD del equipo técnico e insértela en raspberry Pi. Vuelva a conectar la energía para arrancar Windows IoT Core. Debería ver la aplicación predeterminada de IoT Core, que muestra información básica sobre la imagen.

Qualcomm

DragonBoard 410c

Qualcomm ha proporcionado la aplicación Dragonboard Update Tool , que usaremos para flashear el archivo de imagen FFU en dragonboard 410c. Puede descargar la versión x86 o x64 (se recomienda x64).

DragonBoard update tool

Una vez que haya instalado la herramienta de actualización de DragonBoard, primero debe colocar el dispositivo DragonBoard en modo de programación. Esto se hace estableciendo dipswitch #1 (en la parte posterior del dispositivo) en la posición ON :

Dragonboard Dipswitch

Conectar el dispositivo DragonBoard al equipo técnico con un cable microUSB y encendido en la placa.

Ejecute la herramienta de actualización de DragonBoard, busque el archivo de imagen FFU que va a implementar y presione el botón Programa . Debería ver un estado de Conectar ion verde y una barra de progreso cuando el dispositivo parpadee en el archivo FFU.

Una vez completado el proceso de parpadeo, desconecte la alimentación de la placa, así como el cable microUSB. A continuación, debe volver a voltear el dipswitch #1 a la posición OFF . Vuelva a conectar la energía para arrancar Windows IoT Core.

DragonBoard Update tool position 1DragonBoard Update tool position 2

Intel

Apollo Lake/Braswell/Cherry Trail

Usaremos dism (herramienta de administración de imágenes de implementación y mantenimiento) y un stick USB de arranque para flashear el archivo de imagen FFU en el dispositivo Intel especificado (Apollo Lake/Braswell/Cherry Trail). Puede encontrar información adicional sobre DISM aquí.

Creación de una unidad de arranque USB

En primer lugar, es necesario crear una unidad USB de arranque que podamos usar para arrancar en el dispositivo de hardware Intel especificado. Podemos usar Window PE (WinPE) para esto (la información adicional de WinPE está aquí).

  1. Instale WinPE desde los complementos del entorno de preinstalación de Windows de Windows ADK.

WinPE Install screen

  1. Preparación de la unidad USB

La unidad USB que desea usar debe tener el formato correcto para poder cargar WinPE en ella. Siga estos teps para dar formato correcto a la unidad USB:

  • Ejecución de la diskpart herramienta desde un símbolo del sistema administrativo
  • Ejecute list disk para ver la lista de discos disponibles.
  • Ejecute select disk X, donde X corresponde al número de disco de la unidad USB.
  • Ejecutar clean para limpiar el disco seleccionado

Nota:

Si se produce el siguiente error, ejecute convert mbr:

ERROR: Failed to format "F:"; DiskPart errorlevel -2147212244
  • Ejecute create partition primary para crear una partición principal en el disco.
  • Ejecutar format fs=fat32 quick para dar formato a la unidad
  • Ejecutar assign para asignar la unidad
  • Salga de diskpart. La unidad USB ahora tiene el formato y está listo para tener WinPE instalado.
  1. Creación de archivos de trabajo de WinPE

Ahora es necesario crear una copia en funcionamiento de los archivos de Windows PE en el equipo técnico. Esto se puede hacer mediante el programa de línea de comandos Deployment and Imaging Tools Environment . La manera más fácil de iniciar Deployment and Imaging Tools Environment es buscar la implementación a través del menú Inicio.

Ejecute el programa de línea de comandos Deployment and Imaging Tools Environment como administrador y ejecute el siguiente comando:

copype amd64 C:\WinPE_amd64

Esto creará la copia de trabajo de los archivos de Windows PE en C:\WinPE_amd64.

Inserte su unidad USB en el equipo técnico y ejecute este comando para instalar Windows PE en la unidad USB. Asegúrese de que puede reemplazar X por la letra de unidad de la unidad USB:

MakeWinPEMedia /UFD C:\WinPE_amd64 X:
  1. Copie el archivo FFU en la unidad raíz de la unidad USB.
  2. Inserte la unidad USB en el dispositivo de hardware Intel y arranque desde la unidad USB. Es posible que tenga que escribir el BIOS (o menú de arranque) del dispositivo de hardware para especificar que arranque desde una unidad USB.
  3. Una vez que se inicie el entorno de Windows PE, verá una ventana de comandos. Cambie la unidad y el directorio actual a la ubicación del archivo FFU (en función de la enumeración de unidades, podría estar en C: o D: . etc.) y ejecute el siguiente comando para flashear el archivo de imagen FFU:
dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

Nota:

La mayoría de las veces, el destino de almacenamiento incorporado que se va a flashear se enumera como PhysicalDrive0, sin embargo, si hay varios dispositivos de almacenamiento, puede enumerar como otro número de unidad. Puede usar el list disk comando en diskpart para comprobar el número de unidad.

  1. Una vez completado el proceso de parpadeo, apague el dispositivo de hardware y quite la unidad USB. Vuelva a conectar la energía al dispositivo de hardware para arrancar Windows IoT Core.
Comandos diskpart
C:\>diskpart
 Microsoft DiskPart version 10.0.17134.1
 Copyright (C) Microsoft Corporation.
 On computer: LWIN-CNCY-BUILD

 DISKPART> list disk

 Disk ###  Status         Size     Free     Dyn  Gpt
 --------  -------------  -------  -------  ---  ---
 Disk 0    Online          447 GB  1024 KB        *
 Disk 1    Online          167 GB  1024 KB        *
 Disk 2    Online           14 GB      0 B        *

 DISKPART> select disk 2
 Disk 2 is now the selected disk.

 DISKPART> clean
 DiskPart succeeded in cleaning the disk.

 DISKPART> convert mbr
 DiskPart successfully converted the selected disk to MBR format.

 DISKPART> create partition primary
 DiskPart succeeded in creating the specified partition.

 DISKPART> format fs=fat32 quick
   100 percent completed

 DiskPart successfully formatted the volume.

 DISKPART> assign
 DiskPart successfully assigned the drive letter or mount point.

 DISKPART> exit
Comandos winPE
copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
Comando DISM (a través de WinPE en el dispositivo de hardware Intel)
X:\WinPE>d:

D:\>dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

Pasos siguientes

Deje el dispositivo activado por ahora y continúe con Lab 1b: Agregar una aplicación a la imagen.