Share via


랩 1a: 기본 이미지 만들기(create-a-basic-image)

시작하기 위해 기본 Windows 10 IoT Core(IoT Core) 이미지를 만들고 특정 하드웨어 디바이스에 플래시합니다.

첫 번째 디자인을 나타내는 제품 폴더를 만듭니다. 첫 번째 제품 디자인의 경우 IoT Core 디바이스가 부팅되고 HDMI 호환 모니터에서 볼 수 있는 기본 제공 OOBE 앱을 실행할 수 있을 만큼만 사용자 지정합니다.

이러한 명령을 더 쉽게 실행할 수 있도록 자주 사용하는 여러 경로와 변수를 미리 설정하는 IoT Core 셸을 설치하고 사용합니다.

필수 조건

IoT Core 이미지를 만들기 전에 관리자 PC에 필요한 도구가 설치되어 있는지 확인합니다.

관리자 PC를 준비하려면 Windows IoT Core를 사용자 지정하는 데 필요한 도구 가져오기를 참조하세요.

Important

사용된 ADK 버전은 아래에 사용된 IoT Core 패키지 버전과 일치해야 합니다.

이 섹션을 완료하려면 다음 도구를 설치해야 합니다.

  • Windows ADK(Windows Assessment and Deployment Kit)
  • Windows 10 IoT Core 패키지
  • IoT Core ADK 추가 기능
  • IoT Core PowerShell 환경
  • 메모장 또는 VS Code와 같은 텍스트 편집기

기본 이미지 만들기

작업 영역 만들기

  1. Windows 탐색기에서 IoT Core ADK 추가 기능을 설치한 폴더(예: C:\IoT-ADK-AddonKit)로 이동하고 IoTCorePSShell.cmd를 엽니다. 관리자 권한으로 실행하라는 메시지가 표시되어야 합니다.

그러면 PowerShell 모듈이 로드되고 ADK, IoT Core 키트 버전도 확인됩니다. 또한 인증서 저장소에 테스트 인증서가 있는지 확인하고 없으면 자동으로 설치합니다.

문제 해결: 오류: "시스템이 지정된 경로를 찾을 수 없습니다". 이 메시지가 표시되면 아이콘을 마우스 오른쪽 단추로 클릭하고 도구를 설치하기 위해 선택한 위치로 "대상"의 경로를 수정합니다.

  1. IoTCorePSShell에서 New-IoTWorkspace를 사용하여 아키텍처 arm에 대해 OEM 이름이 ContosoC:\MyWorkspace라는 새 작업 영역을 만듭니다.
New-IoTWorkspace C:\MyWorkspace Contoso arm
(or) new-ws C:\MyWorkspace Contoso arm

IoT Core는 x64, x86, ARM 및 ARM64의 4가지 아키텍처를 지원합니다.

OEM 이름은 다양한 생성 파일 이름의 접두사로 사용되기 때문에 영숫자 문자만 지원됩니다.

그러면 IoTWorkspace.xml이 생성되고 향후 업데이트에 사용할 수 있는 디자인의 버전 번호가 설정됩니다. 첫 번째 버전 번호의 기본값은 10.0.0.0입니다.

Registry.Version, Custom.Cmd 및 Provisioning.Auto와 같은 필수 패키지는 작업 영역으로 자동으로 가져옵니다.

PowerShell session showing setup of new IoTWorkSpace

  1. 샘플 패키지를 작업 영역으로 가져옵니다. 패키지를 선택적으로 가져오거나 모두 가져오도록 선택할 수 있습니다.
# Importing Recovery packages from sample workspace (create-a-basic-image)
Import-IoTOEMPackage Recovery.*
(or) importpkg Recovery.*
# Below example imports all packages from the sample workspace (create-a-basic-image)
Import-IoTOEMPackage *
(or) importpkg *

Raspberry Pi BSP 가져오기

