建立 Factory OS 映射
本實驗室涵蓋如何使用 Windows System Kit (WSK) 來設計和建立 Factory OS 映射。
本文將討論:
- 從掛接的 WSK ISO 工作
- 新增驅動程式
- 新增應用程式
- 新增測試內容資料夾
- 自訂裝置配置
- 自訂設定
- 產生映射
1.您需要的內容
若要完成此實驗室,您需要:
- 技術人員電腦
- Windows 系統套件
- 如果您要建立 FFU:
- 您要為其建置映射的工程裝置
- 工程裝置的驅動程式。 請確定您的驅動程式符合 Windows 核心規範。
- 如果您要建立 VHDX 映射:
- 已安裝 Hyper-V 的電腦。 這可以是與技術人員電腦相同的電腦。
- 包含測試附隨品的資料夾
- (要包含在映射中的選擇性) 應用程式
- (選擇性) 驅動程式以包含在映射中
2.掛接 WSK ISO 並啟動 WSK 環境
若要建立 Factory OS 映射,您需要 WSK,其中包含建立映射所需的套件和工具。 您可以將 WSK ISO 的內容複寫到技術人員電腦,或從網路共用或本機掛接 ISO,以使用 WSK。 在此實驗室中,我們將掛接本機儲存的 WSK ISO,並從該處工作。
掛接 WSK
- 在技術人員電腦上建立名為 的
C:\WSK
目錄,並將 WSK ISO 從實驗室附隨品 USB 磁片磁碟機複製到其中。 - 在 [檔案總管] 中,流覽至 WSK ISO
- 以滑鼠右鍵按一下 ISO,然後按一下 [ 掛接]。
開啟 Windows 系統套件環境
開啟 Windows System Kit 環境:
- 流覽至指派給掛接 WSK ISO 之磁片磁碟機的根目錄。
- 以滑鼠右鍵按一下
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 資料夾,然後重新執行此腳本。
將驅動程式複製到您的工作區:
xcopy /s E:\Drivers\ %WSKWorkspaceRoot%\DCHUDrivers /chrkyf
其中 E:\Drivers\ 是您擁有處理站 OS 相容驅動程式的位置
將驅動程式新增至工作區中的驅動程式功能資訊清單。 當您建立工作區時,
%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.
在文字編輯器中開啟您的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的現有應用程式功能資訊清單中。
如果您有想要新增至映射的應用程式:
將應用程式複製到您的工作區:
Xcopy /s E:\UWP %WSKWorkspaceRoot%\Apps /chrkyf
E:\UWP 是您從中複製 UWP 應用程式的位置
將應用程式從
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.
開啟您的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 裝置上使用,並減少手動將檔案從技術人員電腦複製到測試裝置所花費的時間量。
在技術人員電腦上的 Factory OS 工作區中建立 [測試內容] 資料夾:
md %WSKWorkspaceRoot%\TestContent
將測試附隨品複製到 TestContent 資料夾中。 影像中只能包含一個測試內容資料夾,但該資料夾可以包含子資料夾。 讓所有測試附隨品都位於單一測試內容資料夾中:
xcopy /s E:\TestContent %WSKWorkspaceRoot$\TestContent /chrkyf
其中 E:\TestContent 是您測試內容的資料夾
將測試內容資料夾新增至您的OEMInput.xml檔案。 WSK 包含可將此程式自動化的腳本:
AddTestContent %WSKWorkspaceRoot%\TestContent
以下是您是否已成功將資料夾新增至OEMInput.xml的內容:
Successfully saved the TestContent path in the OEMInput file.
開啟您的OEMInput.xml檔案,並確認它包含
<TestContent>
元素,而 元素會顯示測試內容資料夾的路徑:注意
您可以從 WSK 環境執行
echo %WSKOEMInputFileName
,以取得測試內容資料夾的完整路徑和檔案名。以下是您的
<TestContent>
元素看起來應該像這樣:<TestContent>C:\FactoryWorkspace\TestContent</TestContent>
8.DeviceLayout 和裝置目標
注意
如果您要建立 VM,您可以略過本節並移至下一節,其中我們將討論如何自訂設定。
自訂 DeviceLayout
裝置配置 是處理站 OS 裝置磁片設定的藍圖。 其描述 Microsoft、OEM 和 SV 內容如何一起運作,以建立處理站 OS 映射的磁片配置。 裝置配置是使用 XML 檔案和 Windows 系統套件來設定,以產生裝置專屬的裝置配置套件。
在文字編輯器中開啟
%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
- 針對 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>
-
儲存並關閉
DeviceLayoutOEM.xml
。更新 OEMInput,使其使用您所建立的配置檔案:
- 在文字編輯器的工作區根目錄中開啟OEMinput.xml檔案。
- 將
<DeviceLayoutType>
專案更新為 GPT_SPACES_SPLIT
<DeviceLayoutType>GPT_SPACES_SPLIT</DeviceLayoutType>
- 儲存OEMInput.xml檔案。 您可以讓它保持開啟狀態,因為我們將在下一節中對它進行更多變更。
自訂裝置目標
如果您目前尚未開啟,請在文字編輯器中開啟您的OEMInput.xml檔案。 您可以在 找到它
%WSKWorkspaceRoot%\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml
。注意
您可以從 WSK 環境執行
echo %WSKOEMInputFileName
,以查看OEMInput.xml檔案的路徑和檔案名。<DevicePlatformIDs>
設定 專案,例如:<DevicePlatformIDs> <DevicePlatformID>Contoso.ContosoLaptop.*.1</DevicePlatformID> <DevicePlatformID>*.*.*.*</DevicePlatformID> </DevicePlatformIDs>
儲存並關閉您的OEMInput.xml檔案。
9.自訂設定
設計 Factory OS 映射時,您可以使用 設定自訂架構 來確保裝置的設定已正確設定。
設定是在 XML 檔案中設定,用來建立您新增至 OEMInput 檔案的自訂套件。 設定是產品特定的,因此請務必使用適用于您所建置裝置產品的設定自訂檔案。
建立空白設定自訂 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.
在文字編輯器中開啟設定自訂 XML。
notepad C:\FactoryWorkSpace\OEMCustomization\CustomizationXML\CustomizationXML.xml
填入
<Identity>
屬性,例如:<Identity OwnerName="OEMName" ReleaseType="Test" />
在此實驗室的這個部分中,我們將設定:
- 如果您要建置 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 產品的設定。
儲存並關閉
CustomizationXML.xml
。使用 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 映射已建置並可供使用。
如果您建立了 FFU,您可以使用 WSK 提供的其中一個快閃選項,將 映射快閃到您的裝置 上。
如果您已建立 VHDX,您可以使用 Hyper-V 來開機新的映射。
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 使用量 。