IoT 核心版制造指南

注意

对于以前的版本,请参阅 适用于 v5.x 的 IoT Core 制造指南

考虑批量生产运行 Windows 10 IoT 核心版的设备? 使用 Windows ADK IoT 核心版加载项创建映像,可以快速刷入新设备。

你可以创建测试映像,其中包括用于快速访问和修改设备的工具。 测试映像非常适合于:

  • 正在尝试新设备设计的开发人员、硬件供应商和制造商 (OEM)。
  • 正在创建设计为在非联网或受控网络环境中运行的设备的爱好者和组织。

你可以创建零售映像,这对于公共或企业网络来说更加安全,同时仍能接收更新。

你可以添加自定义项,包括应用、设置、硬件配置和电路板支持包 (BSP)。

对于 OEM 风格的映像,你需要将你的自定义内容打包到包 (.cab) 文件中。 借助包,OEM、ODM、开发人员和 Microsoft 可以协同工作,帮助为你的设备提供安全和功能更新,而不会妨碍彼此的工作。

带有 Windows 10 定位服务的 IoT 核心版设备会告诉你的应用和服务你目前在哪里或你曾经去过哪里。

从 Windows 10 IoTCore RS5 2019 年 11 月“11 B”版本(操作系统版本 17763.865)开始,IoT 核心版的位置服务将默认配置为“关闭”。 如果你是 OEM,并且要开启定位服务,请执行以下步骤。 这仅适用于 IoT 核心版。

在注册表项 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionCapabilityAccessManagerCapabilitieslocationedition 下面,设置以下值:

  • name=InitSystemGlobalConsentDenied value="0" valueType=REG_DWORD
  • name=InitUserGlobalConsentDenied value="0" valueType=REG_DWORD

套件构建者应参阅实验 1c:向映像中添加文件和注册表设置,以获取有关使用这些注册表设置构建自定义映像的说明

方案

概念

为了清楚地了解创建和部署 Windows IoT 核心版映像的过程,必须首先定义一些概念和术语。

创建 Windows IoT 核心版映像的过程涉及多个步骤,如下所示:

  1. 测试要包含在映像中的任何自定义项,以验证它们是否正常工作。 其中包括应用、设置、驱动程序或电路板支持包 (BSP)。
  2. 在你的 PC 上安装测试证书,并将你的自定义项打包到 .CAB 文件中。
  3. 创建一个测试 Windows 10 IoT 核心版映像,其中包括你的自定义项以及 IoT 核心版包和硬件制造商提供的任何更新。
  4. 将映像刷入到设备并测试是否有效。 你可以使用测试映像中内置的测试工具来排查可能出现的任何问题。
  5. 验证一切正常后,获取有效的零售证书并使用零售证书对你自定义项进行签名。 然后,你应该将自定义项重新打包到新的 .CAB 文件中。
  6. 创建一个包含你已签名的 .CAB 文件的零售映像,并将映像刷入到你的设备中。

IoT 核心版映像创建过程

术语

包(.cab 文件) 是 IoT 核心版的逻辑构建基块。 包中包含设备上的所有文件、库、注册表设置、可执行文件和数据。 从设备驱动程序到系统文件,每个组件都必须包含在一个包中。 通过这种模块化架构,可以精确控制更新:包是设备上最小的可维护单元。

每个包都包含:

  • 包的内容,例如签名的驱动程序二进制文件或签名的 appx 二进制文件。
  • 包定义 (.wm.xml) 文件指定包的内容以及这些内容应在最终映像中的位置。 请参阅 Windows ADK IoT 核心版加载项工具包中的 %SRC_DIR%\Packages\ 目录,了解各种包文件示例。 有关示例,请查看 Appx.IoTCoreDefaultApp.wm.xml
  • 签名。 可以使用测试或零售证书对包进行签名。

pkggen 工具将这些项目组合成签名包。 我们的示例包括脚本:createpkgcreateprovpkg,这两个脚本调用 pkggen 来为我们的驱动程序、应用和设置创建包。

功能清单 (FM)

将所有内容放入包中后,你将使用功能清单(FM 文件)列出哪些包属于最终映像。

