Lab 1a: Erstellen eines Basisimages (create-a-basic-image)

Zunächst erstellen wir ein Basisimage mit Windows 10 IoT Core (IoT Core) und flashen es auf ein bestimmtes Hardwaregerät.

Wir erstellen einen Produktordner, der unseren ersten Entwurf darstellt. Für unseren ersten Produktentwurf nehmen wir nur so viele Anpassungen vor, dass das IoT Core-Gerät startet und die integrierte OOBE-App ausführt – dieser Vorgang sollte auf einem HDMI-kompatiblen Monitor zu sehen sein.

Um die Ausführung dieser Befehle zu vereinfachen, installieren und verwenden wir die IoT Core-Shell, in der mehrere häufig verwendete Pfade und Variablen voreingestellt sind.

Voraussetzungen

Überzeugen Sie sich davon, dass auf dem PC, den Sie verwenden möchten, die erforderlichen Tools installiert sind, bevor Sie ein IoT Core-Image erstellen.

Informationen dazu finden Sie unter Abrufen der zum Anpassen von Windows IoT Core erforderlichen Tools.

Wichtig

Die verwendete ADK-Version muss mit der Version der unten gezeigten IoT Core-Pakete übereinstimmen.

Die folgenden Tools müssen installiert sein, um diesen Abschnitt abzuschließen:

  • Windows Assessment and Deployment Kit (Windows ADK)
  • Windows 10 IoT Core-Pakete
  • IoT Core-ADK-Add-Ons
  • IoT Core-PowerShell-Umgebung
  • Ein Texteditor wie der Windows-Editor oder VS Code

Erstellen eines Basisimages

Erstellen eines Arbeitsbereichs

  1. Wechseln Sie im Windows-Explorer zu dem Ordner, in dem Sie die IoT Core-ADK-Add-Ons installiert haben, z. B. C:\IoT-ADK-AddonKit, und öffnen Sie IoTCorePShell.cmd. Sie sollten aufgefordert werden, die Shell als Administrator auszuführen.

Damit wird das PowerShell-Modul geladen, und die Versionen von ADK und IoT Core-Kit werden überprüft. Es wird auch nach Testzertifikaten im Zertifikatspeicher gesucht, und wenn sie nicht vorhanden sind, werden sie automatisch installiert.

Problembehandlung bei Fehler „Das System kann den angegebenen Pfad nicht finden“. Wenn dieser Fehler angezeigt wird, klicken Sie mit der rechten Maustaste auf das Symbol, und ändern Sie den Pfad unter „Ziel“ in den Speicherort, den Sie zum Installieren der Tools ausgewählt haben.

  1. Erstellen Sie in IoTCorePShell mit New-IoTWorkspace einen neuen Arbeitsbereich in C:\MyWorkspace mit dem OEM-Namen Contoso für die Architektur arm.
New-IoTWorkspace C:\MyWorkspace Contoso arm
(or) new-ws C:\MyWorkspace Contoso arm

IoT Core unterstützt vier Architekturen: x64, x86, ARM und ARM64.

Im OEM-Namen werden nur alphanumerische Zeichen unterstützt, da dieser als Präfix für verschiedene generierte Dateinamen verwendet wird.

Dadurch wird die Datei „IoTWorkspace.xml“ generiert und eine Versionsnummer für den Entwurf festgelegt, die Sie für zukünftige Updates verwenden können. Die erste Versionsnummer ist standardmäßig 10.0.0.0.

Die erforderlichen Pakete wie Registry.Version, Custom.Cmd und Provisioning.Auto werden automatisch in den Arbeitsbereich importiert.

PowerShell session showing setup of new IoTWorkSpace

  1. Importieren Sie Beispielpakete in den Arbeitsbereich. Sie können die Pakete einzeln oder alle gleichzeitig importieren.
# 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 *

Importieren eines Raspberry Pi-BSP

Im nächsten Schritt verwenden Sie die BSP-Dateien (Board Support Package) und extrahieren bzw. kompilieren die zugehörigen CAB Dateien, die in die FFU-Datei aufgenommen werden sollen.

  1. Laden Sie RPi_BSP.zip in ein lokales Verzeichnis herunter, z. B. C:\Downloads\RPi_BSP.zip.

  2. Importieren Sie das BSP mithilfe von Import-IoTBSP.

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

Weitere Informationen zu verfügbaren BSPs finden Sie unter Windows 10 IoT Core-BSPs.

Erstellen eines Testprojekts

