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
- 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.
- Erstellen Sie in IoTCorePShell mit New-IoTWorkspace einen neuen Arbeitsbereich in
C:\MyWorkspace
mit dem OEM-NamenContoso
für die Architekturarm
.
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.
- 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.
Laden Sie RPi_BSP.zip in ein lokales Verzeichnis herunter, z. B.
C:\Downloads\RPi_BSP.zip
.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.
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
Werfen Sie alle Wechseldatenträger aus, einschließlich der Micro-SD-Karte und sämtlicher USB-Speichersticks.
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
Starten Sie das Windows IoT Core-Dashboard.
Schließen Sie Ihre Micro-SD-Karte an Ihren PC an, und wählen Sie sie im Tool aus.
Wählen Sie im Abschnitt "Setup a new device" unter "Device Type" die Option "Broadcomm [Raspberry Pi 2 & 3]"aus.
Wählen Sie unter „Betriebssystembuild“ den Eintrag Benutzerdefiniert aus.
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.Stellen Sie sicher, dass Ihre Micro-SD-Karte in der Auswahl Laufwerk aufgeführt ist.
Optional können Sie auch Optionen für Gerätename und Administratorkennwort für Ihr Gerät festlegen.
Aktivieren Sie das Kontrollkästchen Ich akzeptiere die Softwarelizenzbedingungen (unten rechts), und klicken Sie auf Installieren.
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.
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).
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:
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.
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).
- Installieren Sie WinPE aus den Windows ADK-Add-Ons für die Windows Preinstallation Environment.
- 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.
- 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:
- Kopieren Sie die FFU-Datei in das Stammverzeichnis Ihres USB-Laufwerks.
- 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.
- 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.
- 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.