랩 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와 같은 텍스트 편집기
기본 이미지 만들기
작업 영역 만들기
- Windows 탐색기에서 IoT Core ADK 추가 기능을 설치한 폴더(예: C:\IoT-ADK-AddonKit)로 이동하고 IoTCorePSShell.cmd를 엽니다. 관리자 권한으로 실행하라는 메시지가 표시되어야 합니다.
그러면 PowerShell 모듈이 로드되고 ADK, IoT Core 키트 버전도 확인됩니다. 또한 인증서 저장소에 테스트 인증서가 있는지 확인하고 없으면 자동으로 설치합니다.
문제 해결: 오류: "시스템이 지정된 경로를 찾을 수 없습니다". 이 메시지가 표시되면 아이콘을 마우스 오른쪽 단추로 클릭하고 도구를 설치하기 위해 선택한 위치로 "대상"의 경로를 수정합니다.
- IoTCorePSShell에서 New-IoTWorkspace를 사용하여 아키텍처
arm
에 대해 OEM 이름이Contoso
인C:\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와 같은 필수 패키지는 작업 영역으로 자동으로 가져옵니다.
- 샘플 패키지를 작업 영역으로 가져옵니다. 패키지를 선택적으로 가져오거나 모두 가져오도록 선택할 수 있습니다.
# 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 파일을 추가/구축하는 것입니다.
RPi_BSP.zip을 로컬 디렉터리(예:
C:\Downloads\RPi_BSP.zip
)에 다운로드합니다.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
폴더가 만들어집니다.
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에 테스트 인증서를 설치합니다.
이미지 빌드
Micro SD 카드 및 USB 플래시 드라이브를 포함한 모든 이동식 저장 드라이브를 꺼냅니다.
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
Windows IoT Core 대시보드를 시작합니다.
마이크로 SD 카드를 관리자 PC에 연결하고 도구에서 선택합니다.
새 디바이스 설정 섹션에서 디바이스 유형 아래에서 Broadcomm [Raspberry Pi 2 및 3]을 선택합니다.
OS 빌드에서 사용자 지정을 선택합니다.
찾아보기를 클릭하고 이전에 만든 FFU 파일을 탐색하고 선택합니다. 이 경우 FFU 파일은
C:\MyWorkspace\Build\<arch>\ProductA\Test\Flash.ffu
에 있습니다. 그런 후 Next 를 클릭합니다.microSD 카드가 드라이브 선택 항목 아래에 나열되어 있는지 확인합니다.
선택적으로 디바이스의 디바이스 이름 및 관리자 암호 선택 항목을 설정할 수 있습니다.
소프트웨어 사용 조건에 동의합니다 확인란(오른쪽 하단)을 선택하고 설치를 클릭합니다.
Windows IoT Core 대시보드는 이제 명령 창을 열고 DISM(배포 이미지 서비스 및 관리 도구)을 사용하여 FFU 파일을 microSD 카드에 플래시합니다.
참고 항목
또는 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 업데이트 도구를 설치했으면 먼저 DragonBoard 디바이스를 프로그래밍 모드로 전환해야 합니다. 이는 Dipswitch #1(디바이스 뒷면에 있음)을 ON 위치로 설정하여 수행됩니다.
microUSB 케이블을 사용하여 DragonBoard 디바이스를 관리자 PC에 연결하고 보드의 전원을 켭니다.
DragonBoard 업데이트 도구를 실행하고 배포할 FFU 이미지 파일을 찾은 다음 프로그램 단추를 누릅니다. 녹색 연결 상태가 표시되고 디바이스가 FFU 파일을 깜박일 때 진행률 표시줄이 표시되어야 합니다.
깜박임 프로세스가 완료되면 보드와 microUSB 케이블에서 전원의 연결을 끊습니다. 그런 다음 Dipswitch #1을 다시 OFF 위치로 전환해야 합니다. 전원을 다시 연결하여 Windows IoT Core를 부팅합니다.
Intel
Apollo Lake/Braswell/Cherry Trail
DISM(배포 이미지 및 서비스 관리 도구)과 부팅 가능한 USB 스틱을 사용하여 FFU 이미지 파일을 지정된 Intel 디바이스(Apollo Lake/Braswell/Cherry Trail)로 플래시합니다. DISM에 대한 추가 정보는 여기에서 찾을 수 있습니다.
USB 부팅 드라이브 만들기
먼저 지정된 Intel 하드웨어 디바이스에서 부팅하는 데 사용할 수 있는 부팅 가능한 USB 드라이브를 만들어야 합니다. 이를 위해 Window PE(WinPE)를 사용할 수 있습니다(WinPE에 대한 추가 정보).
- Windows ADK Windows 사전 설치 환경 추가 기능에서 WinPE를 설치합니다.
- 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를 설치할 준비가 되었습니다.
- 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:
- FFU 파일을 USB 드라이브의 루트 드라이브에 복사합니다.
- USB 드라이브를 Intel 하드웨어 디바이스에 삽입하고 USB 드라이브에서 부팅합니다. USB 드라이브에서 부팅하도록 지정하려면 하드웨어 디바이스의 BIOS(또는 부팅 메뉴)로 들어가야 할 수 있습니다.
- 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
명령을 사용하여 드라이브 번호를 확인할 수 있습니다.
- 플래시 프로세스가 완료되면 하드웨어 디바이스의 전원을 끄고 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: 이미지에 앱 추가를 계속 진행합니다.