Personalizar um layout de dispositivo
Um layout de dispositivo é o blueprint para a configuração de disco de um dispositivo de sistema operacional de fábrica. Ele descreve como o conteúdo da Microsoft, OEM e SV funciona em conjunto para criar um layout de disco para uma imagem do sistema operacional de fábrica. Os layouts de dispositivo são criados usando um arquivo XML para descrever o hardware físico e, em seguida, usando o Kit de Sistema do Windows para gerar um pacote de layout de dispositivo.
Para exibir uma FFU com DISM, a FFU deve ser configurada com um layout de dispositivo que inclua o DevicePath do hardware de destino e o tamanho do setor.
Tipos de layout de dispositivo
O sistema operacional de fábrica tem dois tipos de layouts de dispositivo:
Layout de dispositivo monolítico
Você pode criar uma imagem do sistema operacional de fábrica usando os layouts de dispositivo incluídos no Kit de Sistema do Windows. Esses layouts são criados e pertencentes à Microsoft e não podem ser modificados.
Dividir layout do dispositivo
No sistema operacional de fábrica, a propriedade do layout do dispositivo pode ser dividida corretamente entre a Microsoft e os OEMs. Neste cenário:
- A Microsoft especifica os elementos de layout de dispositivo necessários, como discos virtuais e partições. Estes são os componentes de layout descritos em Layout de Partição
- Os OEMs criam um arquivo de layout de dispositivo OEM (DeviceLayoutOEM.xml) que descreve as características físicas de seus discos (como o tamanho do setor) e também podem adicionar partições ou discos virtuais adicionais.
Em comparação com layouts de dispositivo monolíticos, os layouts divididos reduzem o tempo de coengenharia, permitindo que OEMs e SVs criem rapidamente layouts para seus dispositivos para que possam testar o desenvolvimento de dispositivos e so.
Como funciona o layout do dispositivo dividido
Um layout de divisão tem duas partes:
Um layout de dispositivo que pertence e é mantido pela Microsoft
Esse layout está incluído no Kit de Sistema do Windows e configura os discos virtuais e partições necessários para o sistema operacional de fábrica.
Um DeviceLayoutOEM.xml criado por OEM
Esse arquivo descreve as características da unidade de um dispositivo e também pode adicionar partições adicionais, se necessário. Esse arquivo é complementar ao layout do dispositivo de propriedade da Microsoft. Os dois layouts funcionam juntos para criar um layout de dispositivo adaptado ao seu dispositivo.
Como ponto de partida, o DeviceLayoutOEM.xml incluído na pasta do
%WSKWorkspaceRoot%\OEMCustomization\DeviceLayout
workspace é preenchido previamente com a ID da Loja padrão e um tamanho de setor de 512. Você pode usar esse arquivo para o layout de disco:- Adicionando um DevicePath.
- Garantir que o tamanho do setor corresponda ao tamanho do setor do disco.
Esses dois arquivos de layout são combinados durante a criação da imagem para criar um layout de dispositivo aplicável ao seu dispositivo.
Consulte Usar um layout de dispositivo personalizado em seu dispositivo para saber como adicionar um arquivo de layout de dispositivo à sua imagem.
Arquivos de layout do dispositivo OEM
O XML a seguir mostra os elementos que compõem um arquivo DeviceLayoutOEM.xml. Cada elemento descreve um aspecto do layout do dispositivo que é configurável por um OEM.
<?xml version="1.0" encoding="utf-8"?>
<OEMDeviceLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/embedded/2004/10/ImageUpdate/v2">
<Stores>
<Store>
<Id></Id>
<StoreType></StoreType>
<DevicePath></DevicePath>
<SizeInBytes></SizeInBytes>
<Partitions>
<Partition>
<Name></Name>
<Type></Type>
<FileSystem></FileSystem>
<Id></Id>
<TotalBytes></TotalBytes>
<ByteAlignment></ByteAlignment>
</Partition>
</Partitions>
</Store>
</Stores>
<SectorSize></SectorSize>
<MergeVersionTag></MergeVersionTag>
<UpdateByOSTag></UpdateByOSTag>
</OEMDeviceLayout>
Referência de OEMDeviceLayout
Elementos filho OEMDeviceLayout
O <elemento OEMDeviceLayout> é o elemento de nível superior para layouts de dispositivo OEM. O único elemento necessário em um layout OEM é SectorSize.
<OEMDeviceLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/embedded/2004/10/ImageUpdate/v2">
<Stores></Stores>
<SectorSize></SectorSize>
<MergeVersionTag></MergeVersionTag>
<UpdateByOSTag></UpdateByOSTag>
</OEMDeviceLayout>
Elemento | Obrigatório | Tipo | Descrição |
---|---|---|---|
Lojas | Opcional | Lojas | Define um grupo de discos físicos. OEMDeviceLayout só pode incluir um único <elemento Stores> . |
SectorSize | Obrigatório | Número inteiro | O tamanho do setor do disco. Se o tamanho do setor não corresponder ao tamanho do setor no disco, o flash falhará. |
MergeVersionTag | Opcional | Inteiro | |
UpdateByOSTag | Opcional, o padrão é false | Booliano |
Armazena elementos filho
O <elemento Stores> descreve um grupo de discos físicos. Os layouts de dispositivo OEM só podem ter um único <elemento Stores> .
<Stores>
<Store>
...
</Store>
</Stores>
Elemento | Descrição |
---|---|
Repositório | <Os elementos filho do repositório> definem um disco físico. |
Armazenar elementos filho
Elementos filho de <Store> definem os atributos de um disco físico.
<Store>
<Id></Id>
<StoreType></StoreType>
<DevicePath></DevicePath>
<SizeInBytes></SizeInBytes>
<Partitions></Partitions>
</Store>
Elemento | Obrigatório | Tipo | Descrição |
---|---|---|---|
ID | Obrigatório | Cadeia de caracteres (GUID) | Use {5a585bae-900b-41b5-b736-a4cecffc34b4} para configurar um disco que tenha as partições necessárias da Microsoft. |
StoreType | Opcional | Cadeia de caracteres | Fornece uma descrição legível do repositório. Não afeta a geração de imagens. |
DevicePath | Necessário para discos físicos | Cadeia de caracteres | Caminho do dispositivo UEFI do identificador de EFI_BLOCK_IO_PROTOCOL que é mapeado para o dispositivo de armazenamento. Curingas (? ) são aceitáveis para substituição de caracteres individuais na cadeia de caracteres. Exemplo: <DevicePath>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,??-??-??-??-??-??-??-??)</DevicePath> . |
SizeInBytes | Obrigatório | Inteiro | -Tamanho do disco físico em bytes. -O Tamanho deve ser um múltiplo de 131072 (tamanho do bloco FFU) |
Partições | Opcional | Partições | Um e apenas um <elemento Partitions> permitido por <Store>. As partições são definidas por elementos filho de <Partições> |
Elementos filho de partições
Elementos filho de <Partições> descrevem partições definidas por OEM para um dispositivo. As partições configuradas em DeviceLayoutOEM.xml são além das partições necessárias definidas pelo layout do dispositivo de propriedade da Microsoft.
<Partitions>
<Partition>
...
</Partition>
</Partitions>
Elemento | Obrigatório | Tipo | Descrição |
---|---|---|---|
Partição | Opcional | Partition | Descreve uma partição em um disco físico |
Elementos filho de partição
Elementos filho para <Partição> descrevem as propriedades de partições em um dispositivo.
<Partition>
<Name></Name>
<Type></Type>
<FileSystem></FileSystem>
<Id></Id>
<TotalBytes></TotalBytes>
<ByteAlignment></ByteAlignment>
</Partition>
Elemento | Obrigatório | Tipo | Descrição |
---|---|---|---|
Nome | Obrigatório | String | Caracteres máximos: 36 para o sistema de arquivos NTFS, 11 para o sistema de arquivos FAT ou FAT32. O nome da partição deve ser exclusivo em todas as partes do layout do dispositivo. |
Tipo | Obrigatório | String | GUID para tipo de partição GPT Especifique o tipo {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7} básico para partições OEM, para que elas possam ser acessadas por meio do \\?\Volume{<partition id>}\ caminho enquanto o dispositivo estiver executando o sistema operacional de fábrica |
FileSystem | Opcional | Cadeia de caracteres | -Os valores permitidos são {NTFS, FAT, FAT32}. -Se não for especificado, o volume será uma partição RAW não formatado |
Id | Opcional | Cadeia de caracteres | GUID para tipo de partição GPT. A ID de partição deve ser desempedida em todas as partes do layout do dispositivo. Se não for especificado, um GUID aleatório será atribuído. |
TotalBytes | Opcional | Inteiro | -Tamanho da partição em bytes. -Partições devem ser dimensionadas de modo que ela possa se ajustar ao "SizeInBytes" especificado em seu "Store" pai, depois que o conteúdo de personalização do SISTEMA Operacional e OEM tiver sido adicionado à imagem. -O valor deve ser divisível por 131072 (Tamanho do Bloco FFU). -O valor máximo é determinado pelo tipo FileSystem especificado. |
ByteAlignment | Opcional | Inteiro | -NÃO use esse campo, a menos que seja recomendado pelo fornecedor de silício. -Substitui o limite de bytes ao qual o início dessa partição deve se alinhar. |
Layout OEM de exemplo
Veja a seguir um layout de dispositivo OEM de exemplo para um disco físico com duas partições e um tamanho de setor 512:
<?xml version="1.0" encoding="utf-8"?>
<OEMDeviceLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/embedded/2004/10/ImageUpdate/v2">
<Stores>
<Store>
<Id>{5a585bae-900b-41b5-b736-a4cecffc34b4}</Id>
<StoreType>Default</StoreType>
<DevicePath>VenHw(8D90D477-39A3-4A38-AB9E-586FF69ED051)</DevicePath>
<SizeInBytes>4294967296</SizeInBytes>
<Partitions>
<Partition>
<Name>OEM1</Name>
<Type>{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}</Type>
<FileSystem>FAT32</FileSystem>
<TotalBytes>134217728</TotalBytes>
</Partition>
<Partition>
<Name>OEM2</Name>
<Type>{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}</Type>
<FileSystem>FAT32</FileSystem>
<TotalBytes>67108864</TotalBytes>
</Partition>
</Partitions>
</Store>
</Stores>
<SectorSize>512</SectorSize>
<MergeVersionTag>1</MergeVersionTag>
</OEMDeviceLayout>
Usar um layout de dispositivo personalizado em seu dispositivo
Depois de criar um arquivo DeviceLayoutOEM.xml, você pode usá-lo para configurar o layout de disco do dispositivo do sistema operacional de fábrica. Os layouts de dispositivo OEM são habilitados por meio da estrutura de configurações do sistema operacional de fábrica.
Crie um arquivo DeviceLayoutOEM.xml que reflita a configuração do disco. Você pode usar o arquivo DeviceLayoutOEM.xml em seu workspace ou usar o exemplo vazio acima como pontos de partida.
Salve o arquivo em seu workspace como
DeviceLayoutOEM.xml
.Siga o processo em Personalizar configurações para gerar e usar um arquivo de personalização de configurações:
- No arquivo de personalização, você verá uma configuração chamada
splitlayoutfile
. Defina o valor dessa configuração como o caminho do arquivo.
<Customization Name="splitlayoutfile"> <ReadOnlyMetadata Description="oem/sv-owned split layout file. (file must be named DeviceLayoutOEM.xml)" Type="FILE" DefaultValue="" SupportedExtensions="xml" /> <Value>C:\Workspace\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml</Value> </Customization>
- No arquivo de personalização, você verá uma configuração chamada
Atualize o
<DeviceLayoutType>
no arquivo OEMInput.xml:<DeviceLayoutType>GPT_SPACES_SPLIT</DeviceLayoutType>
Quando você gerar sua imagem, ela usará o layout que você configurou.