Windows 10 IoT コア イメージに回復メカニズムを追加する
次の手順を使用して、WinPE を安全な OS として、WIM ファイルを回復パーティションからの回復ソフトウェアとして、回復メカニズムをイメージに追加できます。
可能なメカニズムの詳細については、「Windows 10 IoT Core の回復」を参照してください。
手順 1: 回復パーティションを使用してデバイス レイアウトを更新する
devicelayout.xml ファイルで、次の属性の新しいパーティション MMOS を追加します
- FAT32 ファイルシステム
- 少なくとも 2 GB のサイズ (WinPE WIM と回復用の WIM を収容)
- パーティションの種類
- GPT : {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}
- MBR : 0x07
GPT デバイスに対して以下に示すサンプル xml スニペット (セクター サイズは 512 と想定)
<Partition>
<Name>MMOS</Name>
<FileSystem>FAT32</FileSystem>
<TotalSectors>4096000</TotalSectors>
<Type>{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}</Type>
</Partition>
QCDB410C デバイス レイアウトに関するページを参照してください
MBR デバイスに対する以下に示すサンプル xml スニペット
<Partition>
<Name>MMOS</Name>
<FileSystem>FAT32</FileSystem>
<TotalSectors>4096000</TotalSectors>
<Type>0x07</Type>
</Partition>
MBR 8 GB 回復デバイスのレイアウトに関するページを参照してください
手順 2: BCD 設定を構成する
この手順では、新しく追加された MMOS パーティションが BCD 設定で起動可能パーティションとして定義され、回復シーケンスが有効にされ、このパーティションで起動するように構成されます。 これらの設定は、すぐに使用できる以下のパッケージで使用できます。 デバイスに基づいて GPT パッケージか MBR パッケージを選択します。
- Recovery.GPT-BCD パッケージ
- Recovery.MBR-BCD パッケージ
- Recovery.BCD.xml では、MMOS パーティションの可用性を宣言します。
- Recovery.GPT-BcdEdit パッケージ
- Recovery.MBR-BcdEdit パッケージ
- Recovery.BcdEdit.cmd では、回復シーケンスを有効にし、MMOS パーティションでの起動を構成します。
手順 3: WinPE イメージを準備する
Windows 10 ADK リリース 1709 には、すべてのアーキテクチャ (x86/amd64 および arm) の Windows 10 プレインストール環境が含まれています。 Windows 10 ADK リリース 1809 の場合は、ADK 用の Windows PE アドオンをインストールする必要があります。 この WinPE では、次のものを追加します
デバイス上の回復プロセスに使用される回復スクリプト
startnet.cmd
、startnet_recovery.cmd
: テンプレート ディレクトリからの定義済みスクリプト (templates\recovery を参照)。- config ファイル:
Build\<arch>\<bspname>\recovery
に置かれた、デバイス レイアウトに基づいた生成済みファイル。
回復のカスタマイズ ファイル (省略可能)
RecoveryGUI.exe
: デバイス上で回復シェル プロンプトを非表示にする省略可能な単純な UI。 recoveryGUI.exe は、ターゲット CPU 用にビルドされた C++ アプリケーションの場合も、アプリケーションからの .NET Framework 4 Windows の場合もあります。 Newwinpe.cmd は、.NET Framework 4 機能を WinPE イメージに追加するように変更する必要があります。pre_recovery_hook.cmd
およびpost_recovery_hook.cmd
: 回復プロセスの前後に、アクションを追加する省略可能なフック。- これらのファイルを
Source-<arch>\bsp\<bspname>\WinPEExt\recovery
フォルダーに置きます。
BSP ドライバー (省略可能)
- BSP ドライバーを WinPE イメージに追加して、デバイス プラットフォームで起動またはストレージへの書き込みを行う必要が生じる場合があります。
- 必要なドライバーを
Source-<arch>\bsp\<bspname>\WinPEExt\drivers
フォルダーに置きます。
IoTCorePShell で、New-IoTWindowsImage コマンドを使用して、上記の内容で BSP の WinPE イメージを作成できます
New-IoTWindowsImage <product> <config>
(or) newwinpe <product> <config>
このスクリプトは、Build\<arch>\<product>\<config>\winpe.wim
で WinPE を出力します。
手順 4: フィーチャー マニフェスト ファイルと OEMInputFile を更新する
次の点を変更して <bspname>FM.xml を更新します (QCDB410CFM.xml のサンプルを参照)
- 次の例で、QC8016-R という新しい SOC 名を指定して、新しいデバイス レイアウト パッケージを含めます。
<DeviceLayoutPackages> <PackageFile SOC="QC8016-R" Path="%PKGBLD_DIR%" Name="%OEM_NAME%.QCDB410C.DeviceLayout-R.cab" /> <PackageFile SOC="QC8016" Path="%BSPPKG_DIR%" Name="Qualcomm.QC8916.DeviceLayout.cab" /> </DeviceLayoutPackages>
次の点を変更して <productname>/TestOEMInput.xml (および RetailOEMInput.xml) を更新します (回復サンプルを参照)
<bspname>FM.xml で定義されている SOC 名を指定します
<SOC>QC8016-R</SOC>
OEM セクションに RECOVERY_BCD 機能を含めます
<OEM> ... <Feature>RECOVERY_BCD</Feature> ... </OEM>
Recovery.BcdEdit.cmd
を呼び出すようにoemcustomization.cmd
を更新しますREM The below should be called on every boot if exist C:\RecoveryConfig\Recovery.BcdEdit.cmd ( call C:\RecoveryConfig\Recovery.BcdEdit.cmd )
手順 5: New-IoTRecoveryImage を使用して回復イメージをビルドする
# Build all packages
New-IoTCabPackage All
(or) buildpkg All
# Build the product image
New-IoTFFUImage <product> <config>
(or) buildimage <product> <config>
# Build the recovery image
New-IoTRecoveryImage <product> <config>
(or) buildrecovery <product> <config>
これにより、回復ファイルが Flash_Recovery.ffu
として生成されます