Erstellen Sie in der IoT Core-Shellumgebung einen neuen Produktordner, der das Raspberry Pi 2-BSP verwendet. Dieser Ordner repräsentiert ein neues Gerät, das wir erstellen möchten, und enthält Beispielanpassungsdateien, die wir zum Starten des Projekts verwenden können. Erstellen Sie ein neues Produkt mithilfe von Add-IoTProduct.

Add-IoTProduct ProductA RPi2
(or) newproduct ProductA RPi2

Sie werden aufgefordert, die SMBIOS-Informationen einzugeben, wie beispielsweise den Herstellernamen (OEM-Name), die Systemfamilie, die SKU sowie Hauptplatinenhersteller und -produkt. Hier sehen Sie ein paar Beispielwerte:

  • OEM-Name des Systems: Fabricam
  • Name der Systemfamilie: FabricamHub
  • SKU-Nummer des Systems: AI-001
  • Hauptplatinenhersteller: Arrow
  • Hauptplatinenprodukt: Raspberry Pi 2

Der BSP-Name entspricht dem Ordnernamen für das BSP. In den Ordnern unter C:\MyWorkspace\Source-<arch>\BSP können Sie sehen, welche BSPs verfügbar sind.

Dadurch wird der Ordner C:\MyWorkspace\Source-<arch>\Products\\ProductA erstellt.

New Product

Datei „OemCustomization.cmd“

Jedes Image enthält eine Datei namens oemcustomization.cmd, die bei jedem Start Ihres Geräts ausgeführt wird. Sie haben die Möglichkeit, diese Datei zu ändern, um die Vorgänge anzupassen, die beim Start ausgeführt werden. In diesem Beispiel befindet die Datei sich in C:\MyWorkspace\Source-<arch>\Products\\ProductA. Die Datei enthält folgende Inhalte:

@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

Hinweis

Beachten Sie, dass Sicherheitsfeatures wie BitLocker und SecureBoot für ein benutzerdefiniertes Testimage standardmäßig deaktiviert sind. Wenn Sie diese Features (in einem Image für den Einzelhandel) einschließen möchten, können Sie die Auskommentierung der entsprechenden Zeilen in der Datei aufheben, bevor Sie Ihr Image erstellen.

Hinweis

Beachten Sie, dass die Befehle in dieser Datei mit lokalen Systemberechtigungen ausgeführt werden.

Kompilieren von Paketen

Bereiten Sie in der IoT Core Shell Ihre Umgebung auf die Erstellung von Produkten vor, indem Sie alle Pakete in den Arbeitsordnern mithilfe von New-IoTCabPackage kompilieren:

New-IoTCabPackage All
(or) buildpkg All

Hinweis

Wenn beim Kompilieren der Pakete SignTool-Fehler im Testmodus Fehler angezeigt werden, führen Sie installoemcerts.cmd aus, um die Testzertifikate auf Ihrem PC zu installieren.

Erstellen eines Images

  1. Werfen Sie alle Wechseldatenträger aus, einschließlich der Micro-SD-Karte und sämtlicher USB-Speichersticks.

  2. Erstellen Sie die FFU-Imagedatei, indem Sie den folgenden New-IoTFFUImage-Befehl in die IoT Core-PowerShell-Umgebung eingeben:

New-IoTFFUImage ProductA Test
(or) buildimage ProductA Test

Dadurch wird eine FFU-Datei mit Ihrem Basisimage in C:\MyWorkspace\Build\<arch>\ProductA\Test erstellt. Dieses Testimage enthält zusätzliche Tools, die für Debugzwecke verwendet werden können. Das Erstellen der endgültigen FFU-Datei dauert etwa 10 bis 30 Minuten.

Wenn Sie die Ausgabe an die Konsole statt an die Protokolldatei leiten möchten, fügen Sie das Flag -Verbose hinzu, wie im Beispiel unten gezeigt.

new-IoTFFUImage -Verbose ProductX Test

Hinweis

Wenn der Fehlercode 0x80070005 oder 0x800705b4 angezeigt wird, trennen Sie alle externen Laufwerke (einschließlich Micro-SD-Karten und USB-Sticks), und versuchen Sie es erneut. Wenn dies nicht funktioniert, wechseln Sie zurück zu Einrichten Ihres PCs und Herunterladen der Beispiele, und stellen Sie sicher, dass alles installiert ist.

Flashen eines Windows IoT Core-Images

Nachdem die FFU-Imagedatei erstellt wurde, können Sie diese Datei zum Flashen und Bereitstellen des Images auf Ihrem Gerät verwenden. Im Folgenden sehen Sie die Schritte, die ausgeführt werden müssen, um die FFU-Imagedatei auf Geräte bestimmter Hersteller zu flashen.

Voraussetzungen/Anforderungen

