OEM을 위한 OS 사용자 지정
OEM은 아래 지정된 방법을 사용하여 OS의 다양한 측면을 사용자 지정할 수 있습니다.
OOBE 앱
IoTCore에는 디바이스가 처음 부팅될 때 실행되는 받은 편지함 OOBE 앱이 있습니다. 이는 모든 프로비저닝 패키지가 백그라운드에서 처리되고 OEM 앱을 시작 앱으로 시작할 수 있을 때까지 표시됩니다.
이 OOBE 앱은 다음 특성을 가진 settings.json
으로 사용자 지정할 수 있습니다.
- backgroundColor: 화면 배경색
- background: 배경 이미지(jpg 파일)
- progressRingVisible: 회전하는 점을 표시하거나 숨길 수 있습니다.
- welcomeText: 화면 중앙에 큰 글씨로 표시되는 텍스트
- pleaseWaitText: 회전하는 점 아래에 표시되는 텍스트
- animation: 여기에서 애니메이션 gif를 지정할 수 있습니다.
- animationMargin: 애니메이션 gif의 위치
- 왼쪽 , 위 , 오른쪽 , 아래
settings.json에서 참조하는 모든 파일은 settings.json 파일과 동일한 폴더에 있어야 합니다. 샘플 코드 조각이 아래에 나와 있습니다.
{
"backgroundColor": "#FF0000FF",
"progressRingVisible": true,
"welcomeText": "Welcome to OOBE customization",
"pleaseWaitText": "please wait ..."
}
참고
settings.json 파일은 유니코드(UCS-2) 인코딩으로 인코딩해야 합니다. UTF-8은 작동하지 않습니다.
수동으로 설정 유효성 검사
- 필요한 설정으로
settings.json
파일 제작 - IoT 디바이스에 연결(SSH 사용 또는 Powershell 사용)하고
settings.json
파일을 모든 그래픽 자산과 함께 디렉터리에 배치합니다(예:C:\Data\oobe
). - 다음을 사용하여 모든 appx 파일에서 이 디렉터리에 대한 액세스를 허용하도록 디바이스를 구성합니다.
folderpermissions C:\Data\oobe -e
- 다음을 사용하여 OOBE 애플리케이션을 시작합니다.
iotstartup add headed IoTUAPOOBE
- 사용자 인터페이스 확인
IoT Core 이미지에 설정 추가
Custom.OOBEApp 패키지를 사용하고 패키지 xml 파일을 수정하여 그래픽 자산을 추가합니다.
settings.json 및 그래픽 자산을 해당 패키지 폴더에 복사합니다.
oemcustomizations.cmd 파일에
folderpermissions C:\Data\oobe -e
를 추가하여 시스템 부팅 시 호출되도록 합니다.OEMInput.xml에 기능 ID CUSTOM_OOBEAPP를 포함합니다. 이 ID는 OEMCOMMONFM.xml에 정의되어 있습니다.
크래시 설정
IoT Core 제품의 경우 크래시 발생 시 다시 부팅하도록 디바이스를 구성하고 크래시 덤프 화면(BSOD)도 숨기는 것이 좋습니다. 이는 다음 레지스트리 키를 설정하여 달성됩니다.
HKLM\SYSTEM\CurrentControlSet\Control\CrashControl 자동 다시 부팅이 1로 설정됨 DisplayDisabled가 1로 설정됨
수동으로 설정 유효성 검사
- IoT 디바이스에 연결하고(SSH 사용 또는 Powershell 사용) 다음 레지스트리 키를 설정합니다.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v AutoReboot /t REG_DWORD /d 1 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" /v DisplayDisabled /t REG_DWORD /d 1 /f
- 키보드에서 강제 시스템 크래시를 참조하고 시스템 크래시를 강제 실행하도록 키를 구성합니다.
- 구성된 키를 사용하여 시스템 크래시를 강제 실행하고 디바이스가 자동으로 다시 부팅되고 crashdump 화면이 표시되지 않는지 확인합니다.
IoT Core 이미지에 설정 추가
- Custom.Settings 패키지 사용
- OEMInput.xml에 기능 ID CUSTOM_SETTINGS를 포함합니다. 이 ID는 OEMCOMMONFM.xml에 정의되어 있습니다.
참고
Windows 10 버전 1809에서는 이 사용자 지정을 해결하기 위해 IOT_CRASHCONTROL_SETTINGS 기능이 추가되었습니다.
위치 설정
Windows 10 IoTCore RS5 2019년 11월 "11 B 릴리스(OS 버전 17763.865)부터 IoT Core의 위치 서비스는 기본적으로 "꺼짐"으로 설정되도록 구성됩니다. OEM이고 위치 서비스를 켜고 싶다면 아래 단계를 따릅니다. 이는 IoT Core에만 적용됩니다.
레지스트리 키에서:
HKLM\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\Capabilities\location\edition InitSystemGlobalConsentDenied가 0으로 설정됨 InitUserGlobalConsentDenied가 0으로 설정됨
키트 빌더는 이러한 레지스트리 설정으로 사용자 지정 이미지를 구축하는 방법에 대한 지침을 /windows-hardware/manufacture/iot/add-a-registry-setting-to-an-image를 참조해야 합니다.
BCD 설정
부팅 구성 데이터베이스 설정을 사용하여 다양한 기능을 구성할 수 있습니다. 사용 가능한 다양한 설정 및 옵션은 BCDEdit Command-LineOptions를 참조하세요.
몇 가지 주요 기능은 다음과 같습니다.
부팅 UX 애니메이션 사용 안 함
- 아래 명령어로 수동 설정 가능
bcdedit -set {bootmgr} nobootuxprogress true
Custom.BCD.xml
파일에서 이 설정을 지정합니다.
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<BootConfigurationDatabase
xmlns="http://schemas.microsoft.com/phone/2011/10/BootConfiguration"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
IncludeDescriptions="true" IncludeRegistryHeader="true">
<Objects>
<!-- Windows Boot Manager -->
<Object SaveKeyToRegistry="false">
<FriendlyName>Windows Boot Manager</FriendlyName>
<Elements>
<Element>
<DataType>
<WellKnownType>Boot UX Progress Animation Disable</WellKnownType>
</DataType>
<ValueType>
<BooleanValue>true</BooleanValue>
</ValueType>
</Element>
</Elements>
</Object>
</Objects>
</BootConfigurationDatabase>
- Custom.BCD 패키지를 사용하여 이미지에 이 설정을 포함하고 OEMInput.xml 파일에 기능 ID CUSTOM_BCD를 추가합니다.
부팅 로고 교체
BIOS 또는 UEFI에 표시되는 부팅 로고를 교체하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 UEFI에 라이선스를 부여하거나 보드 제조업체 공급업체에 비용을 지불하여 UEFI 소스 코드를 직접 변경하는 것입니다. 또는 UEFI 구현이 서명된 로드 가능한 UEFI 드라이버를 지원하는 디바이스의 경우 여기에 샘플이 있습니다. https://github.com/Microsoft/MS_UEFI/tree/share/MsIoTSamples 부팅 로고를 대체하는 드라이버를 빌드하고 bootmgr에 BGRT 테이블을 제공하여 Windows 부팅 프로세스가 부팅 중에 로고를 Windows 로고로 바꾸는 대신 제자리에 두도록 하는 방법을 보여 줍니다.
플라이트 서명 사용하도록 설정
- 수동 설정은 다음 명령으로 수행할 수 있습니다.
bcdedit /set {bootmgr} flightsigning on
bcdedit /set flightsigning on
- 이미지에 이 설정을 포함하려면 아래 조각을
Custom.BCD.xml
에 추가할 수 있습니다.
<!-- Allow Flight Signing Certificate -->
<Object SaveKeyToRegistry="false">
<FriendlyName>Global Settings Group</FriendlyName>
<Elements>
<Element>
<DataType>
<WellKnownType>Allow Flight Signatures</WellKnownType>
</DataType>
<ValueType>
<BooleanValue>true</BooleanValue>
</ValueType>
</Element>
</Elements>
</Object>
런타임 사용자 지정
위에서 설명한 정적 사용자 지정 외에도 런타임 중에 사용자 지정할 수도 있습니다.
OEMCustomizations.cmd
- 이 명령 파일은
c:\windows\system32
에 있는 시스템 권한으로 부팅할 때마다 IoTCore Shell에 의해 호출됩니다. - 이 cmd 파일에서 모든 사용자 지정 작업을 지정할 수 있지만 사용자 지정을 위한 최후의 수단 옵션으로 이를 유지하는 것이 좋습니다.
- iot-adk-addonkit에서 이 파일은 제품 디렉터리 아래 각 제품에 대해 만들어집니다. 이미지에 포함하려면 OEMInput xml 파일에 기능 ID CUSTOM_CMD를 추가합니다.
- Custom.Cmd 패키지 및 샘플 oemcustomizations.cmd를 참조하세요.
Customizations.xml
- 프로비저닝 패키지를 만드는 데 사용되는 설정 파일입니다.
- 부팅 시 이 프로비저닝 패키지를 자동으로 처리하기 위해 이 패키지는
c:\windows\provisioning\packages
에 배치됩니다. - iot-adk-addonkit에서 이 파일은 제품 디렉터리 아래 각 제품에 대해 만들어집니다. 이미지에 포함하려면 OEMInput xml 파일에 기능 ID PROV_AUTO를 추가합니다.
- Provisioning.Auto 패키지 및 샘플 Customizations.xml 참조
- 자세한 내용은 다음을 참조하세요.
- 프로비저닝 패키지 추가
- IoT Core에서 지원되는 구성 서비스 공급자(CSP)에 대한 프로비저닝