Создание образа ОС фабрики
В этом задании рассматривается использование системного комплекта Windows (WSK) для разработки и создания образа ОС фабрики.
Мы рассмотрим следующие вопросы:
- Работа из подключенного WSK ISO
- Добавление драйверов
- Добавление приложений
- Добавление папки тестового содержимого
- Настройка макета устройства
- Настройка параметров
- Создание образа
1. То, что вам нужно
Для выполнения этого задания вам потребуется:
- Компьютер технического специалиста
- Системный комплект Windows
- Если вы создаете FFU:
- Инженерное устройство, для создания образа
- Драйверы для инженерного устройства. Убедитесь, что драйверы совместимы с Windows Core.
- Если вы создаете образ VHDX:
- Компьютер с установленным Hyper-V. Это может быть тот же компьютер, что и компьютер технического специалиста.
- Папка с тестовой подсовкой
- (Необязательно) Приложения для включения в образ
- (Необязательно) Драйверы для включения в образ
2. Подключите WSK ISO и запустите среду WSK.
Чтобы создать образы ОС фабрики, вам потребуется WSK, который содержит пакеты и средства, необходимые для создания образа. Вы можете использовать WSK, скопировав содержимое ISO WSK на компьютер технического специалиста или установив ISO из сетевой папки или локально на компьютере. В этом задании мы подключаем локально хранящийся WSK ISO и будем работать оттуда.
Подключение WSK
- Создайте каталог на компьютере технического специалиста с именем
C:\WSK
и скопируйте в него ISO-файл WSK с USB-накопителя лаборатории. - В проводнике перейдите к ISO WSK.
- Щелкните правой кнопкой мыши ISO и выберите подключить.
Открытие среды Windows System Kit
Откройте среду Windows System Kit:
- Перейдите к корню диска, назначенного подключенному WSK ISO.
- Щелкните правой кнопкой мыши
SetImagGenEnv.cmd
и Запустите от имени администратора.
Вот что вы увидите:
**********************************************************************
** Windows System Kit image generation environment
** Version xxx.xxxxx.1001
**********************************************************************
3. Создание рабочей области ОС фабрики
Рабочая область — это рабочий каталог, который помогает упорядочивать приложения, драйверы и другие ресурсы, необходимые для создания образа ОС фабрики.
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
, которая содержит OEMInput.xml файл с именем FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml
. Вы будете изменять этот файл OEMInput.xml в рамках лаборатории. Вы также можете просмотреть путь и имя файла OEMInput.xml, выполнив команду echo %OEMInputFileName%
из среды WSK.
При создании рабочей области WSK настроит %WSKWorkspaceRoot%
переменную среды, которая сопоставляется с рабочей областью. Если вы закроете и снова откроете среду Windows System Kit, вам придется перенастроить WSKWorkspaceRoot
каталоги на корневой каталог рабочей области и запустить SetWSKWorkspaceRoot
.
4. Сведения о манифестах компонентов
Манифесты функций определяют расположение файлов для приложений, драйверов и пакетов, которые необходимо включить в образы. При добавлении приложений и драйверов они по умолчанию добавляются во все образы, если вы не помечаете их как необязательные.
В следующих разделах используются манифесты функций для определения приложений, драйверов и параметров, которые вы включаете в образ.
5. Добавление драйверов
Если вы создаете образ FFU для физического устройства, набор систем Windows включает скрипты, которые упрощают добавление совместимых драйверов в образы ОС фабрики. Эти скрипты автоматически создают или обновляют файл манифеста компонента на основе драйверов, добавленных в рабочую область:
Скрипт
CreateWSKDriversFM
создает манифест функции драйвера и добавляет все драйверы из%WSKWorkspaceRoot%\DCHUDrivers
папки в манифест функции драйвера.Скрипт
UpdateWSKDriversFM
добавляет все реки из папки в%WSKWorkspaceRoot%\DCHUDrivers
существующий манифест функции драйвера. Так как рабочая область содержит пустое DriverFM, мы будем использовать дляUpdateWSKDriversFM
добавления драйверов в существующий манифест функций драйверов. Если позже вы решите добавить дополнительные драйверы, вы можете добавить дополнительные драйверы в папку DCHUDrivers и повторно запустить этот скрипт.
Скопируйте драйверы в рабочую область:
xcopy /s E:\Drivers\ %WSKWorkspaceRoot%\DCHUDrivers /chrkyf
Где E:\Drivers\ — это место, где у вас есть драйверы, совместимые с заводской ОС
Добавьте драйверы в манифест функции драйвера в рабочей области. Пустой манифест
%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 в текстовом редакторе и убедитесь, что OEMDriversFM.xml включен в
<AdditionalFMs>
элемент . Это гарантирует, что драйверы, определенные в 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 включает скрипты, которые упрощают добавление совместимых приложений в образы ОС фабрики. Эти скрипты автоматически создают или обновляют файл манифеста компонентов на основе приложений, добавленных в рабочую область:
Скрипт
CreateWSKAppsFM
создает манифест приложения и добавляет все приложения из%WSKWorkspaceRoot%\Apps
папки в манифест функции приложения.Скрипт
UpdateWSKAppsFM
добавляет все приложения из папки в%WSKWorkspaceRoot%\Apps
существующий манифест функций приложения. Так как рабочая область содержит пустое ПриложениеFM, мы будем использовать для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 и убедитесь, что OEMAppsFM.xml включен в
<AdditionalFMs>
элемент . Это гарантирует, что приложения, определенные в 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
параметр при создании рабочей области, OEMInput.xml будет называтьсяFactoryOS_Development_AMD64_UEFI_SpacesGPT_VM.xml
.
7. Добавление папки тестового содержимого
Элемент <TestContent>
в файле OEMInput.xml позволяет указать папку, содержащую тестовое содержимое, например скрипты, исполняемые файлы и другие ресурсы, которые будут использоваться для выполнения тестов на устройстве с заводской ОС.
Добавление папки тестового содержимого при создании образа гарантирует доступность тестового обеспечения на устройствах с ос фабрики и сокращает время, затрачиваемое на копирование файлов вручную с компьютера технического специалиста на тестовое устройство.
Создайте папку test content в рабочей области "Фабрика ОС" на компьютере технического специалиста:
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>
элемент . Элемент отображает путь к папке содержимого теста:Примечание
Вы можете получить полный путь и имя файла папки содержимого теста, выполнив команду
echo %WSKOEMInputFileName
из среды WSK.<TestContent>
Элемент должен выглядеть следующим образом:<TestContent>C:\FactoryWorkspace\TestContent</TestContent>
8. DeviceLayout и нацеливание на устройства
Примечание
При создании виртуальной машины можно пропустить этот раздел и перейти к следующему разделу, в котором рассматривается настройка параметров.
Настройка DeviceLayout
Макет устройства — это схема конфигурации диска устройства с заводской ОС. В ней описывается, как содержимое Майкрософт, OEM и SV работает вместе для создания макета диска для фабричного образа ОС. Макеты устройств настраиваются с помощью XML-файла и системного комплекта Windows для создания пакета макета устройства, который подходит для вашего устройства.
Откройте
%WSKWorkspaceRoot%\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml
в текстовом редакторе. Этот файл позволяет настроить характеристики используемого диска.-
<DevicePath>
Добавьте для с<Store>
помощью<ID> {5a585bae-900b-41b5-b736-a4cecffc34b4}
. Это место, где будет мигать ОС. Этот диск ОС будет иметь разделы, настроенные корпорацией Майкрософт.- Пример 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>
-
Сохраните и закройте
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
.Примечание
Вы можете выполнить команду
echo %WSKOEMInputFileName
из среды WSK, чтобы просмотреть путь и имя файла OEMInput.xml.<DevicePlatformIDs>
Настройте элемент , например:<DevicePlatformIDs> <DevicePlatformID>Contoso.ContosoLaptop.*.1</DevicePlatformID> <DevicePlatformID>*.*.*.*</DevicePlatformID> </DevicePlatformIDs>
Сохраните и закройте файл OEMInput.xml.
9. Настройка параметров
При проектировании фабричного образа ОС можно использовать платформу настройки параметров , чтобы убедиться, что параметры устройства настроены правильно.
Параметры настраиваются в 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 Orchestrator
В файле CustomizationXML заполните
<Value>
элементы параметров, которые нужно настроить. Следующие параметры позволяют нам настроить путь к пользовательскому макету устройства, а также элементу избранной панели:<Value>
Заполните элементы для параметров, которые требуется настроить. Для этого задания:Имя настройки Значение OEMVersion <Value>1.1.1.1</Value>
SplitLayoutFile <Value>C:\FactoryWorkspace\OEMCustomization\DeviceLayout\DeviceLayoutOEM.xml</Value>
Примечание
Если вы создаете образ виртуальной машины, настраивать
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>
Сведения о параметрах, доступных для продукта фабричного ос, см. в разделе Доступные параметры для фабричного ос.
Сохраните и закройте
CustomizationXML.xml
.Используйте скрипты в системном комплекте Windows, чтобы создать пакет настройки изготовителя оборудования и добавить его в файл 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
, чтобы создать FFU на основе файла OEMInput.xml.
BuildWSKImage %WSKWorkspaceRoot%\FactoryOS_Development_AMD64_UEFI_SpacesGPT_Hardware.xml
Или, если вы создаете виртуальную машину:
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. Flash изображения
Настроенный образ ос фабрики создан и готов к использованию.
Если вы создали FFU, вы можете включить изображение на устройство с помощью одного из вариантов мигания, доступных в WSK.
Если вы создали VHDX, вы можете использовать Hyper-V для загрузки нового образа.
12. Необязательное добавление драйвера в образ
На инженерных устройствах можно добавить драйвер в существующий FFU без необходимости перестраивать образ с помощью ImageApp.exe, который входит в состав комплекта систем Windows.
Добавьте драйвер в 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 .