實驗室 1a:建立基本映射 (create-a-basic-image)

若要開始使用,我們將建立基本 Windows 10 IoT 核心版 (IoT 核心版) 映射,並將其刷新至特定硬體裝置。

我們將建立代表第一個設計的產品資料夾。 針對我們的第一個產品開發,我們將自定義足以讓IoT核心裝置開機並執行內建的OOBE應用程式,我們應該能夠在HDMI相容的監視器上看到該應用程式。

為了更輕鬆地執行這些命令,我們將安裝和使用IoT核心版殼層,其預設為數個常用的路徑和變數。

必要條件

在建立IoT核心版映像之前,請確定您的技術人員計算機已安裝必要的工具。

請參閱 取得自定義 Windows IoT 核心版 所需的工具,讓您的技術人員計算機準備就緒。

重要

使用的 ADK 版本必須符合下面使用的 IoT 核心套件版本。

您需要安裝下列工具來完成本節:

  • Windows 評定與部署 KiT (Windows ADK)
  • Windows 10 IoT 核心版 套件
  • IoT 核心版 ADK 附加元件
  • IoT 核心版 PowerShell 環境
  • 記事本 或 VS Code 之類的文字編輯器

建立基本映像

建立工作區

  1. 在 Windows 檔案總管中,移至您安裝 IoT Core ADK 附加元件的資料夾,例如 C:\IoT-ADK-AddonKit,然後開啟 IoTCorePShell.cmd。 它應該會提示您以系統管理員身分執行。

這會載入 PowerShell 模組,並檢查 ADK、IoT 核心版套件的版本。 這也會檢查證書存儲中的測試憑證,如果不存在,則會自動安裝它們。

疑難解答:錯誤:「系統找不到指定的路徑」。 如果您取得此專案,請以滑鼠右鍵按下圖示,並將 [目標] 中的路徑修改為您選擇安裝工具的位置。

  1. 在IoTCorePShell中,使用New-IoTWorkspace為架構arm建立具有 OEM 名稱Contoso的新工作區C:\MyWorkspace
New-IoTWorkspace C:\MyWorkspace Contoso arm
(or) new-ws C:\MyWorkspace Contoso arm

IoT 核心版支援四種架構:x64、x86、arm 和 arm64。

OEM 名稱中僅支援英數位元,因為這會作為各種產生檔名的前置詞。

這會產生IoTWorkspace.xml,並設定設計的版本號碼,以供日後更新使用。 第一個版本號碼預設為10.0.0.0。

系統會自動將登錄.Version、Custom.Cmd 和 Provisioning.Auto 等必要套件匯入工作區。

PowerShell session showing setup of new IoTWorkSpace

  1. 將範例套件匯入工作區。 您可以選擇選擇性地匯入套件或全部匯入。
# 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 *

匯入Raspberry Pi BSP

下一個步驟是採用面板支援套件檔案和額外/建置其.CAB檔案,以包含在 FFU 檔案中。

  1. 將RPi_BSP.zip下載到本機目錄,例如 C:\Downloads\RPi_BSP.zip。

  2. 使用 Import-IoTBSP 匯入 bsp

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

如需可用 BSP 的詳細資訊,請參閱 Windows 10 IoT 核心版 BSP。

建立測試專案

從 IoT 核心殼層環境,建立使用 Raspberry Pi 2 BSP 的新產品資料夾。 此資料夾代表我們想要建置的新裝置,並包含可用來啟動專案的範例自定義檔案。 使用 Add-IoTProduct 建立新產品

Add-IoTProduct ProductA RPi2
(or) newproduct ProductA RPi2

系統會提示您輸入 SMBIOS 資訊,例如製造商名稱(OEM名稱)、系列、SKU、BaseboardManufacturer和BaseboardProduct。 以下是一些範例值:

  • 系統 OEM 名稱: Fabricam
  • 系統系列名稱: FabricamHub
  • 系統 SKU 號碼: AI-001
  • 基礎板製造商 箭號
  • 基礎板產品: Raspberry Pi 2

BSP 名稱與 BSP 的資料夾名稱相同。 您可以在資料夾中查看哪些 BSP 可供使用 C:\MyWorkspace\Source-<arch>\BSP 。

這會建立資料夾: C:\MyWorkspace\Source-<arch>\Products\\ProductA。

New Product

OemCustomization.cmd檔案

每個映像都包含將在裝置每次開機時執行的檔案 oemcustomization.cmd 。 您可以修改此檔案,以自定義在開機時執行的內容。 此檔案位於此範例的 底下 C:\MyWorkspace\Source-<arch>\Products\\ProductA 。 檔案的內容如下所示:

@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

注意

請注意,自定義測試映像預設會停用 BitLocker 和 SecureBoot 等安全性功能。 如果您想要包含這些功能(在零售映射中),您可以在建置映射之前,先取消批注檔案中的適當行。

注意

請注意,此檔案中的命令會以本機系統許可權執行。

組建套件

從 IoT 核心殼層中,使用 New-IoTCabPackage 建置工作資料夾中的所有套件,讓您的環境準備好建立產品:

New-IoTCabPackage All
(or) buildpkg All

注意

如果您在測試模式中建置套件時收到 SignTool 錯誤,請執行 installoemcerts.cmd 以在技術人員計算機上安裝測試憑證。

建置映像

  1. 退出任何卸載式儲存磁碟驅動器,包括 Micro SD 記憶卡和任何 USB 快閃磁碟驅動器。

  2. 使用 New-IoTFFUImage 在 IoT Core PowerShell 環境中輸入下列命令,以建置 FFU 映像檔:

New-IoTFFUImage ProductA Test
(or) buildimage ProductA Test

這會在建置具有基本映像 C:\MyWorkspace\Build\<arch>\ProductA\Test的 FFU 檔案。 此測試映像將包含可用於偵錯用途的其他工具。 建置最終 FFU 檔案大約需要 10 到 30 分鐘才能完成。

若要將所有輸出導向控制台,而不是記錄檔,請新增 -Verbose 旗標,例如以下的輸出。

new-IoTFFUImage -Verbose ProductX Test

注意

如果您收到0x80070005或0x800705b4作為錯誤碼,請拔除所有外部磁碟驅動器(包括 micro SD 記憶卡和 USB 拇指磁碟驅動器),然後再試一次。 如果無法運作,請返回設定 您的計算機並下載範例 ,並確定所有專案都已安裝。

刷新 Windows IoT 核心版映像

現在已建置您的 FFU 映像檔,您可以擷取此檔案,並將該映射部署到您的裝置。 下面列出將 FFU 映像檔刷新到特定製造商裝置的步驟。

必要條件/需求

您需要安裝下列工具來完成本節:

  • Windows IoT 核心版儀錶板 (僅限 Raspberry Pi)
  • Dragonboard Update Tool (僅限 Qualcomm DragonBorad)
  • 部署映像處理與服務與管理 (DICM) 工具 (僅限 Intel 裝置)

因為我們在這裡使用Raspberry Pi,因此我們將從Raspberry Pi開始,但也說明如何在其他裝置上快閃影像。

Raspberry Pi

  1. 啟動 Windows IoT 核心版儀錶板。

  2. 將您的 Micro SD 記憶卡插入您的技術人員電腦,然後在工具中加以選取。

  3. 從 [設定新的裝置] 區段,選取 [裝置類型] 下的 [Raspberry Pi 2 和 3]。

  4. 選取 [OS 組建] 底下的 [ 自定義 ]。

  5. 按兩下 [瀏覽 ] 並瀏覽並選取您稍早建立的 FFU 檔案。 在這裡情況下,您的 FFU 檔案位於 C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu。 然後按一下 [下一步]。

  6. 確認您的 microSD 記憶卡列在 [ 磁碟驅動器 ] 選取範圍底下。

  7. 您可以選擇性地設定裝置的 [裝置名稱] 和 [管理員 istrator 密碼] 選項。

  8. 核取 [ 我接受軟體授權條款 ] 複選框(右下角),然後按兩下 [ 安裝]。

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

Windows IoT 核心版儀錶板現在會開啟命令視窗,並使用 DISM(部署映射服務與管理工具)將 FFU 檔案刷新到您的 microSD 記憶卡。

Raspberry Pi Flashing DISM

注意

或者,您也可以使用 DISM 命令手動刷新映像: dism.exe /Apply-Image /ImageFile:"D:\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

一旦閃爍程式完成,請從技術人員計算機退出 microSD 記憶卡,並將其插入Raspberry Pi 中。 重新連線電源以開機 Windows IoT 核心版。 您應該會看到 IoT核心版默認應用程式,其中顯示映像的基本資訊。

通

DragonBoard 410c

Qualcomm 已提供 Dragonboard 更新工具 應用程式,我們將用來將 FFU 圖像檔刷新至 Dragonboard 410c。 您可以下載 x86 或 x64 版本(我們建議 x64)。

DragonBoard update tool

安裝 DragonBoard 更新工具之後,您必須先將 DragonBoard 裝置放在程式設計模式中。 這是藉由將 dipswitch #1 (在裝置背面) 設定為 ON 位置來完成:

