自訂裝置配置
裝置配置是處理站 OS 裝置磁片設定的藍圖。 它描述 Microsoft、OEM 和 SV 內容如何一起運作,以建立處理站 OS 映射的磁片配置。 裝置配置是使用 XML 檔案來描述實體硬體,然後使用 Windows 系統套件來產生裝置配置套件來建立。
若要使用 DISM 閃爍 FFU,FFU 必須設定裝置配置,其中包含目標硬體的 DevicePath 和磁區大小。
裝置配置類型
Factory OS 有兩種類型的裝置配置:
整合型裝置配置
您可以使用 Windows 系統套件中包含的裝置配置來建立 Factory OS 映射。 這些版面配置是由 Microsoft 建立和擁有,而且無法修改。
分割裝置配置
在 Factory OS 中,裝置配置擁有權可以在 Microsoft 和 OEM 之間完全分割。 在此情節中:
- Microsoft 會指定必要的裝置配置元素,例如虛擬磁片和磁碟分割。 這些是資料分割配置中所述的版面配置元件
- OEM 建立 OEM 裝置配置 (DeviceLayoutOEM.xml) 檔案,描述其磁片的實體特性 (例如磁區大小) ,也可以新增額外的磁碟分割或虛擬磁片。
相較于整合型裝置配置,分割版面配置可讓 OEM 和 SV 快速為其裝置建立版面配置,以便測試裝置啟動和作業系統開發,以減少共同工程時間。
分割裝置配置的運作方式
分割版面配置有兩個部分:
由 Microsoft 所擁有和維護的裝置配置
此配置包含在 Windows 系統套件中,並設定 Factory OS 所需的虛擬磁片和磁碟分割。
OEM 撰寫的DeviceLayoutOEM.xml
此檔案描述裝置磁片磁碟機的特性,也可以視需要新增其他磁碟分割。 此檔案補充 Microsoft 擁有的裝置配置。 這兩個版面配置會一起運作,以建立專為您裝置量身打造的裝置配置。
作為起點,工作區
%WSKWorkspaceRoot%\OEMCustomization\DeviceLayout
資料夾中所包含的DeviceLayoutOEM.xml會預先填入預設的市集識別碼和 512 磁區大小。 您可以透過下列方式,將此檔案用於磁片配置:- 新增 DevicePath。
- 確保磁區大小符合磁片的磁區大小。
這兩個版面配置檔案會在映射建立期間合併,以建立適用于您裝置的裝置配置。
請參閱 在裝置上使用自訂裝置配置 ,瞭解如何將裝置配置檔案新增至映射。
OEM 裝置配置檔案
下列 XML 顯示組成DeviceLayoutOEM.xml檔案的專案。 每個元素都會描述 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>
OEMDeviceLayout 參考
OEMDeviceLayout 子項目
<OEMDeviceLayout > 元素是 OEM 裝置配置的最上層元素。 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>
元素 | 必要 | 類型 | 描述 |
---|---|---|---|
商店 | 選擇性 | 商店 | 定義實體磁片群組。 OEMDeviceLayout 只能包含單 < 一 Stores > 元素。 |
SectorSize | 必要 | 整數 | 磁片的磁區大小。 如果磁區大小不符合磁片上的磁區大小,閃爍將會失敗。 |
MergeVersionTag | 選用 | 整數 | |
UpdateByOSTag | 選擇性,預設值為 false | Boolean |
儲存子項目
Stores <> 元素描述一組實體磁片。 OEM 裝置配置只能有單 < 一 Stores > 元素。
<Stores>
<Store>
...
</Store>
</Stores>
元素 | 描述 |
---|---|
商店 | <存放區的 > 子項目會定義實體磁片。 |
儲存子項目
Store > 的 < 子項目會定義實體磁片的屬性。
<Store>
<Id></Id>
<StoreType></StoreType>
<DevicePath></DevicePath>
<SizeInBytes></SizeInBytes>
<Partitions></Partitions>
</Store>
元素 | 必要 | 類型 | 描述 |
---|---|---|---|
ID | 必要 | 字串 (GUID) | 用於 {5a585bae-900b-41b5-b736-a4cecffc34b4} 設定具有 Microsoft 必要磁碟分割的磁片。 |
StoreType | 選用 | String | 提供人類看得懂的存放區描述。 不會影響映射處理。 |
DevicePath | 實體磁片的必要專案 | String | 對應至儲存裝置之 EFI_BLOCK_IO_PROTOCOL 控制碼的 UEFI 裝置路徑。 字串中的個別字元取代可接受萬用字元 (? ) 。 範例: <DevicePath>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,??-??-??-??-??-??-??-??)</DevicePath> . |
SizeInBytes | 必要 | 整數 | -以位元組為單位的實體磁片大小。 -Size 必須是131072 (FFU 區塊大小的倍數) |
資料分割 | 選擇性 | 資料分割 | 每個 < Store > 只允許一個 < Partitions > 元素。 資料分割是由 Partitions 的 < 子項目所定義> |
分割子項目
Partitions 的 < 子項目描述 > 裝置的 OEM 定義分割區。 DeviceLayoutOEM.xml中設定的資料分割,除了由 Microsoft 擁有的裝置配置所定義的所需分割區之外。
<Partitions>
<Partition>
...
</Partition>
</Partitions>
元素 | 必要 | 類型 | Description |
---|---|---|---|
資料分割 | 選擇性 | 資料分割 | 描述實體磁片上的磁碟分割 |
分割子項目
Partition > 的 < 子項目描述裝置上的分割區屬性。
<Partition>
<Name></Name>
<Type></Type>
<FileSystem></FileSystem>
<Id></Id>
<TotalBytes></TotalBytes>
<ByteAlignment></ByteAlignment>
</Partition>
元素 | 必要 | 類型 | 描述 |
---|---|---|---|
名稱 | 必要 | String | 最大字元:NTFS 檔案系統為 36,FAT 或 FAT32 檔案系統為 11。 分割區名稱在裝置配置的所有部分都必須是唯一的。 |
類型 | 必要 | String | GPT 磁碟分割類型的 GUID 指定 OEM 磁碟分割的基本類型 {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7} ,以便在裝置執行 Factory OS 時透過 \\?\Volume{<partition id>}\ 路徑存取它們 |
FileSystem | 選用 | String | -允許的值為 {NTFS、FAT、FAT32}。 -如果未指定,磁片區將會是未格式化的 RAW 磁碟分割 |
識別碼 | 選用 | String | GPT 磁碟分割類型的 GUID。 分割區識別碼必須跨裝置配置的所有部分取消啟動。 如果未指定,則會指派隨機 GUID。 |
TotalBytes | 選用 | 整數 | -資料分割大小,以位元組為單位。 -分割區的大小應該要符合其父系 「Store」 中指定的 「SizeInBytes」,在 OS 和 OEM 自訂內容新增至映射之後。 -131072 (FFU 區塊大小) 必須可區分值。 -最大值取決於指定的 FileSystem 類型。 |
ByteAlignment | 選用 | 整數 | -除非晶片廠商建議,否則請勿使用此欄位。 -覆寫這個分割區開頭應該對齊的位元組界限。 |
OEM 版面配置範例
以下是具有兩個磁碟分割和 512 磁區大小的實體磁片的 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>{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>
在您的裝置上使用自訂裝置配置
建立DeviceLayoutOEM.xml檔案之後,您可以使用它來設定處理站 OS 裝置的磁片配置。 OEM 裝置配置是透過 Factory OS 設定架構來啟用。
撰寫反映磁片設定的DeviceLayoutOEM.xml檔案。 您可以在工作區中使用DeviceLayoutOEM.xml檔案,或使用上述空白範例作為起點。
將檔案儲存在工作區中作為
DeviceLayoutOEM.xml
。遵循 自訂設定 中的程式來產生和使用設定自訂檔案:
- 在您的自訂檔案中,您會看到名為 的
splitlayoutfile
設定。 將此設定的值設定為檔案的路徑。
<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>
- 在您的自訂檔案中,您會看到名為 的
<DeviceLayoutType>
更新OEMInput.xml檔案中的 :<DeviceLayoutType>GPT_SPACES_SPLIT</DeviceLayoutType>
當您產生映射時,它會使用您已設定的版面配置。