이 다음 단계는 보드 지원 패키지 파일을 가져오고 FFU 파일에 포함할 .CAB 파일을 추가/구축하는 것입니다.

  1. RPi_BSP.zip을 로컬 디렉터리(예: C:\Downloads\RPi_BSP.zip)에 다운로드합니다.

  2. Import-IoTBSP를 사용하여 bsp 가져오기

Import-IoTBSP RPi2 C:\Downloads\RPi_BSP.zip
(or) importbsp RPi2 C:\Downloads\RPi_BSP.zip

사용 가능한 BSP에 대한 자세한 내용은 Windows 10 IoT Core BSP를 참조하세요.

테스트 프로젝트를 만듭니다.

IoT Core Shell Environment에서 Raspberry Pi 2 BSP를 사용하는 새 제품 폴더를 만듭니다. 이 폴더는 빌드하려는 새 디바이스를 나타내며 프로젝트를 시작하는 데 사용할 수 있는 샘플 사용자 지정 파일을 포함합니다. Add-IoTProduct를 사용하여 새 제품 만들기

Add-IoTProduct ProductA RPi2
(or) newproduct ProductA RPi2

제조업체 이름(OEM 이름), 제품군, SKU, BaseboardManufacturer 및 BaseboardProduct와 같은 SMBIOS 정보를 입력하라는 메시지가 표시됩니다. 다음은 몇 가지 값 예입니다.

  • 시스템 OEM 이름: Fabricam
  • 시스템 제품군 이름: FabricamHub
  • 시스템 SKU 번호: AI-001
  • 베이스보드 제조업체 Arrow
  • 베이스보드 제품: Raspberry Pi 2

BSP 이름은 BSP의 폴더 이름과 동일합니다. C:\MyWorkspace\Source-<arch>\BSP 폴더에서 사용 가능한 BSP를 확인할 수 있습니다.

그러면 C:\MyWorkspace\Source-<arch>\Products\\ProductA 폴더가 만들어집니다.

New Product

OemCustomization.cmd 파일

모든 이미지에는 디바이스를 부팅할 때마다 실행되는 oemcustomization.cmd 파일이 포함되어 있습니다. 이 파일을 수정하여 부팅 시 실행되는 항목을 사용자 지정할 수 있습니다. 이 파일은 이 예에서 C:\MyWorkspace\Source-<arch>\Products\\ProductA 아래에 있습니다. 파일 내용은 다음과 같습니다.

@echo off
REM OEM Customization Script file
REM This script if included in the image, is called everytime the system boots.

reg query HKLM\Software\IoT /v FirstBootDone >nul 2>&1

if %errorlevel% == 1 (
    REM Enable Administrator User
    net user Administrator p@ssw0rd /active:yes
    if exist C:\Data\oobe (
        call folderpermissions.exe 'C:\Data\oobe -e'
    )
REM - Enable the below if you need secure boot/bitlocker
REM Enable Secureboot
REM if exist c:\IoTSec\setup.secureboot.cmd  (
REM    call c:\IoTSec\setup.secureboot.cmd
REM )

REM Enable Bitlocker
REM if exist c:\IoTSec\setup.bitlocker.cmd  (
REM    call c:\IoTSec\setup.bitlocker.cmd
REM )
    reg add HKLM\Software\IoT /v FirstBootDone /t REG_DWORD /d 1 /f >nul 2>&1
)

REM The below should be called on every boot
if exist C:\RecoveryConfig\Recovery.BcdEdit.cmd (
    call C:\RecoveryConfig\Recovery.BcdEdit.cmd
)

REM Set the crashdump file locations to data partition, set on every boot.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v DedicatedDumpFile /t REG_SZ /d C:\Data\DedicatedDumpFile.sys /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v DumpFile /t REG_SZ /d C:\Data\MEMORY.DMP /f

참고 항목

BitLocker 및 SecureBoot와 같은 보안 기능은 사용자 지정 테스트 이미지에 대해 기본적으로 사용하지 않도록 설정되어 있습니다. 소매 이미지에 이러한 기능을 포함하려면 이미지를 빌드하기 전에 파일에서 해당 행의 주석을 제거할 수 있습니다.

