用于 OEM 的 OS 自定义项
OEM 可以使用以下指定方法自定义 OS 的各个方面。
OOBE 应用
IoTCore 有一个内置 OOBE 应用,该应用在设备首次启动时运行。 该应用会一直显示,直到所有预配包都在后台进行了处理,且 OEM 应用可以作为启动应用进行启动。
该 OOBE 应用可以使用具有以下属性的 settings.json
进行自定义:
- backgroundColor:屏幕背景色
- background:背景图像(jpg 文件)
- progressRingVisible:可以显示或隐藏旋转点
- welcomeText:屏幕中心以大字体显示的文本
- pleaseWaitText:旋转点下方显示的文本
- animation:可在此处指定动画 gif
- animationMargin:动画 gif 的定位
- left、top、right、bottom
settings.json 中引用的所有文件都应位于 settings.json 文件所在的文件夹中。 下面提供了示例代码片段
{
"backgroundColor": "#FF0000FF",
"progressRingVisible": true,
"welcomeText": "Welcome to OOBE customization",
"pleaseWaitText": "please wait ..."
}
注意
settings.json 文件需要以 Unicode (UCS-2) 编码方式进行编码。 UTF-8 将不起作用。
手动验证设置
- 使用所需的设置创作
settings.json
文件 - 连接到 IoT 设备(使用 SSH 或使用 PowerShell),将
settings.json
文件连同所有图形资产一起放在某个目录(例如C:\Data\oobe
)中 - 使用以下命令将设备配置为允许从所有 appx 文件访问此目录
folderpermissions C:\Data\oobe -e
- 使用以下命令启动 OOBE 应用程序
iotstartup add headed IoTUAPOOBE
- 验证用户界面
向 IoT 核心版映像添加设置
使用 Custom.OOBEApp 包并修改包 xml 文件以添加图形资产
将 settings.json 和图形资产复制到该包文件夹。
在 oemcustomizations.cmd 文件中添加
folderpermissions C:\Data\oobe -e
,以确保在系统启动时调用此项。在 OEMInput.xml 中包括功能 ID CUSTOM_OOBEAPP,请注意,这是在 OEMCOMMONFM.xml 中定义的。
故障设置
对于 IoT Core 产品,建议将设备配置为在故障时重启,并隐藏故障转储屏幕 (BSOD)。 这是通过设置以下注册表项实现的:
HKLM\SYSTEM\CurrentControlSet\Control\CrashControl 自动重启设置为 1 DisplayDisabled 设置为 1
手动验证设置
- 连接到 IoT 设备(使用 SSH 或使用 Powershell)并设置以下注册表项
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl” /v AutoReboot /t REG_DWORD /d 1 /f reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl” /v DisplayDisabled /t REG_DWORD /d 1 /f
- 请参阅从键盘强制系统崩溃,配置一个用于强制系统崩溃的键。
- 使用配置的键强制系统崩溃,并验证设备是否自动重启且未显示故障转储屏幕。
向 IoT 核心版映像添加设置
- 使用 Custom.Settings 包
- 在 OEMInput.xml 中包括功能 ID CUSTOM_SETTINGS,请注意,这是在 OEMCOMMONFM.xml 中定义的。
注意
在 Windows 10 版本 1809 中,添加了 IOT_CRASHCONTROL_SETTINGS 功能来解决此自定义的问题。
位置设置
从 Windows 10 IoTCore RS5 2019 年 11 月“11 B”版本(操作系统版本 17763.865)开始,IoT 核心版的位置服务将默认配置为“关闭”。 如果你是 OEM,并且要开启定位服务,请执行以下步骤。 这仅适用于 IoT 核心版。
在以下注册表项下:
HKLM\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\Capabilities\location\edition InitSystemGlobalConsentDenied 设置为 0 InitUserGlobalConsentDenied 设置为 0
工具包构建者应参阅 /windows-hardware/manufacture/iot/add-a-registry-setting-to-an-image,以获取有关使用这些注册表设置构建自定义映像的说明
BCD 设置
启动配置数据库设置可用于配置各种功能。 请参阅 BCDEdit 命令行选项,了解各种可用的设置和选项。
下面列出了一些关键功能
禁用启动 UX 动画
- 可以使用以下命令完成手动设置
bcdedit -set {bootmgr} nobootuxprogress true
- 在
Custom.BCD.xml
文件中指定此设置
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<BootConfigurationDatabase
xmlns="http://schemas.microsoft.com/phone/2011/10/BootConfiguration"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
IncludeDescriptions="true" IncludeRegistryHeader="true">
<Objects>
<!-- Windows Boot Manager -->
<Object SaveKeyToRegistry="false">
<FriendlyName>Windows Boot Manager</FriendlyName>
<Elements>
<Element>
<DataType>
<WellKnownType>Boot UX Progress Animation Disable</WellKnownType>
</DataType>
<ValueType>
<BooleanValue>true</BooleanValue>
</ValueType>
</Element>
</Elements>
</Object>
</Objects>
</BootConfigurationDatabase>
- 使用 Custom.BCD 包在映像中包括此设置,并将功能 ID CUSTOM_BCD 添加到 OEMInput.xml 文件
替换启动徽标
有多种方法可以替换由 BIOS 或 UEFI 显示的启动徽标。 一种方法是授权 UEFI,或向主板制造商供应商支付费用来执行此操作,并直接更改 UEFI 源代码。 或者,在 UEFI 实现支持已签名的可加载 UEFI 驱动程序的设备上,此处有一个示例: https://github.com/Microsoft/MS_UEFI/tree/share/MsIoTSamples 演示如何生成替换启动徽标的驱动程序,并为 bootmgr 提供 BGRT 表,以便 Windows 启动过程在启动期间保留徽标,而不是将其替换为 Windows 徽标。
启用外部测试版签名
- 可以使用以下命令完成手动设置:
bcdedit /set {bootmgr} flightsigning on
bcdedit /set flightsigning on
- 若要在映像中包括此设置,可以将以下片段添加到
Custom.BCD.xml
<!-- Allow Flight Signing Certificate -->
<Object SaveKeyToRegistry="false">
<FriendlyName>Global Settings Group</FriendlyName>
<Elements>
<Element>
<DataType>
<WellKnownType>Allow Flight Signatures</WellKnownType>
</DataType>
<ValueType>
<BooleanValue>true</BooleanValue>
</ValueType>
</Element>
</Elements>
</Object>
运行时自定义项
除了使用上述静态自定义项外,还可以在运行时进行自定义。
OEMCustomizations.cmd
- 每次启动时,IoTCore Shell 都会使用系统特权调用放置在
c:\windows\system32
中的此命令文件 - 在这里,你可以在此 cmd 文件中指定任何自定义操作,但建议保留此选项作为自定义的最后手段选项
- 在 iot-adk-addonkit 中,此文件针对产品目录下的每个产品创建。 在 OEMInput xml 文件中添加功能 ID CUSTOM_CMD,以将其包括在映像中。
- 请参阅 Custom.Cmd 包和示例 oemcustomizations.cmd
Customizations.xml
- 这是用于创建预配包的设置文件
- 此包放置在
c:\windows\provisioning\packages
中,目的是在启动时自动处理此预配包 - 在 iot-adk-addonkit 中,此文件针对产品目录下的每个产品创建。 在 OEMInput xml 文件中添加功能 ID PROV_AUTO,以在映像中包括它。
- 请参阅 Provisioning.Auto 包和示例 Customizations.xml
- 有关更多详细信息,请参阅:
- 添加预配包
- IoT 核心版支持的配置服务提供程序 (CSP) 的预配