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
- 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.
- En IoTCorePShell, cree un área de trabajo que diga
C:\MyWorkspace
con un nombreContoso
oem para la arquitecturaarm
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.
- 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.
Descargue RPi_BSP.zip en un directorio local, por ejemplo
C:\Downloads\RPi_BSP.zip
, .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
.
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
Expulsar cualquier unidad de almacenamiento extraíble, incluida la tarjeta Micro SD y las unidades flash USB.
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
Inicie el panel de Windows IoT Core.
Conecte la tarjeta micro SD al equipo técnico y selecciónela en la herramienta.
En la sección Configurar un nuevo dispositivo , seleccione Broadcomm [Raspberry Pi 2 & 3] en Tipo de dispositivo.
Seleccione Personalizado en Compilación del sistema operativo.
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.Compruebe que la tarjeta microSD aparece en la selección Unidad .
Opcionalmente, puede establecer las selecciones Nombre del dispositivo y Administración sistrator Password para el dispositivo.
Active la casilla Acepto los términos de licencia de software (inferior derecha) y haga clic en Instalar.
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.
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).
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 :
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.
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í).
- Instale WinPE desde los complementos del entorno de preinstalación de Windows de Windows ADK.
- 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.
- 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:
- Copie el archivo FFU en la unidad raíz de la unidad USB.
- 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.
- 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.
- 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.