共用方式為


建立 Factory OS 映射

本實驗室涵蓋如何使用 Windows System Kit (WSK) 來設計和建立 Factory OS 映射。

本文將討論:

  • 從掛接的 WSK ISO 工作
  • 新增驅動程式
  • 新增應用程式
  • 新增測試內容資料夾
  • 自訂裝置配置
  • 自訂設定
  • 產生映射

1.您需要的內容

若要完成此實驗室,您需要:

  • 技術人員電腦
  • Windows 系統套件
  • 如果您要建立 FFU:
  • 如果您要建立 VHDX 映射:
    • 已安裝 Hyper-V 的電腦。 這可以是與技術人員電腦相同的電腦。
  • 包含測試附隨品的資料夾
  • (要包含在映射中的選擇性) 應用程式
  • (選擇性) 驅動程式以包含在映射中

2.掛接 WSK ISO 並啟動 WSK 環境

若要建立 Factory OS 映射,您需要 WSK,其中包含建立映射所需的套件和工具。 您可以將 WSK ISO 的內容複寫到技術人員電腦,或從網路共用或本機掛接 ISO,以使用 WSK。 在此實驗室中,我們將掛接本機儲存的 WSK ISO,並從該處工作。

掛接 WSK

  1. 在技術人員電腦上建立名為 的 C:\WSK 目錄,並將 WSK ISO 從實驗室附隨品 USB 磁片磁碟機複製到其中。
  2. 在 [檔案總管] 中,流覽至 WSK ISO
  3. 以滑鼠右鍵按一下 ISO,然後按一下 [ 掛接]。

開啟 Windows 系統套件環境

開啟 Windows System Kit 環境:

  1. 流覽至指派給掛接 WSK ISO 之磁片磁碟機的根目錄。
  2. 以滑鼠右鍵按一下 SetImagGenEnv.cmd ,並以系統管理員身分執行。

以下是您將會看到的內容:

**********************************************************************
** Windows System Kit image generation environment
** Version xxx.xxxxx.1001
**********************************************************************

3.建立 Factory OS 工作區

工作區是一個工作目錄,可協助組織建立 Factory OS 映射所需的應用程式、驅動程式和其他資產。

PrepWSKWorkspace C:\FactoryWorkSpace -Product FactoryOS

注意

如果您想要建立虛擬機器,請將 -vm 參數新增至上述命令:

PrepWSKWorkspace C:\FactoryWorkSpace -Product FactoryOS -VM

如需所有可用的選項,請參閱 PrepWSKWorkspace 語法。

以下是您將在 WSK 環境中看到的內容:

Overwrite == Prompt. PrepOEMWorkspace will prompt for permission to overwrite an existing workspace.
Prepping C:\FactoryWorkSpace as a WSK workspace for building a FactoryOS AMD64 UEFI Hardware image....
OEMInput file C:\FactoryWorkSpace\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml created.

Success!

根據上述輸出,您現在有一個工作區 C:\FactoryWorkspace ,其中包含名為 FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml的OEMInput.xml檔案。 您將在整個實驗室中修改此OEMInput.xml檔案。 您也可以從 WSK 環境執行 echo %OEMInputFileName% ,以檢視OEMInput.xml的路徑和檔案名。

建立工作區時,WSK 會設定對應至工作區的 %WSKWorkspaceRoot% 環境變數。 如果您關閉並重新開啟 Windows 系統套件環境,則必須將目錄變更為工作區根目錄並執行 SetWSKWorkspaceRoot 來重新設定 WSKWorkspaceRoot

4.關於功能資訊清單

功能資訊清單會 定義您想要包含在映射中的應用程式、驅動程式和套件的檔案位置。 當您新增應用程式和驅動程式時,預設會將它們新增至所有映射,除非您將其標示為選擇性。

下列各節會使用功能資訊清單來定義您在映射中包含的應用程式、驅動程式和設定。

5.新增驅動程式