Die folgenden Tools müssen installiert sein, um diesen Abschnitt abzuschließen:

  • Windows IoT Core-Dashboard (nur Raspberry Pi)
  • DragonBoard Update Tool (nur Qualcomm DragonBoard)
  • DISM-Tool (Deployment Imaging Servicing and Management) (nur Intel-Geräte)

Da wir hier einen Raspberry Pi verwenden, beginnen wir mit Raspberry Pi, erläutern aber auch das Flashen von Images auf andere Geräte.

Raspberry Pi

  1. Starten Sie das Windows IoT Core-Dashboard.

  2. Schließen Sie Ihre Micro-SD-Karte an Ihren PC an, und wählen Sie sie im Tool aus.

  3. Wählen Sie im Abschnitt "Setup a new device" unter "Device Type" die Option "Broadcomm [Raspberry Pi 2 & 3]"aus.

  4. Wählen Sie unter „Betriebssystembuild“ den Eintrag Benutzerdefiniert aus.

  5. Klicken Sie auf Durchsuchen, navigieren Sie zu der zuvor erstellten FFU-Datei, und wählen Sie sie aus. In diesem Fall befindet sich Ihre FFU-Datei unter C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu. Klicken Sie dann auf Weiter.

  6. Stellen Sie sicher, dass Ihre Micro-SD-Karte in der Auswahl Laufwerk aufgeführt ist.

  7. Optional können Sie auch Optionen für Gerätename und Administratorkennwort für Ihr Gerät festlegen.

  8. Aktivieren Sie das Kontrollkästchen Ich akzeptiere die Softwarelizenzbedingungen (unten rechts), und klicken Sie auf Installieren.

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

Das Windows IoT Core-Dashboard öffnet nun ein Befehlsfenster und verwendet das DISM-Tool (Deployment Image Servicing and Management), um die FFU-Datei auf Ihre Micro-SD-Karte zu flashen.

Raspberry Pi Flashing DISM

Hinweis

Alternativ können Sie auch den DISM-Befehl verwenden, um das Image manuell zu flashen: dism.exe /Apply-Image /ImageFile:"D:\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

Sobald der Flashvorgang abgeschlossen ist, werfen Sie die Micro-SD-Karte aus dem PC aus, und führen Sie sie in den Raspberry Pi ein. Schließen Sie das Gerät erneut an die Stromversorgung an, um Windows IoT Core zu starten. Sie sollten die IoT Core-Standard-App sehen, die grundlegende Informationen zum Image anzeigt.

Qualcomm

DragonBoard 410c

Qualcomm hat das DragonBoard Update Tool bereitgestellt, das wir verwenden, um die FFU-Imagedatei auf das DragonBoard 410c zu flashen. Sie können die Version x86 oder x64 herunterladen (wir empfehlen x64).

DragonBoard update tool

Nachdem Sie das DragonBoard Update Tool installiert haben, müssen Sie zunächst das DragonBoard-Gerät in den Programmiermodus versetzen. Dazu schalten Sie Dipswitch 1 (auf der Rückseite des Geräts) in die Position ON:

Dragonboard Dipswitch

Verbinden Sie das DragonBoard-Gerät über ein Micro-USB-Kabel mit Ihrem PC, und schalten Sie es ein.

Führen Sie das DragonBoard Update Tool aus, suchen Sie nach der FFU-Imagedatei, die Sie bereitstellen möchten, und klicken Sie auf die Schaltfläche Program (Programm). Jetzt sollten Sie in grünes Symbol für den Connection Status (Verbindungsstatus) sowie eine Fortschrittsanzeige sehen, während das Gerät die FFU-Datei flasht.

Sobald der Flashvorgang abgeschlossen ist, trennen Sie die Platine von der Stromversorgung, und ziehen Sie auch das Micro-USB-Kabel ab. Dann müssen Sie Dipswitch 1 wieder in Position OFF schalten. Schließen Sie das Gerät erneut an die Stromversorgung an, um Windows IoT Core zu starten.

DragonBoard Update tool position 1DragonBoard Update tool position 2

Intel

Apollo Lake/Braswell/Cherry Trail

Wir verwenden das DISM-Tool (Deployment Image Servicing and Management) und einen startbaren USB-Stick, um die FFU-Imagedatei auf das angegebene Intel-Gerät (Apollo Lake/Braswell/Cherry Trail) zu flashen. Weitere Informationen zu DISM finden Sie hier.

Erstellen eines startbaren USB-Laufwerks

