共用方式為


自訂裝置配置

裝置配置是處理站 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 設定架構來啟用。

  1. 撰寫反映磁片設定的DeviceLayoutOEM.xml檔案。 您可以在工作區中使用DeviceLayoutOEM.xml檔案,或使用上述空白範例作為起點。

  2. 將檔案儲存在工作區中作為 DeviceLayoutOEM.xml

  3. 遵循 自訂設定 中的程式來產生和使用設定自訂檔案:

    • 在您的自訂檔案中,您會看到名為 的 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>
    
  4. <DeviceLayoutType>更新OEMInput.xml檔案中的 :

    <DeviceLayoutType>GPT_SPACES_SPLIT</DeviceLayoutType>
    
  5. 當您產生映射時,它會使用您已設定的版面配置。