如果您要為實體裝置建立 FFU 映射,Windows 系統套件會包含腳本,讓您更輕鬆地將 相容的驅動程式 新增至處理站 OS 映射。 這些腳本會根據您新增至工作區的驅動程式,自動建立或更新功能資訊清單檔案:

  • 腳本 CreateWSKDriversFM 會建立驅動程式功能資訊清單,並將資料夾中的所有驅動程式 %WSKWorkspaceRoot%\DCHUDrivers 新增至驅動程式功能資訊清單。

  • 腳本 UpdateWSKDriversFM 會將資料夾中的所有 rivers %WSKWorkspaceRoot%\DCHUDrivers 新增至現有的驅動程式功能資訊清單。 由於工作區包含空的 DriversFM,因此我們將使用 UpdateWSKDriversFM 將驅動程式新增至現有的驅動程式功能資訊清單。 如果您稍後決定新增更多驅動程式,您可以將其他驅動程式新增至 DCHUDrivers 資料夾,然後重新執行此腳本。

  1. 將驅動程式複製到您的工作區:

    xcopy /s E:\Drivers\ %WSKWorkspaceRoot%\DCHUDrivers /chrkyf
    

    其中 E:\Drivers\ 是您擁有處理站 OS 相容驅動程式的位置

  2. 將驅動程式新增至工作區中的驅動程式功能資訊清單。 當您建立工作區時, %WSKWorkspaceRoot\FMFiles\OEMDriversFM.xml 已建立並新增空的驅動程式功能資訊清單,並新增至您的OEMInput.xml。 WSK 包含腳本,可將資料夾中的所有驅動程式 %WSKWorkspaceRoot%\DCHUDrivers 新增至驅動程式功能資訊清單。 將驅動程式新增至 OEMDriversFM 功能資訊清單之後,它們就會包含在您的映射中。

    執行腳本,從工作區中的 DCHU 驅動程式資料夾新增驅動程式:

    UpdateWSKDriversFM
    

    輸出:

    Script will backup then append new Drivers to C:\FactoryWorkspace\FMFiles\OEMDriversFM.xml if it exists.
    Existing Drivers FM found. Backing up existing file to C:\Users\username\AppData\Local\Temp\WSKScriptBackups\OEMDriversFM.xml...
    
    Searching C:\FactoryWorkspace\DCHUDrivers for Drivers to add to C:\FactoryWorkspace\FMFiles\OEMDriversFM.xml...
    Adding C:\FactoryWorkspace\DCHUDrivers\devices.driver.display.inf to FM...
    …
    Adding C:\FactoryWorkspace\DCHUDrivers\audio.driver.inf to FM...
    
    FM file successfully created at C:\FactoryWorkspace\FMFiles\OEMDriversFM.xml.
    All newly found Drivers under C:\FactoryWorkspace\DCHUDrivers are now unconditionally in any image that includes C:\FactoryWorkspace\FMFiles\OEMDriversFM.xml.
    Remember to make apps or drivers you do not want in every image "Optional" (apps) or in a FM Feature (drivers).
    
    The previous version of C:\FactoryWorkspace\FMFiles\OEMDriversFM.xml is backed up at C:\Users\username\AppData\Local\Temp\WSKScriptBackups\OEMDriversFM.xml.
    
  3. 在文字編輯器中開啟您的OEMInput.xml檔案,並確認元素中包含 <AdditionalFMs> OEMDriversFM.xml。 這可確保OEMDriversFM.xml中定義的驅動程式會包含在您的映射中。 如果您不記得呼叫OEMInput.xml檔案,您可以執行 echo %WSKOEMInputFileName% 以查看OEMInput.xml的路徑。

    <AdditionalFMs>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\FOSNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\GenericDeviceFM.xml</AdditionalFM>
    <!-- Add OEM FMs here. -->
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMAppsFM.xml</AdditionalFM>
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMDriversFM.xml</AdditionalFM>
    </AdditionalFMs>
    

6.新增應用程式

Windows 系統套件包含腳本,可讓您更輕鬆地將相容的應用程式新增至處理站 OS 映射。 這些腳本會根據您新增至工作區的應用程式,自動建立或更新功能資訊清單檔案:

  • 腳本 CreateWSKAppsFM 會建立應用程式資訊清單,並將資料夾中的所有應用程式 %WSKWorkspaceRoot%\Apps 新增至應用程式功能資訊清單。

  • 腳本 UpdateWSKAppsFM 會將資料夾中的所有應用程式 %WSKWorkspaceRoot%\Apps 新增至現有的應用程式功能資訊清單。 由於工作區包含空白的 AppsFM,因此我們會使用 UpdateWSKAppsFM 將新的應用程式新增至預設包含在您OEMInput.xml的現有應用程式功能資訊清單中。