Zunächst müssen wir ein startbares USB-Laufwerk erstellen, das wir zum Starten auf dem angegebenen Intel-Hardwaregerät verwenden können. Dafür können wir Windows PE (WinPE) verwenden (zusätzliche Informationen zu WinPE finden Sie hier).

  1. Installieren Sie WinPE aus den Windows ADK-Add-Ons für die Windows Preinstallation Environment.

WinPE Install screen

  1. Vorbereiten des USB-Laufwerks

Das USB-Laufwerk, das Sie verwenden möchten, muss ordnungsgemäß formatiert sein, bevor wir WinPE darauf laden können. Führen Sie die folgenden Schritte aus, um Ihr USB-Laufwerk ordnungsgemäß zu formatieren:

  • Führen Sie das Tool diskpart an einer Eingabeaufforderung mit Administratorrechten aus.
  • Führen Sie list disk aus, um eine Liste der verfügbaren Datenträger anzuzeigen.
  • Führen Sie select disk X aus. Dabei entspricht das X der Datenträgernummer Ihres USB-Laufwerks.
  • Führen Sie clean aus, um den ausgewählten Datenträger zu bereinigen.

Hinweis

Wenn der folgende Fehler auftritt, führen Sie convert mbr aus:

ERROR: Failed to format "F:"; DiskPart errorlevel -2147212244
  • Führen Sie create partition primary aus, um eine primäre Partition auf dem Datenträger zu erstellen.
  • Führen Sie format fs=fat32 quick aus, um das Laufwerk zu formatieren.
  • Führen Sie assign aus, um das Laufwerk zuzuweisen.
  • Beenden Sie diskpart. Ihr USB-Laufwerk ist jetzt formatiert und bereit für die Installation von WinPE.
  1. Erstellen von WinPE-Arbeitsdateien

Jetzt müssen Sie eine Arbeitskopie der Windows PE-Dateien auf Ihrem PC erstellen. Dazu können Sie das Befehlszeilenprogramm Umgebung für Bereitstellungs- und Imageerstellungstools verwenden. Die Deployment and Imaging Tools Environment lässt sich am einfachsten starten, indem Sie über das Startmenü danach suchen.

Führen Sie das Befehlszeilenprogramm Umgebung für Bereitstellungs- und Imageerstellungstools als Administrator aus, und führen Sie den folgenden Befehl aus:

copype amd64 C:\WinPE_amd64

Dadurch wird die Arbeitskopie der Windows PE-Dateien unter C:\WinPE_amd64 erstellt.

Verbinden Sie das USB-Laufwerk mit Ihrem PC, und führen Sie diesen Befehl aus, um Windows PE auf dem USB-Laufwerk zu installieren. Ersetzen Sie das X durch den Laufwerkbuchstaben Ihres USB-Laufwerks:

MakeWinPEMedia /UFD C:\WinPE_amd64 X:
  1. Kopieren Sie die FFU-Datei in das Stammverzeichnis Ihres USB-Laufwerks.
  2. Verbinden Sie das USB-Laufwerk mit Ihrem Intel-Hardwaregerät, und starten Sie das Gerät vom USB-Laufwerk. Möglicherweise müssen Sie im BIOS (oder Startmenü) des Hardwaregeräts angeben, dass das Gerät von einem USB-Laufwerk gestartet werden soll.
  3. Nachdem die Windows PE-Umgebung gestartet wurde, wird ein Befehlsfenster angezeigt. Ändern Sie das Laufwerk und das aktuelle Verzeichnis in den Speicherort Ihrer FFU-Datei (je nach Laufwerksaufzählung kann dieser sich auf C: oder D: oder einem anderen Buchstaben befinden), und führen Sie den folgenden Befehl aus, um die FFU-Imagedatei zu flashen:
dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

Hinweis

In den meisten Fällen wird das Speicherziel auf der Platine, das geflasht werden soll, als PhysicalDrive0 aufgezählt. Wenn jedoch mehrere Speichergeräte vorhanden sind, kann es sich auch um eine andere Laufwerksnummer handeln. Sie können den Befehl list disk in diskpart verwenden, um die Laufwerksnummer zu überprüfen.

  1. Nachdem der Flashvorgang abgeschlossen ist, schalten Sie das Hardwaregerät aus und entfernen das USB-Laufwerk. Schließen Sie das Hardwaregerät erneut an die Stromversorgung an, um Windows IoT Core zu starten.
Diskpart-Befehle
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
WinPE-Befehle
copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
DISM-Befehl (über WinPE oder das Intel-Hardwaregerät)
X:\WinPE>d:

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

Nächste Schritte

Lassen Sie das Gerät eingeschaltet, und fahren Sie mit Lab 1b: Hinzufügen einer App zu Ihrem Image fort.