Personalizaciones del sistema operativo para OEM

OEM puede personalizar varios aspectos del sistema operativo mediante los métodos especificados a continuación.

Aplicación OOBE

IoTCore tiene una aplicación OOBE de bandeja de entrada que se ejecuta cuando el dispositivo arranca por primera vez. Esto se muestra hasta que todos los paquetes de aprovisionamiento se procesan en segundo plano y hay una aplicación OEM disponible para iniciarse como una aplicación de inicio.

Esta aplicación OOBE se puede personalizar con un settings.json con los siguientes atributos:

  • backgroundColor: color de fondo de pantalla
  • background: imagen de fondo (archivo jpg)
  • progressRingVisible: los puntos giratorios se pueden mostrar u ocultar
  • welcomeText: texto mostrado en fuente grande en el centro de la pantalla
  • pleaseWaitText: texto que se muestra debajo de los puntos giratorios
  • animation: el gif de animación se puede especificar aquí.
  • animationMargin: Posicionamiento del gif de animación
  • izquierda, superior, derecha, inferior

Todos los archivos a los que se hace referencia en settings.json deben estar en la misma carpeta que el archivo settings.json. A continuación se muestra un fragmento de código de ejemplo.

{
"backgroundColor":  "#FF0000FF",
"progressRingVisible": true,
"welcomeText": "Welcome to OOBE customization",
"pleaseWaitText": "please wait ..."
}

Nota:

El archivo settings.json debe codificarse en codificación Unicode (UCS-2). UTF-8 no funcionará.

Validar la configuración manualmente

  1. Cree el settings.json archivo con la configuración necesaria
  2. Conéctese al dispositivo IoT (mediante SSH o powershell) y coloque el settings.json archivo junto con todos los recursos gráficos de un directorio, por ejemplo, C:\Data\oobe
  3. Configurar el dispositivo para permitir el acceso a este directorio desde todos los archivos appx, mediante
folderpermissions C:\Data\oobe -e
  1. Inicio de la aplicación OOBE mediante
iotstartup add headed IoTUAPOOBE
  1. Comprobación de la interfaz de usuario

Adición de la configuración a la imagen de IoT Core

  1. Use el paquete Custom.OOBEApp y modifique el archivo xml del paquete para agregar los recursos gráficos.

  2. Copie los recursos de settings.json y gráficos en esa carpeta del paquete.

  3. En el archivo oemcustomizations.cmd, agregue folderpermissions C:\Data\oobe -e , para asegurarse de que se llama a este en el arranque del sistema.

  4. En el OEMInput.xml, incluya el identificador de característica CUSTOM_OOBEAPP, tenga en cuenta que esto se define en el OEMCOMMONFM.xml.

Configuración de bloqueo

En el caso de los productos de IoT Core, se recomienda configurar los dispositivos para que se reinicien en caso de bloqueo y también ocultar la pantalla de volcado de memoria (BSOD). Esto se logra con la configuración de las siguientes claves del Registro:

HKLM\SYSTEM\CurrentControlSet\Control\CrashControl AutoReboot establecido en 1 DisplayDisabled establecido en 1

Validar la configuración manualmente

  1. Conéctese al dispositivo IoT (mediante SSH o powershell) y establezca las siguientes claves del Registro.

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. Consulta Forzar un bloqueo del sistema desde el teclado y configurar una tecla para forzar el bloqueo del sistema.
  2. Forzar un bloqueo del sistema mediante la clave configurada y comprobar que el dispositivo se reinicia automáticamente y no muestra la pantalla crashdump.

Adición de la configuración a la imagen de IoT Core

  1. Uso del paquete Custom.Settings
  2. En el OEMInput.xml, incluya el identificador de característica CUSTOM_SETTINGS, tenga en cuenta que esto se define en el OEMCOMMONFM.xml.

Nota:

En Windows 10, versión 1809, se agrega IOT_CRASHCONTROL_SETTINGS característica para abordar esta personalización.

