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 パッケージを選択します。

手順 3: WinPE イメージを準備する

Windows 10 ADK リリース 1709 には、すべてのアーキテクチャ (x86/amd64 および arm) の Windows 10 プレインストール環境が含まれています。 Windows 10 ADK リリース 1809 の場合は、ADK 用の Windows PE アドオンをインストールする必要があります。 この WinPE では、次のものを追加します

  • デバイス上の回復プロセスに使用される回復スクリプト

    • startnet.cmdstartnet_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 として生成されます