참고 항목

이 파일의 명령은 로컬 시스템 권한으로 실행됩니다.

패키지 빌드

IoT Core Shell에서 New-IoTCabPackage를 통해 작업 폴더의 모든 패키지를 빌드하여 제품을 만들 수 있는 환경을 준비합니다.

New-IoTCabPackage All
(or) buildpkg All

참고 항목

테스트 모드에서 패키지를 빌드할 때 SignTool 오류가 발생하면 installoemcerts.cmd를 실행하여 관리자 PC에 테스트 인증서를 설치합니다.

이미지 빌드

  1. Micro SD 카드 및 USB 플래시 드라이브를 포함한 모든 이동식 저장 드라이브를 꺼냅니다.

  2. New-IoTFFUImage를 사용하여 IoT Core PowerShell 환경에서 다음 명령어를 입력하여 FFU 이미지 파일을 빌드합니다.

New-IoTFFUImage ProductA Test
(or) buildimage ProductA Test

그러면 C:\MyWorkspace\Build\<arch>\ProductA\Test에 기본 이미지가 있는 FFU 파일이 빌드됩니다. 이 테스트 이미지에는 디버깅 목적으로 사용할 수 있는 추가 도구가 포함됩니다. 최종 FFU 파일 빌드를 완료하는 데 약 10~30분이 소요됩니다.

모든 출력을 로그 파일 대신 콘솔로 보내려면 아래와 같이 -Verbose 플래그를 추가합니다.

new-IoTFFUImage -Verbose ProductX Test

참고 항목

오류 코드로 0x80070005 또는 0x800705b4가 표시되면 모든 외부 드라이브(마이크로 SD 카드 및 USB 썸 드라이브 포함)의 플러그를 분리하고 다시 시도합니다. 그래도 문제가 해결되지 않으면 PC 설정 및 샘플 다운로드로 돌아가 모든 것이 설치되었는지 확인합니다.

Windows IoT Core 이미지 플래시

이제 FFU 이미지 파일이 빌드되었으므로 이 파일을 사용하여 디바이스에 이미지를 플래시하고 배포할 수 있습니다. FFU 이미지 파일을 특정 제조업체 디바이스로 플래시하는 단계는 아래에 나열되어 있습니다.

필수 조건/요구 사항

이 섹션을 완료하려면 다음 도구를 설치해야 합니다.

  • Windows IoT Core 대시보드(Raspberry Pi만 해당)
  • Dragonboard 업데이트 도구(Qualcomm DragonBorad만 해당)
  • DICM(배포 이미징 및 서비스 및 관리) 도구(Intel 디바이스만 해당)

여기에서는 Raspberry Pi를 사용하고 있으므로 Raspberry Pi로 시작하지만 다른 디바이스에서 이미지를 플래시하는 방법도 설명합니다.

Raspberry Pi

  1. Windows IoT Core 대시보드를 시작합니다.

  2. 마이크로 SD 카드를 관리자 PC에 연결하고 도구에서 선택합니다.

  3. 새 디바이스 설정 섹션에서 디바이스 유형 아래에서 Broadcomm [Raspberry Pi 2 및 3]을 선택합니다.

  4. OS 빌드에서 사용자 지정을 선택합니다.

  5. 찾아보기를 클릭하고 이전에 만든 FFU 파일을 탐색하고 선택합니다. 이 경우 FFU 파일은 C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu에 있습니다. 그런 후 Next 를 클릭합니다.

  6. microSD 카드가 드라이브 선택 항목 아래에 나열되어 있는지 확인합니다.

  7. 선택적으로 디바이스의 디바이스 이름관리자 암호 선택 항목을 설정할 수 있습니다.

  8. 소프트웨어 사용 조건에 동의합니다 확인란(오른쪽 하단)을 선택하고 설치를 클릭합니다.

IoT Dashboard dialog box in Windows settings showing new device set up

