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 ..."
}
Note
settings.json ファイルは Unicode (UCS-2) エンコーディングでエンコードする必要があります。 UTF-8 は機能しません。
手動で設定を検証する
- 必要な設定を使用して
settings.json
ファイルを作成します。 - SSH または Powershell を使用して IoT デバイスに接続し、
settings.json
ファイルとすべてのグラフィカル アセットをC:\Data\oobe
というディレクトリ内に配置します。 - 以下を使用して、すべての appx ファイルからこのディレクトリにアクセスできるようにデバイスを構成します。
folderpermissions C:\Data\oobe -e
- 以下を使用して OOBE アプリケーションを起動します。
iotstartup add headed IoTUAPOOBE
- ユーザー インターフェイスを確認します。
IoT Core イメージに設定を追加する
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 AutoReboot set to 1 DisplayDisabled set to 1
手動で設定を検証する
- SSH または Powershell を使用して IoT デバイスに接続し、次のレジストリ キーを設定します。
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 Core イメージに設定を追加する
- Custom.Settings パッケージを使用します。
- OEMInput.xml で、機能 ID CUSTOM_SETTINGS を含めます。これは OEMCOMMONFM.xml 内で定義されることに注意してください。
Note
Windows 10 Version 1809 で、このカスタマイズに対応するために IOT_CRASHCONTROL_SETTINGS 機能が追加されました。
位置情報の設定
Windows 10 IoTCore RS5 2019 年 11 月 "11 B" リリース (OS バージョン 17763.865) 以降では、IoT Core の位置情報サービスが既定で "オフ" に設定されるように構成されます。 位置情報サービスをオンにする OEM は、次の手順に従ってください。 これは、IoT Core にのみ適用されます。
次のレジストリ キーの下で:
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 によって表示されるブート ロゴを置き換えるには、複数の方法があります。 1 つの方法として、UEFI のライセンスを取得するか、またはそうするためにボード製造元の業者に代金を支払い、UEFI ソース コードに直接変更を加えます。 または、署名された読み込み可能な UEFI ドライバーが UEFI 実装でサポートされているデバイスの場合、こちら (https://github.com/Microsoft/MS_UEFI/tree/share/MsIoTSamples) のサンプルで、ブート ロゴを置き換え、ブート マネージャーに 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 では、このファイルが製品ディレクトリの下の各製品に対して作成されます。 これをイメージに含めるには、機能 ID PROV_AUTO を OEMInput xml ファイルに追加します。
- Provisioning.Auto パッケージと Customizations.xml のサンプルを参照してください。
- 詳細については、以下を参照してください。
- プロビジョニング パッケージの追加
- IoT Core でサポートされている構成サービス プロバイダー (CSP) のためのプロビジョニング