Dragonboard Dipswitch

連線 DragonBoard 裝置到您的技術人員電腦,並搭配微USB 纜線和面板電源。

執行 DragonBoard 更新工具、瀏覽您要部署的 FFU 映射檔,然後按 [程式] 按鈕。 當裝置閃爍 FFU 檔案時,您應該會看到綠色的 連線 狀態和進度列。

一旦閃爍程式完成,請中斷面板的電源,以及 microUSB 纜線。 然後,您必須將 dipswitch #1 翻回 OFF 位置。 重新連線電源以開機 Windows IoT 核心版。

DragonBoard Update tool position 1DragonBoard Update tool position 2

英特爾

阿波羅湖/布拉斯韋爾/櫻桃小徑

我們將使用 DISM (部署映射和服務管理工具) 和可開機的 USB 棒,將 FFU 映射檔刷新到指定的 Intel 裝置 (Apollo Lake/Braswell/Cherry Trail)。 您可以在這裡找到 DISM 的新增資訊。

建立USB可開機磁碟驅動器

我們必須先建立可開機的USB磁碟驅動器,以便用來在指定的Intel硬體裝置上開機。 我們可以針對此使用 Window PE (WinPE)(WinPE 的新增資訊在這裡)。

  1. 從 Windows ADK Windows 預安裝環境附加元件安裝 WinPE。

WinPE Install screen

  1. 準備USB磁碟驅動器

您想要使用的 USB 磁碟驅動器必須先正確格式化,才能將 WinPE 載入它。 請遵循下列十幾點來正確格式化 USB 磁碟驅動器:

  • diskpart從系統管理命令提示字元執行工具
  • 執行 list disk 以查看可用磁碟的清單
  • 執行 select disk X,其中 X 會對應到 USB 磁碟驅動器的磁碟編號
  • 執行 clean 以清除選取的磁碟

注意

如果您遇到下列錯誤,請執行 convert mbr:

ERROR: Failed to format "F:"; DiskPart errorlevel -2147212244
  • 執行 create partition primary 以在磁碟上建立主要磁碟分區
  • 執行 format fs=fat32 quick 以格式化磁碟驅動器
  • 執行 assign 以指派磁碟驅動器
  • 結束 diskpart。 您的USB磁碟驅動器現在已格式化並準備好安裝 WinPE。
  1. 建立 WinPE 工作檔案

我們現在需要在技術人員計算機上建立 Windows PE 檔案的工作複本。 這可以使用部署和映像處理工具環境命令行程式來完成。 最簡單的啟動方式是透過 [開始 Deployment and Imaging Tools Environment ] 功能表搜尋部署。

以系統管理員身分執行部署和映像處理工具環境命令行程式,然後執行下列命令:

copype amd64 C:\WinPE_amd64

這會在 C:\WinPE_amd64建立 Windows PE 檔案的工作複本。

將USB磁碟驅動器插入技術員電腦上,並執行此命令以在USB磁碟驅動器上安裝WindowsPE。 請確定您可以使用 USB 磁碟驅動器的驅動器號取代 X:

MakeWinPEMedia /UFD C:\WinPE_amd64 X:
  1. 將 FFU 檔案複製到 USB 磁碟驅動器的根磁碟驅動器。
  2. 將您的 USB 磁碟驅動器插入 Intel 硬體裝置,並從 USB 磁碟驅動器開機。 您可能需要輸入硬體裝置的 BIOS(或開機功能表),以指定要從 USB 磁碟驅動器開機。
  3. Windows PE 環境開機後,您會看到命令視窗。 將磁碟驅動器和目前目錄變更為 FFU 檔案的位置(視磁碟驅動器列舉而定,它可以位於 C: 或 D: 中。等)並執行下列命令來刷新 FFU 映像檔:
dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

注意

大部分時候,要閃爍的機上儲存目標會列舉為 PhysicalDrive0,不過,如果有多個存儲設備,它可以列舉為其他磁碟驅動器號碼。 您可以使用 list disk 中的 diskpart 命令來驗證驅動器號。

  1. 一旦閃爍程式完成,請關閉硬體裝置,並移除USB磁碟驅動器。 將電源重新連線到硬體裝置,以啟動 Windows IoT 核心版。
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
WinPE 命令
copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
DISM 命令 (透過 Intel 硬體裝置上的 WinPE)
X:\WinPE>d:

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

後續步驟

暫時讓裝置保持開啟,並繼續前往 實驗室 1b:將應用程式新增至您的映射。