다음을 통해 공유


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은 작동하지 않습니다.

수동으로 설정 유효성 검사

  1. 필요한 설정으로 settings.json 파일 제작
  2. IoT 디바이스에 연결(SSH 사용 또는 Powershell 사용)하고 settings.json 파일을 모든 그래픽 자산과 함께 디렉터리에 배치합니다(예: C:\Data\oobe).
  3. 다음을 사용하여 모든 appx 파일에서 이 디렉터리에 대한 액세스를 허용하도록 디바이스를 구성합니다.
folderpermissions C:\Data\oobe -e
  1. 다음을 사용하여 OOBE 애플리케이션을 시작합니다.
iotstartup add headed IoTUAPOOBE
  1. 사용자 인터페이스 확인

IoT Core 이미지에 설정 추가

  1. Custom.OOBEApp 패키지를 사용하고 패키지 xml 파일을 수정하여 그래픽 자산을 추가합니다.

  2. settings.json 및 그래픽 자산을 해당 패키지 폴더에 복사합니다.

  3. oemcustomizations.cmd 파일에 folderpermissions C:\Data\oobe -e를 추가하여 시스템 부팅 시 호출되도록 합니다.

  4. OEMInput.xml에 기능 ID CUSTOM_OOBEAPP를 포함합니다. 이 ID는 OEMCOMMONFM.xml에 정의되어 있습니다.

크래시 설정

IoT Core 제품의 경우 크래시 발생 시 다시 부팅하도록 디바이스를 구성하고 크래시 덤프 화면(BSOD)도 숨기는 것이 좋습니다. 이는 다음 레지스트리 키를 설정하여 달성됩니다.

HKLM\SYSTEM\CurrentControlSet\Control\CrashControl 자동 다시 부팅이 1로 설정됨 DisplayDisabled가 1로 설정됨

수동으로 설정 유효성 검사

  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

  1. 키보드에서 강제 시스템 크래시를 참조하고 시스템 크래시를 강제 실행하도록 키를 구성합니다.
  2. 구성된 키를 사용하여 시스템 크래시를 강제 실행하고 디바이스가 자동으로 다시 부팅되고 crashdump 화면이 표시되지 않는지 확인합니다.

IoT Core 이미지에 설정 추가

  1. Custom.Settings 패키지 사용
  2. 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 애니메이션 사용 안 함

  1. 아래 명령어로 수동 설정 가능
bcdedit -set {bootmgr} nobootuxprogress true
  1. 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>
  1. 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 로고로 바꾸는 대신 제자리에 두도록 하는 방법을 보여 줍니다.

플라이트 서명 사용하도록 설정

  1. 수동 설정은 다음 명령으로 수행할 수 있습니다.
bcdedit /set {bootmgr} flightsigning on
bcdedit /set flightsigning on
  1. 이미지에 이 설정을 포함하려면 아래 조각을 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>

런타임 사용자 지정

위에서 설명한 정적 사용자 지정 외에도 런타임 중에 사용자 지정할 수도 있습니다.

  1. OEMCustomizations.cmd
  • 이 명령 파일은 c:\windows\system32에 있는 시스템 권한으로 부팅할 때마다 IoTCore Shell에 의해 호출됩니다.
  • 이 cmd 파일에서 모든 사용자 지정 작업을 지정할 수 있지만 사용자 지정을 위한 최후의 수단 옵션으로 이를 유지하는 것이 좋습니다.
  • iot-adk-addonkit에서 이 파일은 제품 디렉터리 아래 각 제품에 대해 만들어집니다. 이미지에 포함하려면 OEMInput xml 파일에 기능 ID CUSTOM_CMD를 추가합니다.
  • Custom.Cmd 패키지 및 샘플 oemcustomizations.cmd를 참조하세요.
  1. Customizations.xml
  • 프로비저닝 패키지를 만드는 데 사용되는 설정 파일입니다.
  • 부팅 시 이 프로비저닝 패키지를 자동으로 처리하기 위해 이 패키지는 c:\windows\provisioning\packages에 배치됩니다.
  • iot-adk-addonkit에서 이 파일은 제품 디렉터리 아래 각 제품에 대해 만들어집니다. 이미지에 포함하려면 OEMInput xml 파일에 기능 ID PROV_AUTO를 추가합니다.
  • Provisioning.Auto 패키지 및 샘플 Customizations.xml 참조
  • 자세한 내용은 다음을 참조하세요.
  • 프로비저닝 패키지 추가
  • IoT Core에서 지원되는 구성 서비스 공급자(CSP)에 대한 프로비저닝