Configuración de ubicación

Desde la versión "11 B" de Windows 10 IoTCore RS5 de noviembre de 2019 (versión del sistema operativo 17763.865) en adelante, los servicios de ubicación para IoT Core se configurarán para que se establezcan en "desactivados" de forma predeterminada. Si es un OEM y desea activar los servicios de ubicación, siga estos pasos. Esto solo se aplica a IoT Core.

En la clave del Registro:

HKLM\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\Capabilities\location\edition InitSystemGlobalConsentDenied establecido en 0 InitUserGlobalConsentDenied establecido en 0

Los generadores de kit deben consultar /windows-hardware/manufacture/iot/add-a-registry-setting-to-an-image para obtener instrucciones sobre cómo crear una imagen personalizada con esta configuración del Registro

Configuración de BCD

Las opciones de la base de datos de configuración de arranque se pueden usar para configurar varias características. Consulte BCDEdit Command-LineOptions para ver las distintas opciones y opciones disponibles.

A continuación se enumeran algunas características clave.

Deshabilitar animación de experiencia de usuario de arranque

  1. La configuración manual se puede realizar con el comando siguiente
bcdedit -set {bootmgr} nobootuxprogress true
  1. Especificar esta configuración en un Custom.BCD.xml archivo
<?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. Incluya esta configuración en la imagen mediante el paquete Custom.BCD y agregue el identificador de característica CUSTOM_BCD al archivo OEMInput.xml

Hay varias maneras de reemplazar el logotipo de arranque que muestra el BIOS o UEFI. Una manera es conceder una licencia a UEFI, o pagar a un proveedor del fabricante de la placa para hacerlo, y realizar cambios directamente en el código fuente de UEFI. Como alternativa, en los dispositivos cuya implementación de UEFI admite controladores UEFI cargados firmados, hay un ejemplo aquí: https://github.com/Microsoft/MS_UEFI/tree/share/MsIoTSamples que muestra cómo crear un controlador que reemplace el logotipo de arranque y proporcione una tabla BGRT a bootmgr para que el proceso de arranque de Windows deje el logotipo en su lugar durante el arranque en lugar de reemplazarlo por el logotipo de Windows.

Habilitación de la firma de vuelos

  1. La configuración manual se puede realizar con los siguientes comandos:
bcdedit /set {bootmgr} flightsigning on
bcdedit /set flightsigning on
  1. Para incluir esta configuración en la imagen, puede agregar el fragmento siguiente al 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>

Personalizaciones en tiempo de ejecución

Además de las personalizaciones estáticas descritas anteriormente, también puede personalizar durante el tiempo de ejecución.

  1. OEMCustomizations.cmd
  • IoTCore Shell invoca este archivo de comandos en cada arranque con privilegios del sistema, colocados en c:\windows\system32
  • Puede especificar cualquier acción de personalización aquí en este archivo cmd, aunque se recomienda mantener esto como una opción de último recurso para las personalizaciones.
  • En el iot-adk-addonkit, este archivo se crea para cada producto en el directorio del producto. Agregue el identificador de característica CUSTOM_CMD en el archivo XML OEMInput para incluirlo en la imagen.
  • Consulte el paquete Custom.Cmd y el oemcustomizations.cmd de ejemplo.
  1. Customizations.xml
  • Este es el archivo de configuración que se usa para crear el paquete de aprovisionamiento.
  • Para procesar automáticamente este paquete de aprovisionamiento en el momento del arranque, este paquete se coloca en c:\windows\provisioning\packages
  • En el iot-adk-addonkit, este archivo se crea para cada producto en el directorio del producto. Agregue el identificador de característica PROV_AUTO en el archivo XML OEMInput para incluirlo en la imagen.
  • Consulte Provisioning.Auto package and sample Customizations.xml
  • Para obtener más información, consulte:
  • Adición de un paquete de aprovisionamiento
  • Aprovisionamiento para proveedores de servicios de configuración (CSP) admitidos en IoT Core