如果您有想要新增至映射的應用程式:

  1. 將應用程式複製到您的工作區:

    Xcopy /s E:\UWP %WSKWorkspaceRoot%\Apps /chrkyf
    

    E:\UWP 是您從中複製 UWP 應用程式的位置

  2. 將應用程式從 Apps 資料夾新增至 OEMAppsFM.xml 功能資訊清單。 將應用程式新增至 OEMAppsFM 功能資訊清單之後,它們就會包含在您的映射中:

    UpdateWSKAppsFM
    

    以下是一些範例輸出:

    Script will backup then append new Apps to C:\FactoryWorkSpace\FMFiles\OEMAppsFM.xml if it exists.
    Existing Apps FM found. Backing up existing file to C:\Users\administrator\AppData\Local\Temp\WSKScriptBackups\OEMAppsFM_3.xml...
    
    Searching C:\FactoryWorkSpace\Apps for Apps to add to C:\FactoryWorkSpace\FMFiles\OEMAppsFM.xml...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\arm\Microsoft.NET.Native.Framework.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\arm\Microsoft.NET.Native.Runtime.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\arm\Microsoft.VCLibs.Arm.14.00.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x64\Microsoft.NET.Native.Framework.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x64\Microsoft.NET.Native.Runtime.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x64\Microsoft.VCLibs.x64.14.00.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x86\Microsoft.NET.Native.Framework.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x86\Microsoft.NET.Native.Runtime.1.7.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\Dependencies\x86\Microsoft.VCLibs.x86.14.00.appx to FM...
    Adding C:\FactoryWorkSpace\Apps\HelloWorld_1.0.0.0_x64.appx to FM...
    
    FM file successfully created at C:\FactoryWorkSpace\FMFiles\OEMAppsFM.xml.
    All newly found Apps under C:\FactoryWorkSpace\Apps are now unconditionally in any image that includes C:\FactoryWorkSpace\FMFiles\OEMAppsFM.xml.
    Remember to make apps or drivers you do not want in every image "Optional" (apps) or in a FM Feature (drivers).
    
    The previous version of C:\FactoryWorkSpace\FMFiles\OEMAppsFM.xml is backed up at C:\Users\administrator\AppData\Local\Temp\WSKScriptBackups\OEMAppsFM_3.xml.
    
  3. 開啟您的OEMInput.xml檔案,並確認元素中包含 <AdditionalFMs> OEMAppsFM.xml。 這可確保OEMAppsFM.xml中定義的應用程式會包含在您的映射中。

    您應該會看到:

    <AdditionalFMs>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\FOSNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\WindowsCoreNonProductionFM.xml</AdditionalFM>
    <AdditionalFM>%WSKContentRoot%\FMFiles\%WSKImageArchitecture%\FactoryOS\GenericDeviceFM.xml</AdditionalFM>
    <!-- Add OEM FMs here. -->
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMAppsFM.xml</AdditionalFM>
    <AdditionalFM>%WSKWorkspaceRoot%\FMFiles\OEMDriversFM.xml</AdditionalFM>
    </AdditionalFMs>
    

    注意

    如果您在建立工作區時新增 -VM 了 選項,則會呼叫 FactoryOS_Development_AMD64_UEFI_SpacesGPT_VM.xml 您的OEMInput.xml。

7.新增測試內容資料夾

<TestContent>OEMInput.xml 檔案中的 元素可讓您指定資料夾,其中包含測試內容,例如腳本、可執行檔,以及您將用來在 Factory OS 裝置上執行測試的其他資產。

