Laboratório 1a: Criar uma imagem básica (create-a-basic-image)
Para começar, vamos criar uma imagem básica do Windows 10 IoT Core (IoT Core) e piscá-la em um dispositivo de hardware específico.
Criaremos uma pasta de produto que representa nosso primeiro design. Para nosso primeiro design de produto, personalizaremos apenas o suficiente para que o dispositivo principal da IoT inicialize e execute o aplicativo OOBE integrado, que devemos ser capazes de ver em um monitor compatível com HDMI.
Para facilitar a execução desses comandos, instalaremos e usaremos o shell do IoT Core, que predefine vários caminhos e variáveis usados com frequência.
Pré-requisitos
verifique se o computador do técnico tem as ferramentas necessárias instaladas antes de criar uma imagem do IoT Core.
Consulte Obter as ferramentas necessárias para personalizar o Windows IoT Core para preparar o computador do técnico.
Importante
A versão do ADK usada deve corresponder à versão dos Pacotes Principais do IoT usados abaixo.
Você precisará das seguintes ferramentas instaladas para concluir esta seção:
- KiT de avaliação e implantação do Windows (Windows ADK)
- Pacotes do Windows 10 IoT Core
- Complementos do IoT Core ADK
- Ambiente do PowerShell do IoT Core
- Um editor de texto como o Bloco de Notas ou o VS Code
Criar uma imagem básica
Criar um workspace
- No Windows Explorer, vá para a pasta onde você instalou os complementos do IoT Core ADK, por exemplo, C:\IoT-ADK-AddonKit, e abra IoTCorePShell.cmd. Ele deve solicitar que você seja executado como administrador.
Isso carregará o módulo do PowerShell e também verificará as versões do kit ADK, IoT Core. Isso também verificará os certificados de teste no repositório de certificados e, se não estiverem presentes, os instalará automaticamente.
Solução de problemas: Erro: "O sistema não pode encontrar o caminho especificado". Se você obtiver isso, clique com o botão direito do mouse no ícone e modifique o caminho em "Destino" para o local escolhido para instalar as ferramentas.
- No IoTCorePShell, crie um novo espaço de trabalho com
C:\MyWorkspace
um nomeContoso
OEM para a arquiteturaarm
usando New-IoTWorkspace
New-IoTWorkspace C:\MyWorkspace Contoso arm
(or) new-ws C:\MyWorkspace Contoso arm
O IoT Core suporta quatro arquiteturas, x64,x86,arm e arm64.
Somente caracteres alfanuméricos são suportados no nome do OEM, pois isso é usado como um prefixo para vários nomes de arquivo gerados.
Isso gera o IoTWorkspace.xml e define um número de versão para o design, que você pode usar para atualizações futuras. O primeiro número de versão padrão é 10.0.0.0.
Os pacotes necessários, como Registry.Version, Custom.Cmd e Provisioning.Auto, serão importados para o espaço de trabalho automaticamente.
- Importe pacotes de exemplo para o espaço de trabalho. Você pode optar por importar os pacotes seletivamente ou 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 *
Importar um Raspberry Pi BSP
Esta próxima etapa é pegar os arquivos do Board Support Package e extra/build seus arquivos .CAB para incluir no arquivo FFU.
Faça o download RPi_BSP.zip para um diretório local, digamos
C:\Downloads\RPi_BSP.zip
.Importar o bsp usando Import-IoTBSP
Import-IoTBSP RPi2 C:\Downloads\RPi_BSP.zip
(or) importbsp RPi2 C:\Downloads\RPi_BSP.zip
Para obter mais informações sobre BSPs disponíveis, consulte BSPs do Windows 10 IoT Core.
Criar um projeto de teste
No ambiente do Shell do IoT Core, crie uma nova pasta de produto que use o BSP do Raspberry Pi 2. Esta pasta representa um novo dispositivo que queremos criar e contém arquivos de personalização de exemplo que podemos usar para iniciar nosso projeto. Criar um novo produto usando Add-IoTProduct
Add-IoTProduct ProductA RPi2
(or) newproduct ProductA RPi2
Você será solicitado a inserir as informações do SMBIOS, como Nome do fabricante (nome do OEM), Família, SKU, BaseboardManufacturer e BaseboardProduct. Aqui estão alguns valores de exemplo:
- Nome do OEM do sistema: Fabricam
- Nome da família do sistema: FabricamHub
- Número da SKU do sistema: AI-001
- Seta do fabricante do rodapé
- Produto Baseboard: Raspberry Pi 2
O nome do BSP é o mesmo que o nome da pasta para o BSP. Você pode ver quais BSPs estão disponíveis procurando nas C:\MyWorkspace\Source-<arch>\BSP
pastas.
Isso cria a pasta: C:\MyWorkspace\Source-<arch>\Products\\ProductA
.
Arquivo OemCustomization.cmd
Cada imagem inclui um arquivo oemcustomization.cmd
que será executado em cada inicialização do seu dispositivo. Você tem a capacidade de modificar esse arquivo para personalizar o que é executado na inicialização. Esse arquivo está localizado em C:\MyWorkspace\Source-<arch>\Products\\ProductA
neste exemplo. O conteúdo do arquivo é o seguinte:
@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
Observação
Lembre-se de que recursos de segurança como BitLocker e SecureBoot estão desabilitados por padrão para uma imagem de teste personalizada. Se você deseja incluir esses recursos (em uma imagem de varejo), você pode descomentar as linhas apropriadas no arquivo, antes de criar sua imagem.
Observação
Lembre-se de que os comandos neste arquivo são executados com privilégio de sistema local.
Pacotes de compilação
No IoT Core Shell, prepare seu ambiente para criar produtos criando todos os pacotes nas pastas de trabalho usando New-IoTCabPackage:
New-IoTCabPackage All
(or) buildpkg All
Observação
Se você receber erros do SignTool ao compilar os pacotes no modo de teste, execute installoemcerts.cmd
para instalar os certificados de teste no seu PC técnico.
Criar uma imagem
Ejete todas as unidades de armazenamento removíveis, incluindo o cartão Micro SD e quaisquer unidades flash USB.
Crie o arquivo de imagem FFU inserindo o seguinte comando no Ambiente do PowerShell do IoT Core usando New-IoTFFUImage:
New-IoTFFUImage ProductA Test
(or) buildimage ProductA Test
Isso cria um arquivo FFU com sua imagem básica em C:\MyWorkspace\Build\<arch>\ProductA\Test
. Essa imagem de teste incluirá ferramentas adicionais que podem ser usadas para fins de depuração. A construção do arquivo FFU final levará cerca de 10 a 30 minutos para ser concluída.
Para direcionar toda a saída para o console em vez do arquivo de log, adicione -Verbose
sinalizador, como o abaixo.
new-IoTFFUImage -Verbose ProductX Test
Observação
Se você receber 0x80070005 ou 0x800705b4 como um código de erro, desconecte todas as unidades externas (incluindo cartões micro SD e pen drives USB) e tente novamente. Se isso não funcionar, volte para Configurar seu PC e baixe os exemplos e verifique se tudo está instalado.
Atualizar uma imagem do Windows IoT Core
Agora que seu arquivo de imagem FFU é construído, você pode ues este arquivo para flash e implantar th eimage para o seu dispositivo. Listado abaixo ar as etapas para piscar o arquivo de imagem FFU para dispositivos específicos do fabricante.
Pré-requisitos/Requisitos
Você precisará das seguintes ferramentas instaladas para concluir esta seção:
- Painel do Windows IoT Core (somente Raspberry Pi)
- Ferramenta de atualização do Dragonboard (somente Qualcomm DragonBorad)
- Ferramenta DICM (Deployment Imaging and Servicing and Management, criação de imagens de implantação) (somente dispositivos Intel)
Como estamos usando o Raspberry Pi aqui, começaremos com o Raspberry Pi, mas também explicaremos como piscar imagens em outros dispositivos.
Raspberry Pi
Inicie o Painel do Windows IoT Core.
Conecte seu cartão micro SD ao PC do técnico e selecione-o na ferramenta.
Na seção Configurar um novo dispositivo, selecione Broadcomm [Raspberry Pi 2 & 3] em Tipo de dispositivo.
Selecione Personalizado em Compilação do sistema operacional.
Clique em Procurar e navegue e selecione o arquivo FFU criado anteriormente. Nesse caso, o arquivo FFU está localizado em
C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu
. Em seguida, clique em Próximo.Verifique se o cartão microSD está listado na seleção Unidade.
Opcionalmente, você pode definir as seleções Nome do dispositivo e Senha do administrador para o dispositivo.
Marque a caixa de seleção Aceito os termos de licença de software (canto inferior direito) e clique em Instalar.
O Painel do Windows IoT Core agora abrirá uma janela de comando e usará o DISM (Deployment Image Servicing and Management Tool) para piscar o arquivo FFU para o cartão microSD.
Observação
Como alternativa, você também pode usar o comando DISM para piscar manualmente a imagem: dism.exe /Apply-Image /ImageFile:"D:\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck
Quando o processo de piscar estiver concluído, ejete o cartão microSD do PC do técnico e insira-o no Raspberry Pi. Reconecte a energia para inicializar o Windows IoT Core. Você deve ver o aplicativo IoT Core Default, que mostra informações básicas sobre a imagem.
Qualcomm
Placa de Dragão 410c
A Qualcomm forneceu o aplicativo Dragonboard Update Tool, que usaremos para piscar o arquivo de imagem FFU para o Dragonboard 410c. Você pode baixar a versão x86 ou x64 (recomendamos x64).
Depois de instalar a Ferramenta de Atualização do DragonBoard, você deve primeiro colocar o dispositivo DragonBoard no modo de programação. Isso é feito definindo dipswitch #1 (na parte traseira do dispositivo) para a posição ON :
Conecte o dispositivo DragonBoard ao seu PC técnico com um cabo microUSB e ligue a placa.
Execute a DragonBoard Update Tool, procure o arquivo de imagem FFU que você está implantando e pressione o botão Programa . Você verá um Status de Conexão verde e uma barra de progresso quando o dispositivo estiver piscando o arquivo FFU.
Quando o processo de piscar estiver concluído, desconecte a alimentação da placa, bem como o cabo microUSB. Em seguida, você precisa virar o dipswitch #1 de volta para a posição OFF . Reconecte a energia para inicializar o Windows IoT Core.
Inteligência
Lago Apollo/Braswell/Trilha das Cerejeiras
Usaremos o DISM (Deployment Image and Servicing Management Tool) e um pendrive inicializável para piscar o arquivo de imagem FFU para o dispositivo Intel especificado (Apollo Lake/Braswell/Cherry Trail). Informações adicionais sobre o DISM podem ser encontradas aqui.
Criando uma unidade USB inicializável
Primeiro precisamos criar uma unidade USB inicializável que possamos usar para inicializar no dispositivo de hardware Intel especificado. Podemos usar o Windows PE (WinPE) para isso (informações adicionais sobre o WinPE estão aqui).
- Instale o WinPE a partir dos complementos do Ambiente de Pré-instalação do Windows ADK.
- Preparar unidade USB
A unidade USB que você deseja usar deve ser formatada corretamente antes que possamos carregar o WinPE nela. Siga estes teps para formatar corretamente sua unidade USB:
- Executar a ferramenta a
diskpart
partir de um prompt de comando administrativo - Executar
list disk
para ver a lista de discos disponíveis - Execute
select disk X
, onde X corresponde ao número do disco da unidade USB - Executar
clean
para limpar o disco selecionado
Observação
Se você encontrar o seguinte erro, execute convert mbr
:
ERROR: Failed to format "F:"; DiskPart errorlevel -2147212244
- Executar
create partition primary
para criar uma partição primária no disco - Executar
format fs=fat32 quick
para formatar a unidade - Executar
assign
para atribuir a unidade - Saia do
diskpart
. Sua unidade USB agora está formatada e pronta para ter o WinPE instalado.
- Criar arquivos de trabalho do WinPE
Agora precisamos criar uma cópia funcional dos arquivos do Windows PE no PC do técnico. Isso pode ser feito usando o programa de linha de comando Deployment and Imaging Tools Environment . A maneira mais fácil de iniciar o Deployment and Imaging Tools Environment
é procurar implantar via Menu Iniciar.
Execute o programa de linha de comando Deployment and Imaging Tools Environment como administrador e execute o seguinte comando:
copype amd64 C:\WinPE_amd64
Isso criará a cópia de trabalho dos arquivos do Windows PE em C:\WinPE_amd64.
Insira a unidade USB no PC do técnico e execute este comando para instalar o Windows PE na unidade USB. Certifique-se de que pode substituir o X pela letra da unidade USB:
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
- Copie o arquivo FFU para a unidade raiz da unidade USB.
- Insira a unidade USB no dispositivo de hardware Intel e inicialize a partir da unidade USB. Talvez seja necessário entrar no BIOS (ou no menu de inicialização) do dispositivo de hardware para especificar a inicialização a partir de uma unidade USB.
- Quando o ambiente do Windows PE for inicializado, você verá uma janela de comando. Altere a unidade e o diretório atual para o local do arquivo FFU (dependendo da enumeração da unidade, ele pode estar em C: ou D: .. Etc.) e execute o seguinte comando para piscar o arquivo de imagem FFU:
dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck
Observação
Na maioria das vezes, o destino de armazenamento integrado a ser piscado é enumerado como , no entanto, se houver vários dispositivos de armazenamento, ele pode enumerar como PhysicalDrive0
outro número de unidade. Você pode usar o comando in diskpart
para verificar o list disk
número da unidade.
- Quando o processo de piscar estiver concluído, desligue o dispositivo de hardware e remova a unidade USB. Reconecte a energia ao dispositivo de hardware para inicializar o Windows IoT Core.
Comandos do 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 do WinPE
copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
Comando DISM (via WinPE no 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
Próximas etapas
Deixe o dispositivo ligado por enquanto e continue no Laboratório 1b: Adicionar um aplicativo à sua imagem.