Windows IoT Core 대시보드는 이제 명령 창을 열고 DISM(배포 이미지 서비스 및 관리 도구)을 사용하여 FFU 파일을 microSD 카드에 플래시합니다.

Raspberry Pi Flashing DISM

참고 항목

또는 DISM 명령을 사용하여 이미지를 수동으로 플래시할 수도 있습니다. dism.exe /Apply-Image /ImageFile:"D:\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

플래싱 프로세스가 완료되면 관리자 PC에서 microSD 카드를 꺼내 Raspberry Pi에 삽입합니다. 전원을 다시 연결하여 Windows IoT Core를 부팅합니다. 이미지에 대한 기본 정보를 보여 주는 IoT Core 기본 앱이 표시되어야 합니다.

퀄 컴

DragonBoard 410c

Qualcomm은 FFU 이미지 파일을 Dragonboard 410c로 플래시하는 데 사용할 Dragonboard 업데이트 도구 애플리케이션을 제공했습니다. x86 또는 x64 버전을 다운로드할 수 있습니다(x64 권장).

DragonBoard update tool

DragonBoard 업데이트 도구를 설치했으면 먼저 DragonBoard 디바이스를 프로그래밍 모드로 전환해야 합니다. 이는 Dipswitch #1(디바이스 뒷면에 있음)을 ON 위치로 설정하여 수행됩니다.

Dragonboard Dipswitch

microUSB 케이블을 사용하여 DragonBoard 디바이스를 관리자 PC에 연결하고 보드의 전원을 켭니다.

DragonBoard 업데이트 도구를 실행하고 배포할 FFU 이미지 파일을 찾은 다음 프로그램 단추를 누릅니다. 녹색 연결 상태가 표시되고 디바이스가 FFU 파일을 깜박일 때 진행률 표시줄이 표시되어야 합니다.

깜박임 프로세스가 완료되면 보드와 microUSB 케이블에서 전원의 연결을 끊습니다. 그런 다음 Dipswitch #1을 다시 OFF 위치로 전환해야 합니다. 전원을 다시 연결하여 Windows IoT Core를 부팅합니다.

DragonBoard Update tool position 1DragonBoard Update tool position 2

Intel

Apollo Lake/Braswell/Cherry Trail

DISM(배포 이미지 및 서비스 관리 도구)과 부팅 가능한 USB 스틱을 사용하여 FFU 이미지 파일을 지정된 Intel 디바이스(Apollo Lake/Braswell/Cherry Trail)로 플래시합니다. DISM에 대한 추가 정보는 여기에서 찾을 수 있습니다.

USB 부팅 드라이브 만들기

먼저 지정된 Intel 하드웨어 디바이스에서 부팅하는 데 사용할 수 있는 부팅 가능한 USB 드라이브를 만들어야 합니다. 이를 위해 Window PE(WinPE)를 사용할 수 있습니다(WinPE에 대한 추가 정보).

  1. Windows ADK Windows 사전 설치 환경 추가 기능에서 WinPE를 설치합니다.

WinPE Install screen

  1. USB 드라이브 준비

사용하려는 USB 드라이브는 WinPE를 로드하기 전에 올바르게 포맷되어야 합니다. USB 드라이브를 올바르게 포맷하려면 다음 단계를 따릅니다.

  • 관리 명령 프롬프트에서 diskpart 도구를 실행합니다.
  • list disk를 실행하여 사용 가능한 디스크 목록을 봅니다.
  • select disk X를 실행합니다. 여기서 X는 USB 드라이브의 디스크 번호에 해당합니다.
  • clean을 실행하여 선택한 디스크를 정리합니다.

참고 항목

다음 오류가 발생하면 convert mbr을 실행합니다.

ERROR: Failed to format "F:"; DiskPart errorlevel -2147212244
  • create partition primary를 실행하여 디스크에 주 파티션을 만듭니다.
  • format fs=fat32 quick을 실행하여 드라이브를 포맷합니다.
  • assign을 실행하여 드라이브를 할당합니다.
  • diskpart을 종료합니다. 이제 USB 드라이브가 포맷되어 WinPE를 설치할 준비가 되었습니다.
  1. WinPE 작업 파일 만들기

