다음을 통해 공유


Windows 10 IoT 핵심 이미지에 복구 메커니즘 추가

아래에 제공된 단계를 사용하여 WinPE를 안전한 OS로 사용하고, WIM 파일을 복구 파티션의 복구 SW로 사용하여 이미지에 복구 메커니즘을 추가할 수 있습니다.

가능한 메커니즘에 대한 자세한 내용은 Windows 10 IoT Core 복구를 참조하세요.

1단계: 복구 파티션을 사용하여 디바이스 레이아웃 업데이트

devicelayout.xml 파일에서 다음 특성을 사용하여 새 파티션 MMOS를 추가합니다.

  • FAT32 파일 시스템
  • 최소 2GB 크기(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 8GB 복구 디바이스 레이아웃 참조

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.cmd, startnet_recovery.cmd: 템플릿 디렉터리의 미리 정의된 스크립트(templates\recovery 참조).
    • 구성 파일: 디바이스 레이아웃에 따라 생성된 파일(Build\<arch>\<bspname>\recovery에 저장).
  • 복구 사용자 지정 파일(선택 사항)

    • RecoveryGUI.exe: 디바이스에서 복구 셸 프롬프트를 숨기는 간단한 선택적 UI입니다. recoveryGUI.exe는 대상 CPU용으로 빌드된 C++ 애플리케이션이거나 애플리케이션의 .NET Framework 4 Windows일 수 있습니다. WinPE 이미지에 .NET Framework 4 기능을 추가하려면 Newwinpe.cmd를 수정해야 합니다.
    • pre_recovery_hook.cmdpost_recovery_hook.cmd: 복구 프로세스 전후에 작업을 추가하는 선택적 후크입니다.
    • 이러한 파일은 Source-<arch>\bsp\<bspname>\WinPEExt\recovery 폴더에 배치하세요.
  • BSP 드라이버(선택 사항)

    • 디바이스 플랫폼의 스토리지에 부팅/쓰기를 위해 winpe 이미지에 bsp 드라이버를 추가해야 할 수 있습니다.
    • 필요한 드라이버를 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 샘플 참조).

    • 새 디바이스 레이아웃 패키지를 포함하고, 아래 예제의 새 SOC 이름인 QC8016-R을 지정합니다.
    <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 복구 파일이 생성됩니다.