建置映射時新增測試內容資料夾可確保測試附隨品可在您的 Factory OS 裝置上使用,並減少手動將檔案從技術人員電腦複製到測試裝置所花費的時間量。

  1. 在技術人員電腦上的 Factory OS 工作區中建立 [測試內容] 資料夾:

    md %WSKWorkspaceRoot%\TestContent
    
  2. 將測試附隨品複製到 TestContent 資料夾中。 影像中只能包含一個測試內容資料夾,但該資料夾可以包含子資料夾。 讓所有測試附隨品都位於單一測試內容資料夾中:

    xcopy /s E:\TestContent %WSKWorkspaceRoot$\TestContent /chrkyf
    

    其中 E:\TestContent 是您測試內容的資料夾

  3. 將測試內容資料夾新增至您的OEMInput.xml檔案。 WSK 包含可將此程式自動化的腳本:

    AddTestContent %WSKWorkspaceRoot%\TestContent
    

    以下是您是否已成功將資料夾新增至OEMInput.xml的內容:

    Successfully saved the TestContent path in the OEMInput file.
    
  4. 開啟您的OEMInput.xml檔案,並確認它包含 <TestContent> 元素,而 元素會顯示測試內容資料夾的路徑:

    注意

    您可以從 WSK 環境執行 echo %WSKOEMInputFileName ,以取得測試內容資料夾的完整路徑和檔案名。

    以下是您的 <TestContent> 元素看起來應該像這樣:

    <TestContent>C:\FactoryWorkspace\TestContent</TestContent>
    

8.DeviceLayout 和裝置目標

注意

如果您要建立 VM,您可以略過本節並移至下一節,其中我們將討論如何自訂設定。

自訂 DeviceLayout

裝置配置 是處理站 OS 裝置磁片設定的藍圖。 其描述 Microsoft、OEM 和 SV 內容如何一起運作,以建立處理站 OS 映射的磁片配置。 裝置配置是使用 XML 檔案和 Windows 系統套件來設定,以產生裝置專屬的裝置配置套件。

  1. 在文字編輯器中開啟 %WSKWorkspaceRoot%\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml。 此檔案可讓您設定您所使用的磁片特性。

    • <DevicePath>使用 <ID> {5a585bae-900b-41b5-b736-a4cecffc34b4} 新增 的 <Store> 。 這是作業系統會閃爍的位置。 此 OS 磁片將會由 Microsoft 設定磁碟分割。
      • 範例 HDD <DevicePath> - <DevicePath>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)</DevicePath>
      • 範例 UFS <DevicePath> - <DevicePath>PciRoot(0x0)/Pci(0x12,0x5)/UFS(0x0,0x0)</DevicePath>
    • 針對 HDD,更新裝置路徑中的任何 GUID 以使用萬用字元 (?) ,例如 <DevicePath>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,??-??-??-??-??-??-??-??)</DevicePath>
    • 確認 <SectorSize> 符合您的裝置。

    以下是範例 DeviceLayoutOEM 的外觀:

    <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>PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,??-??-??-??-??-??-??-??)</DevicePath>
            </Store>
        </Stores>
        <SectorSize>512</SectorSize>
        <MergeVersionTag>1</MergeVersionTag>
    </OEMDeviceLayout>
    
  2. 儲存並關閉 DeviceLayoutOEM.xml

  3. 更新 OEMInput,使其使用您所建立的配置檔案:

    1. 在文字編輯器的工作區根目錄中開啟OEMinput.xml檔案。
    2. <DeviceLayoutType> 專案更新為 GPT_SPACES_SPLIT
    <DeviceLayoutType>GPT_SPACES_SPLIT</DeviceLayoutType>
    
    1. 儲存OEMInput.xml檔案。 您可以讓它保持開啟狀態,因為我們將在下一節中對它進行更多變更。

自訂裝置目標

  1. 如果您目前尚未開啟,請在文字編輯器中開啟您的OEMInput.xml檔案。 您可以在 找到它 %WSKWorkspaceRoot%\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml

    注意

    您可以從 WSK 環境執行 echo %WSKOEMInputFileName ,以查看OEMInput.xml檔案的路徑和檔案名。

  2. <DevicePlatformIDs>設定 專案,例如

    <DevicePlatformIDs>
    <DevicePlatformID>Contoso.ContosoLaptop.*.1</DevicePlatformID>
    <DevicePlatformID>*.*.*.*</DevicePlatformID>
    </DevicePlatformIDs>
    
  3. 儲存並關閉您的OEMInput.xml檔案。

9.自訂設定

設計 Factory OS 映射時,您可以使用 設定自訂架構 來確保裝置的設定已正確設定。