이제 관리자 PC에서 Windows PE 파일의 작업 복사본을 만들어야 합니다. 이는 배포 및 이미징 도구 환경 명령줄 프로그램을 사용하여 수행할 수 있습니다. Deployment and Imaging Tools Environment를 시작하는 가장 쉬운 방법은 시작 메뉴를 통해 배포를 검색하는 것입니다.

배포 및 이미징 도구 환경 명령줄 프로그램을 관리자 권한으로 실행하고 다음 명령을 실행합니다.

copype amd64 C:\WinPE_amd64

그러면 C:\WinPE_amd64에 Windows PE 파일의 작업 복사본이 만들어집니다.

관리자 PC에 USB 드라이브를 삽입하고 이 명령을 실행하여 USB 드라이브에 Windows PE를 설치합니다. X를 USB 드라이브의 드라이브 문자로 바꿀 수 있는지 확인합니다.

MakeWinPEMedia /UFD C:\WinPE_amd64 X:
  1. FFU 파일을 USB 드라이브의 루트 드라이브에 복사합니다.
  2. USB 드라이브를 Intel 하드웨어 디바이스에 삽입하고 USB 드라이브에서 부팅합니다. USB 드라이브에서 부팅하도록 지정하려면 하드웨어 디바이스의 BIOS(또는 부팅 메뉴)로 들어가야 할 수 있습니다.
  3. Windows PE 환경이 부팅되면 명령 창이 나타납니다. 드라이브 및 현재 디렉터리를 FFU 파일의 위치로 변경하고(드라이브 열거에 따라 C: 또는 D: 등에 있을 수 있음) 다음 명령을 실행하여 FFU 이미지 파일을 플래시합니다.
dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

참고 항목

대부분의 경우 플래시할 온보드 스토리지 대상은 PhysicalDrive0으로 열거되지만 저장 디바이스가 여러 개인 경우 다른 드라이브 번호로 열거될 수 있습니다. diskpart에서 list disk 명령을 사용하여 드라이브 번호를 확인할 수 있습니다.

  1. 플래시 프로세스가 완료되면 하드웨어 디바이스의 전원을 끄고 USB 드라이브를 제거합니다. 하드웨어 디바이스에 전원을 다시 연결하여 Windows IoT Core를 부팅합니다.
Diskpart 명령
C:\>diskpart
 Microsoft DiskPart version 10.0.17134.1
 Copyright (C) Microsoft Corporation.
 On computer: LWIN-CNCY-BUILD

 DISKPART> list disk

 Disk ###  Status         Size     Free     Dyn  Gpt
 --------  -------------  -------  -------  ---  ---
 Disk 0    Online          447 GB  1024 KB        *
 Disk 1    Online          167 GB  1024 KB        *
 Disk 2    Online           14 GB      0 B        *

 DISKPART> select disk 2
 Disk 2 is now the selected disk.

 DISKPART> clean
 DiskPart succeeded in cleaning the disk.

 DISKPART> convert mbr
 DiskPart successfully converted the selected disk to MBR format.

 DISKPART> create partition primary
 DiskPart succeeded in creating the specified partition.

 DISKPART> format fs=fat32 quick
   100 percent completed

 DiskPart successfully formatted the volume.

 DISKPART> assign
 DiskPart successfully assigned the drive letter or mount point.

 DISKPART> exit
WinPE 명령
copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 X:
DISM 명령(Intel 하드웨어 디바이스에서 WinPE를 통해)
X:\WinPE>d:

D:\>dism.exe /Apply-Image /ImageFile:"C:\IoT\Workspaces\ContosoWS\Build\ARM\ProductX\Test\flash.ffu" /ApplyDrive:\\.\PhysicalDrive0 /SkipPlatformCheck

다음 단계

지금은 디바이스를 켜둔 상태로 두고 랩 1b: 이미지에 앱 추가를 계속 진행합니다.