你可以根据需要在映像中使用任意数量的 FM。 在本指南中,我们指的是以下 FM:

  • OEMFM.xml 包括 OEM 可能添加到设备的功能,例如应用和预配包。
  • BSPFM.xml 包含硬件制造商可能用来定义电路板的功能。 例如,OEM_RPi2FM.xml 包含用于 Raspberry Pi 2 的所有功能。

你将使用以下标签列出要添加的功能:

  • <BasePackages>:你始终包含在映像中的包,例如,你的基础应用。
  • <Features>\<OEM>:可能特定于特定产品设计的其他单独包。

功能合并器工具可生成维护设备所需的功能标识符包。 只要对 FM 文件进行任何更改,就需要运行此工具。 更改 OEM FM 或 OEM COMMON FM 文件后,运行 buildfm oem。 更改 BSPFM 文件后,运行 buildfm bsp <bspname>。 这些命令从 IoT 核心版 shell 中运行。

电路板支持包 (BSP)

电路板支持包包含一组特定于电路板的软件、驱动程序和引导配置,通常由电路板制造商提供。 电路板制造商可能会定期提供电路板的更新,你的设备可以接收和应用这些更新。 如果电路板制造商没有提供,但你具有相应的软件和驱动程序文件集,那么你也可以创建自己的 BSP。 此处列出了支持的 BSP。

完整闪存更新映像文件

全闪存更新 (FFU) 文件是可以 (部署的映像文件。“flashed”) 到特定硬件设备。 将 FFU 文件刷写到设备上时,所有必需的软件都会同时安装在该设备上。 FFU 映像文件将引导加载程序、Windows 操作系统、驱动程序、外围设备映像和任何其他所需文件捆绑到一个包中。

前台和后台应用

有两种类型的应用程序可以在 Windows IoT 核心版上运行。

  • 前台应用 - 这些应用具有 UI。 IoT 设备上只能有一个应用可以作为前台应用来运行。 如果映像中包含多个前台应用,则应仅将一个设置为开机自动启动。
  • 后台应用 - 这些应用没有 UI。 在 IoT 设备上,可以有多个应用作为后台应用运行。 可以将任意数量的后台应用配置为自动启动。

有关详细信息,请参阅前台应用后台应用

创建映像:ImgGen 和映像配置文件 (OEMInput.xml)

若要创建最终映像,请将 该工具与映像配置文件 OEMInput.xml文件一起使用imggen

映像配置文件列出:

  • 功能清单 (FM) 以及要通过每个清单安装的包。

  • SoC 芯片标识符,用于帮助设置设备分区。 支持的 soc 值在 devicelayoutpackages 下的相应 <bspfm.xml> 中定义。

  • Device 标识符,用于选择设备布局。 支持的 device 值在 <oemdeviceplatformpackages> 下的相应 bspfm.xml 中定义。

  • ReleaseType(Production 或 Test)。

    零售版本:我们建议你在开发过程的早期创建零售映像,以验证在你准备好发货时一切正常。

    这些版本包含所有启用的安全功能。

    要使用此版本类型,你的所有代码都必须使用零售(而非测试)代码签名证书进行签名。

    有关示例,请参阅 %SRC_DIR%\Products\SampleA\RetailOEMInput.xml。

    测试版本:使用它们来试用你和你的硬件制造商合作伙伴创建的应用程序和驱动程序的新版本。

    这些版本禁用了一些安全功能,允许你使用测试签名或生产签名的包。

    这些版本还包括调试传输、SSH 和 PowerShell 等开发人员工具,你可以使用这些工具来帮助排查问题。

    有关示例,请参阅 %SRC_DIR%\Products\SampleA\TestOEMInput.xml。

区域 零售版本 测试版本
映像发布类型 ReleaseType:Production ReleaseType:Test
包发布类型 仅支持生产类型包 支持生产类型或测试类型
测试签名包 不支持 必须包含支持的
IOT_ENABLE_TESTSIGNING功能。
代码完整性检查 。 默认情况下启用此功能。 。 默认情况下,不强制执行任何策略

我们来试一试

从这里开始:获取自定义 Windows IoT 核心版所需的工具