設定是在 XML 檔案中設定,用來建立您新增至 OEMInput 檔案的自訂套件。 設定是產品特定的,因此請務必使用適用于您所建置裝置產品的設定自訂檔案。

  1. 建立空白設定自訂 XML:

    CreateWSKCustomizationsXML
    

    輸出:

    Creating output folder: C:\FactoryWorkSpace\OEMCustomization\CustomizationXML
    Created output folder: C:\FactoryWorkSpace\OEMCustomization\CustomizationXML
    …
    wcosimageprep INFO ThreadId1340 Generating WCOS customization file(s)...
    wcosimageprep INFO ThreadId1340 Writing customization files to disk...
    wcosimageprep INFO ThreadId1340 CustomizationXML generation parameters: Advanced=False, Categorize=False
    wcosimageprep INFO ThreadId1340 C:\FactoryWorkSpace\OEMCustomization\CustomizationXML\CustomizationXML.xml
    wcosimageprep INFO ThreadId1340 Time elapsed 00:00:00.4587755
    CustomizationXML file(s) has been generated successfully at C:\FactoryWorkSpace\OEMCustomization\CustomizationXML.
    
  2. 在文字編輯器中開啟設定自訂 XML。

    notepad C:\FactoryWorkSpace\OEMCustomization\CustomizationXML\CustomizationXML.xml
    
  3. 填入 <Identity> 屬性,例如:

    <Identity OwnerName="OEMName" ReleaseType="Test" />
    
  4. 在此實驗室的這個部分中,我們將設定:

    • 如果您要建置 FFU,裝置配置的路徑
    • 在 Factory OS 畫面以及 Factory Orchestrator 內顯示的版本號碼

    在您的 CustomizationXML 中 <Value> ,填入您想要自訂之設定的元素。 下列設定可讓我們設定自訂裝置配置的路徑,以及我的最愛列專案:

    填入 <Value> 您想要自訂之設定的專案。 針對此實驗室:

    自訂名稱
    OEMVersion <Value>1.1.1.1</Value>
    SplitLayoutFile <Value>C:\FactoryWorkspace\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml</Value>

    注意

    如果您要建立 VM 映射,則不需要進行 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:\FactoryWorkspace\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml</Value>
    </Customization>
    

    請參閱 Factory OS 的可用設定 ,以查看適用于 Factory OS 產品的設定。

  5. 儲存並關閉 CustomizationXML.xml

  6. 使用 Windows 系統套件中的腳本來產生 OEM 自訂套件,並將它新增至您的OEMInput.xml檔案。

    CreateWSKCustomizationsFM
    

    輸出:

    wcosimageprep INFO ThreadId21660 Validating arguments for external action.
    wcosimageprep INFO ThreadId21660 Assigning defaults for external action.
    wcosimageprep INFO ThreadId21660 Generating WCOS customization packages from C:\FactoryWorkspace\OEMCustomization\CustomizationXML
    …
    Customization Packages have been generated successfully at C:\FactoryWorkspace\OEMCustomization\Packages
    …
    OEMCustomizationsFM file has been generated successfully at C:\FactoryWorkspace\FMFiles\OEMCustomizationsFM.xml
    
    C:\FactoryWorkspace\FMFiles\OEMCustomizationsFM.xml has been added to the OEMInput file under the AdditionalFms element
    

10.建置映射

執行 BuildWSKImage根據您的OEMInput.xml檔案建立 FFU

BuildWSKImage %WSKWorkspaceRoot%\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml

或者,如果您要建立 VM:

BuildWSKImage %WSKWorkspaceRoot%\FactoryOS_Development_AMD64_UEFI_SpacesGPT_VM.xml

重要

如果您嘗試在目的地資料夾中產生已包含 的影像。FFU 映射或具有相同名稱的虛擬硬碟,映射建立將會失敗,並出現下列錯誤:

imageapp : ERROR : ThreadId18164 OutputFile C:\FactoryOS.Output\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.ffu already exists.

在產生影像之前,請確定您的輸出檔案夾尚未包含相同名稱的已產生影像。

11.快閃您的影像

您的自訂處理站 OS 映射已建置並可供使用。

12. 選擇性 將驅動程式新增至映射

在工程裝置上,您可以將驅動程式新增至現有的 FFU,而不需要使用 Windows 系統套件中包含的ImageApp.exe重建映射。

將驅動程式新增至 FFU:

ImageApp.exe C:\FactoryWorkspace.Output\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.ffu /patch /drivers:E:\OfflineDriver\ /CPUType:amd64

其中 E:\OfflineDriver\ 是包含範例驅動程式的資料夾, (driver-test.inf) 您要新增至映射。

如需詳細資訊和其他用途,請參閱 ImageApp /patch 使用量