Personalizações do sistema operacional para OEM
O OEM pode personalizar vários aspectos do sistema operacional usando os métodos especificados abaixo.
Aplicativo OOBE
O IoTCore tem um aplicativo OOBE de caixa de entrada que é executado quando o dispositivo é inicializado pela primeira vez. Isso é mostrado até que todos os pacotes de provisionamento sejam processados em segundo plano e um aplicativo OEM esteja disponível para ser iniciado como um aplicativo de inicialização.
Esse aplicativo OOBE pode ser personalizado com um settings.json
com os seguintes atributos:
- backgroundColor: cor da tela de fundo
- background: imagem de plano de fundo (arquivo jpg)
- progressRingVisible: os nós giratórios podem ser mostrados ou ocultos
- welcomeText: texto exibido em fonte grande no centro da tela
- pleaseWaitText: texto exibido abaixo dos ponto giratórios
- animação: gif de animação pode ser especificado aqui
- animationMargin: posicionamento do gif de animação
- esquerda, superior , direita, inferior
Todos os arquivos referenciados em settings.json devem estar na mesma pasta que o arquivo settings.json. Um snippet de exemplo é dado abaixo
{
"backgroundColor": "#FF0000FF",
"progressRingVisible": true,
"welcomeText": "Welcome to OOBE customization",
"pleaseWaitText": "please wait ..."
}
Observação
O arquivo settings.json precisa ser codificado na codificação Unicode (UCS-2). UTF-8 não funcionará.
Validar as configurações manualmente
- Criar o
settings.json
arquivo com as configurações necessárias - Conecte-se ao dispositivo IoT (usando SSH ou usando o Powershell) e coloque o
settings.json
arquivo junto com todos os ativos gráficos em um diretório, digamosC:\Data\oobe
- Configurar o dispositivo para permitir o acesso a esse diretório de todos os arquivos appx, usando
folderpermissions C:\Data\oobe -e
- Iniciar o aplicativo OOBE usando
iotstartup add headed IoTUAPOOBE
- Verificar a interface do usuário
Adicionar configurações à imagem do IoT Core
Use o pacote Custom.OOBEApp e modifique o arquivo xml do pacote para adicionar seus ativos gráficos
Copie os ativos gráficos e settings.json para essa pasta de pacote.
No arquivo oemcustomizations.cmd, adicione
folderpermissions C:\Data\oobe -e
, para garantir que isso seja chamado na inicialização do sistema.Na OEMInput.xml, inclua a ID do recurso CUSTOM_OOBEAPP, observe que isso é definido no OEMCOMMONFM.xml.
Configurações de falha
Para produtos do IoT Core, é recomendável configurar seus dispositivos para reinicializar em caso de falha e também ocultar a tela de despejo de memória (BSOD). Isso é feito com a configuração das seguintes chaves do Registro:
HKLM\SYSTEM\CurrentControlSet\Control\CrashControl AutoReboot definido como 1 DisplayDisabled definido como 1
Validar as configurações manualmente
- Conecte-se ao seu dispositivo IoT (usando SSH ou usando o Powershell) e defina as chaves do Registro a seguir
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
- Confira Forçar uma falha do sistema do teclado e configurar uma tecla para forçar a falha do sistema.
- Force uma falha do sistema usando a chave configurada e verifique se o dispositivo é reinicializado automaticamente e não mostra a tela de memória com falha.
Adicionar configurações à imagem do IoT Core
- Usar o pacote Custom.Settings
- No OEMInput.xml, inclua a ID do recurso CUSTOM_SETTINGS, observe que isso é definido no OEMCOMMONFM.xml.
Observação
Em Windows 10, versão 1809, IOT_CRASHCONTROL_SETTINGS recurso é adicionado para resolver essa personalização.
Configurações de localização
A partir da versão "11 B" do Windows 10 IoTCore RS5 de novembro de 2019 (versão 17763.865) em diante, os serviços de localização do IoT Core serão configurados para serem definidos como "desativados" por padrão. Se você for um OEM e quiser ativar os serviços de localização, siga as etapas abaixo. Isso só se aplica ao IoT Core.
Na chave do Registro:
HKLM\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\Capabilities\location\edition InitSystemGlobalConsentDenied definido como 0 InitUserGlobalConsentDenied definido como 0
Os construtores de kit devem se referir a /windows-hardware/manufacture/iot/add-a-registry-setting-to-an-image para obter instruções sobre como criar uma imagem personalizada com essas configurações do Registro
Configurações de BCD
As configurações do banco de dados de configuração de inicialização podem ser usadas para configurar vários recursos. Consulte BCDEdit Command-LineOptions para obter as várias configurações e opções disponíveis.
Alguns dos principais recursos estão listados abaixo
Desabilitar animação da experiência do usuário de inicialização
- A configuração manual pode ser feita com o comando abaixo
bcdedit -set {bootmgr} nobootuxprogress true
- Especificar essa configuração em um
Custom.BCD.xml
arquivo
<?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>
- Inclua essa configuração na imagem usando o pacote Custom.BCD e adicione a ID do recurso CUSTOM_BCD ao arquivo OEMInput.xml
Substituindo o logotipo de inicialização
Há várias maneiras de substituir o logotipo de inicialização exibido pelo BIOS ou UEFI. Uma maneira é licenciar a UEFI ou pagar um fornecedor de placa para fazer isso e fazer alterações diretamente no código-fonte UEFI. Como alternativa, em dispositivos cuja implementação uefi dá suporte a drivers UEFI carregáveis assinados, há um exemplo aqui: https://github.com/Microsoft/MS_UEFI/tree/share/MsIoTSamples que mostra como criar um driver que substitui o logotipo de inicialização e fornecer uma tabela BGRT para bootmgr para que o processo de inicialização do Windows deixe seu logotipo no lugar durante a inicialização em vez de substituí-lo pelo logotipo do Windows.
Habilitar Assinatura de Voo
- A configuração manual pode ser feita com os comandos abaixo:
bcdedit /set {bootmgr} flightsigning on
bcdedit /set flightsigning on
- Para incluir essa configuração na imagem, você pode adicionar o fragmento abaixo ao
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>
Personalizações de runtime
Além das personalizações estáticas discutidas acima, você também pode personalizar durante o runtime.
OEMCustomizations.cmd
- Esse arquivo de comando é invocado pelo Shell IoTCore em cada inicialização com privilégios do sistema, colocado em
c:\windows\system32
- Você pode especificar todas as ações de personalização aqui neste arquivo cmd, embora seja recomendável manter isso como uma opção de último recurso para personalizações
- No iot-adk-addonkit, esse arquivo é criado para cada produto no diretório do produto. Adicione a ID do recurso CUSTOM_CMD no arquivo xml OEMInput para incluir isso na imagem.
- Confira Pacote Custom.Cmd e oemcustomizations.cmd de exemplo
Customizations.xml
- Este é o arquivo de configurações usado para criar o pacote de provisionamento
- Para processar automaticamente esse pacote de provisionamento no momento da inicialização, esse pacote é colocado em
c:\windows\provisioning\packages
- No iot-adk-addonkit, esse arquivo é criado para cada produto no diretório do produto. Adicione a ID do recurso PROV_AUTO no arquivo xml OEMInput para incluir isso na imagem.
- Confira Pacote Provisioning.Auto e Customizations.xmlde exemplo
- Para obter mais detalhes, consulte:
- Adicionar um pacote de provisionamento
- Provisionamento para CSPs (Provedores de Serviços de Configuração) com suporte no IoT Core