Будни OEMщика (Часть 1)

Понятие «OEMщик» очень широкое, оно может подразумевать любого сотрудника, работающего в одной из многих сфер производства. В данной статье под OEM подразумеваются продукты компании Microsoft, поставляемые вместе с производимым оборудованием. Т.е., под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств. В первой части статьи мы рассмотрим подготовку образа Windows и тиражирование. А во второй части рассмотрим возможные варианты настройки Windows для устройств фиксированного назначения и особенности тиражирования с этими настройками.

Данный материал поможет новичкам сориентироваться в направлении изучения вопроса тиражирования Windows, а также в статье будут даны ссылки на скрипты и утилиты, которые помогут избавиться от некоторой рутины и избежать ошибок.

Предисловие

«OEMщик» — довольно редкая специальность т.к. она требуется в компаниях, которые производят устройства с Windows: компьютеры, ноутбуки, планшеты, банкоматы, информационные киоски, рекламные панели, серверы.

Редкость и отсутствие названия данной специальности создали проблему обмена опытом, т.к. нет сообществ по обмену опытом, например, как у системных администраторов, это существенно усложняет изучение вопроса.

Кому же нужно осваивать данную специальность, если она настолько редкая? Казалось бы, когда IT-шник придет работать в фирму, которая занимается производством устройств с Windows, там его всему и научат. Но так бывает далеко не всегда, есть компании, которые в основном специализируются на продаже оборудования без установленного ПО. Но вдруг приходит заказчик и говорит, что он хочет купить у вас оборудование, но только с установленной операционной системой. Вот с этого и начинаются вопросы, касающиеся тиражирования системы.

С чего же начать изучение вопроса тиражирования? К кому можно обратиться за советом? Ответ очевиден, нужно обратиться к тому, кто заинтересован в продаже Windows, а именно к компании-дистрибьютору. Компания Кварта Технологии занимается продажей и продвижением Windows. Одно из направлений по продвижению — это упрощение настройки Windows и информирование о ее специальных возможностях. Для информирования и косвенной поддержки у нас есть:

В Кварте можно купить любую редакцию Windows, но основная специализация компании — это продажа Windows 10 IoT Enterprise, ранее известная как Embedded, которая предназначена для устройств фиксированного назначения. Специальные возможности этой системы можно увидеть на этом видео.

А теперь есть еще и эта статья, в которой я расскажу об ошибках начинающих, как их избежать и сделать работу проще. Разумеется, что во многом упростить работу помогут скрипты, которые Вы можете получить абсолютно бесплатно.

Начало начал

Берем дистрибутив Windows 10 IoT Enterprise 1809. Если Вас интересует только тиражирование, можете взять любую другую редакцию Windows 10, кроме Windows Core, процесс подготовки и тиражирования для всех редакций будет одинаковым. Иногда бывают вопросы «Где взять оригинальный дистрибутив?» и «Как записать образ на флэшку?».

Коммерческий оригинальный дистрибутив можно скачать на сайте microsoftoem.com. Для загрузки дистрибутивов рекомендую использовать IE. Относительно недавно Майкрософт поменял оболочку сайта, это некоторым образом приводит в замешательство тех, кто им пользуется крайне редко. Убедитесь, что Вы вошли на сайт, для этого подведите курсор мыши к символу учетной записи в правом верхнем углу, после чего в выпадающем сообщении должны отобразиться учетные данные. Для перехода к загрузке образа перейдите по пунктам выпадающего меню «Orders > Software Downloads > Software Order Center»

В следующем окне необходимо начать вводить название компании в поле «Организация», при частичном совпадении система сама предложит подходящие наименования. После выбора компании выберите номер соглашения, а затем нажмите на кнопку «Поиск»

После поиска система предоставит выбор доступных наборов для загрузки. Просто проставьте флажки в тех наборах, которые хотите скачать, а затем нажмите на символ корзины для перехода к меню загрузки. Некоторые наборы разбиты на две части, для их сборки потребуется утилита «Microsoft Media Tool», которую можно скачать на этой же странице.

Для записи образа на флэшку можно воспользоваться скриптом «MakeBootMedia», который находится в наборе скриптов. Обратите внимание, что для комфортного запуска скриптов «PS1» есть скрипты «BAT».

И еще небольшое замечание, если Вы устанавливаете систему в UEFI режиме, то разрядность устанавливаемой системы должна соответствовать разрядности, которую поддерживает UEFI BIOS устройства, иначе Вы просто не сможете загрузиться даже для установки системы. Проще говоря, если у Вас не получается загрузиться с флэшки для установки Widows 10 x64, попробуйте установить Widows 10 x32.

Нечистая, нечистая, братцы!

В первую очередь, нам понадобится чистая установленная система. К моему удивлению, сложности начинаются уже здесь. При консультации по решению проблем довольно часто выясняется, что под чистой системой подразумевалась система, где уже что-то установлено, например, драйверы или языковой пакет, или система установлена поверх старой системы.

Запомните, у Вас будет чистая система, если установщику указан неразмеченный жесткий диск, и при установке нет подключения к интернету. Для уверенности, что все настройки системы оригинальные, не нужно использовать файл ответов для автоматизации установки. Если Вы не следуете этим простым правилам, то систему нельзя назвать чистой.

Так как мы готовим образ для тиражирования, то сразу после установки можно перевести систему в режим аудита. Для перевода системы в режим аудита нужно нажать «Ctrl + Shift + F3» на шаге выбора региона.

А когда система загрузится в режиме аудита, первое что мы сделаем – запечатаем систему в режиме аудита и создадим образ системы. А вот здесь некоторые начинающие начинают сопротивляться – «Зачем, я же ничего не сделал, не вижу смысла…» и т.д. Сделаю небольшое отступление и расскажу, для чего это нужно.

При настройке системы Вы можете столкнуться с различными проблемами, эти проблемы могут быть настолько специфичными, что решать их придется самостоятельно. Чтобы решить проблему, нужно выяснить причину ее появления. Если у Вас есть образы системы, которые Вы создавали по мере настройки системы, то развертывая предыдущие образы и проверяя наличие ошибки, можно выявить, после чего она появилась. В противном случае придется настраивать систему заново и пошагово проверять наличие ошибки. Нельзя исключать, что проблема в самой системе, для этого и нужен чистый образ. Развертывать систему из образа проще и быстрее, чем ее ставить. Естественно, что процесс создания и развертывания образа должен быть автоматизирован и требовать минимум трудозатрат, ведь Вам придется создавать и развертывать образы довольно часто. Чтобы не быть голословным, скажу, что я понял, после чего появляется проблема, описанная здесь под заголовком «Шаг 7» только после проверки на чистой системе и это не единственный случай.

Вас может заинтересовать:

А теперь немного углубимся в запечатывание системы и снятие образа. Когда система загрузится в режиме аудита, автоматически запустится утилита «Sysprep». Для запечатывания в режиме аудита в разделе «System Cleanup Action» выберите «Enter System Audit Mode». Чтобы система без проблем загрузилась на другом оборудовании, то ее можно отвязать от текущего оборудования, для этого ставим флажок «Generalize». В разделе «Shutdown Options» выбираем «Shutdown» и нажимаем «OK», после чего система выключится. Система запечатана только до тех пор, пока не загружена, не пытайтесь снять образ загруженной системы.

Для снятия образа нам понадобится флэшка с WinPE

Создаем флэшку с WinPE

Используя набор Windows ADK можно собрать WinPE с различным набором компонентов, но можно поступить проще, WinPE есть на установочном диске Windows, можно использовать его, только нужно, чтобы вместо запуска установщика запускался скрипт с помощью которого можно легко снять или развернуть образ системы. Для подготовки флэшки будем использовать скрипт «MakeBootMedia» из набора скриптов.

Для создания флэшки с WinPE с помощью предлагаемого скрипта необходимо использовать Windows 10 с версией не ранее чем 1703.

Подключите образ установочного диска к системе, подключите флэшку к ПК, которую можно очистить, запустите «MakeBootMedia.bat» и выберите пункт подготовки загрузочного носителя WinPE. Думаю, что нет смысла пошагово описывать действия т.к. там все интуитивно понятно, но скажу, что сделает скрипт и для чего.

После очистки выбранного диска скрипт создаст два раздела NTFS и FAT32. Т.к. версии Windows до Windows 10 1703 не видят на флэшке более одного раздела, то раздел NTFS будет первым, а FAT32 вторым. Если вдруг у Вас будет дистрибутив Windows 10 1607 и соответствующее WinPE, то WinPE загрузится со второго раздела FAT32, который будет помечен как загрузочный и сможет работать с разделом NTFS. Раздел NTFS нужен для хранения файлов большого объема, а раздел FAT32 нужен для загрузки в UEFI режиме.

После копирования файлов, необходимых для загрузки, скрипт подключит образ с последним индексом, который находится в файле «boot.wim» и добавит в него файл «Winpeshl.ini», в котором будет прописано что нужно запускать при загрузке WinPE. В файле «Winpeshl.ini» прописан запуск файла «Winpeshl.bat», который будет скопирован туда же, рядом с ini файлом. После этого образ будет отключен с сохранением.

В корень тома NTFS будет скопирован файл меню «Menu.bat» и будет создан файл «Serial.txt» с серийным номером флэшки, которая была подготовлена как загрузочная.

Создаем образ системы

Загрузитесь с подготовленной флэшки. После загрузки запустится файл «Winpeshl.bat», который нужен только для поиска и запуска файла меню «Menu.bat», в котором находится основное меню.

При выборе пункта снятия образа системы скрипт автоматически найдет раздел с системой и свернет ее в WIM образ, который будет на томе NTFS в папке Images. Обратите внимание, что будет снят образ только системного раздела. После снятия образа вытащите флэшку из ПК и перезагрузите его. Для перезагрузки достаточно просто закрыть запущенное окно.

Что такое WIM и с чем его едят

В Windows есть штатная утилита для обслуживания системы – DISM. Одна из ее возможностей — создание образов «WIM». С ее помощью можно создать образ раздела или папки, при создании образа системного раздела DISM по умолчанию исключает ненужные файлы, такие, как файл подкачки и файл гибернации. В одном wim файле может быть множество образов, получить к ним доступ можно по индексу (номеру образа). Множество образов лучше хранить в одном wim файле т.к. у него есть дедупликация одинаковых файлов. Но при повреждении такого файла будут потеряны все образа, которые в нем хранились. В едином wim файле я храню архив образов, которые может быть когда-нибудь понадобятся.

Для упрощения работы с wim образами есть множество графических утилит, например GImageX и Dism++

Локализация

Перед локализацией системы рекомендую добавить команду для автоматического закрытия окна «Sysprep», чтобы оно не мешалось при каждой загрузке. В наборе скриптов запустите скрипт «Sysprep.bat» и выберите пункт для добавления команды автоматического закрытия окна «Sysprep» при входе в систему.

Способов локализации довольно много, но нас интересуют способы локализации без подключения к интернету, а это значит, что нам нужен языковой пакет, который находится в наборе языковых пакетов. Локализация требуется очень часто, поэтому в наборе скриптов есть скрипт для полной автоматической локализации «RU-ru» и соответствующий языковой пакет для последней версии LTSC. Если в наборе скриптов нет языкового пакета для вашей системы, то просто подключите образ с языковыми пакетами для вашей системы и скрипт сам найдет языковой пакет.

Запустите скрипт «Localization.bat», выберите пункт полной локализации системы и дождитесь завершения локализации, во время локализации система перезагрузится несколько раз, просто не мешайте ей. Если у Вас есть необходимость сделать дистрибутив для установки локализованной системы, то инструкцию по его созданию можно найти здесь.

После локализации запечатайте систему в режиме аудита и снимите образ системы как в прошлый раз. Для запечатывания можно запустить утилиту sysprep или можно запечатать систему с помощью скрипта. Запустите «Sysprep.bat», выберите пункт запечатывания в режиме аудита, а затем пункт запечатывания без файла ответов.

Пробуем развернуть систему

Мы запечатывали систему с отвязкой от оборудования, а это значит, что теперь ее можно развернуть на почти любом устройстве. Разумеется, что устройство должно соответствовать минимальным системным требованиям, и контроллер системного диска не требует специальных драйверов.

Маленькая хитрость. Если во время установки системы установщик сообщает, что система не сможет работать на данном оборудовании и прекращает установку, не верьте ему, просто разверните образ системы с помощью DISM'а, не исключено, что она будет работать.

Загрузитесь с ранее подготовленной флэшки c WinPE. Обратите внимание, что для развертывания системы в меню скрипта есть несколько пунктов. В любом случае Вам подойдет вариант с автоматическим определением режима загрузки, это значит, что система будет развернута в том режиме загрузки, в котором она загрузилась с флэшки. С помощью других пунктов развертывания можно развернуть систему для загрузки в режиме UEFI или Legacy. Но учтите, что система не загрузится если ее развернуть в режиме загрузки, который не поддерживает BIOS.

После выбора пункта развертывания, скрипт предложит выбрать один из wim файлов, который находится в папке Images. А если в выбранном файле будет более одного образа, то он предложит выбрать образ. Образ будет развернут на первый найденный диск, который не соответствует серийному номеру в файле «Serial.txt». Это нужно, чтобы не удалить данные с загрузочной флэшки, ведь в WinPE у флэшки может быть номер диска 0 или 1. После развертывания образа скрипт инициализирует загрузочный раздел и скопирует на него файлы WindowsRE.

Развертывание по сети

Способов тиражирования системы довольно много, нет одного универсального способа для всех. Нужно выбирать способ, который лучше всего подходит для специфики производства, специфики производимых изделий и требуемого количества изделий.

Для развертывания по сети можно использовать WDS, но можно обойтись и без него. Вполне может быть, что на начальных этапах его использовать не целесообразно. На уже имеющемся ПК достаточно сделать отдельную папку и предоставить к ней доступ по сети на чтение и запись. А в WinPE просто подключить ее как сетевой диск, после этого можно будет из этой папки развертывать образа и создавать образа прямо в нее. А самое хорошее то, что для такого решения скрипт на флэшке уже подготовлен, Вам останется только создать текстовый файл с указанием данных подключения к папке.

На подготовленной флэшке, рядом с файлом «Menu.bat» создайте файл «NetConfig.txt» и вставьте в него следующие строки:

Сразу после знака равенства без пробелов укажите для «LanPath» полный путь к сетевой папке, для «User» имя пользователя, для «Password» пароль для подключения к папке. Для «MenuFilePath» укажите путь к запускаемому файлу меню относительно сетевой папки. Пример:

В качестве файла меню можно использовать скрипт «LanMenu.bat» из папки «Menu», которая находится рядом со скриптом подготовки загрузочной флэшки «MakeBootMedia.bat». В скрипте «LanMenu.bat» добавлен пункт перезапуска скрипта. Это нужно на тот случай, если после запуска скрипта «LanMenu.bat» в WinPE Вы его измените и сразу захотите посмотреть на результат без перезагрузки.

После того, как Вы создали папку, дали к ней доступ, создали файл с данными для доступа к этой папке и разместили в ней файл меню, у Вас начнет работать пункт в скрипте «Меню сети». При выборе этого пункта текущий скрипт запустит скрипт «LanMenu.bat» и завершит работу. После этого все действия по созданию и развертыванию образов будут производиться непосредственно в сетевой папке.

А если Вы хотите, чтобы при загрузке с флэшки система автоматически запускала «LanMenu.bat», то это тоже сделать очень легко. На флэшке, рядом с файлом «Menu.bat» создайте файл «AutoRun.txt». Все команды, прописанные в этом файле, будут выполнены сразу после загрузки в контексте файла «Menu.bat». Т.е. для автоматического выполнения пункта «Меню сети» нужно добавить в файл одну строчку

При необходимости временно отключить выполнение команд при загрузке WinPE можно просто изменить имя файла «AutoRun.txt».

Драйверы

Драйверы должны попадать в систему в числе последних, когда уже точно будет известно, на каком оборудовании будет использоваться система. Если у Вас несколько устройств, которые требуют разных драйверов, но на них должна быть система с одинаковыми настройками, то самый простой способ, это на каждом устройстве отдельно установить необходимые драйверы и экспортировать их. А затем импортировать все драйверы в настроенную систему, так можно сделать образ для нескольких устройств. Естественно, так можно сделать только в том случае, если драйверы не конфликтуют друг с другом. В наборе скриптов есть скрипт «Drivers.bat» для экспорта и импорта драйверов.

Если драйверы конфликтуют друг с другом или по каким-то причинам Вы не хотите добавлять все драйверы в одну систему, то можно создать отдельные наборы драйверов для импорта и импортировать их после развертывания образа на целевом устройстве. Или создать разные образа для разных систем.

Если Вам нужно тиражировать систему с одинаковыми настройками на множество различных конфигураций, то целесообразно создать единую базу драйверов для тех комплектующих, из которых планируется сборка изделий. А из этой базы будут устанавливаться только те драйверы, которые необходимы для конкретного изделия. Какой драйвер подходит для конкретного устройства, можно узнать по идентификатору устройства «Device ID». Все сведения о драйвере находятся в файле с расширением «inf», в том числе там находится перечень идентификаторов устройств, для которых предназначен драйвер.

При создании утилит для определения возможности использования драйвера с устройством учтите некоторые моменты. Для сопоставления идентификаторов оборудования и идентификаторов в inf файле можно использовать самый короткий идентификатор inf файла, который совпадает с началом длинных идентификаторов. При сопоставлении идентификаторов можно отбрасывать окончания: «&SUBSYS», «&REV», «&CC» вместе со всеми символами после этих окончаний. Пример такого обрезания идентификаторов можно увидеть в скрипте «DriverRestrictions», в функции «Add-Devices».

Файл ответов Sysprep’а

Параметры запечатывания, которые предлагает утилита sysprep в графическом интерфейсе, далеко не единственные. Множество параметров можно указать в файле ответов для запечатывания. Например, можно настроить полностью автоматическую загрузку системы после запечатывания в режиме OOBE. Режим OOBE – это режим приветствия, после запечатывания в этом режиме система будет готова к использованию.

Какие параметры можно настроить в файле ответов, можно посмотреть здесь. Наиболее часто используемые параметры находятся в разделе «Microsoft-Windows-Shell-Setup». Для добавления новых разделов или создания больших файлов ответов можно использовать WSIM — Windows System Image Manager, он находится в наборе Windows ADK. Для правки небольших файлов ответов удобней использовать текстовый редактор. В наборе скриптов, в папке «Unattend», есть примеры файлов ответов.

При запечатывании системы в режиме OOBE на конечном устройстве, когда есть уверенность, что комплектующие устройства останутся прежними, можно запечатать систему без отвязывания системы от оборудования. Для этого нужно в файле ответов указать параметр «PersistAllDeviceInstalls».

Помимо использования стандартных параметров после запечатывания, можно выполнять произвольные команды. Команды можно выполнять в синхронном режиме — «RunSynchronous», в этом режиме каждая последующая команда начинает выполняться только после завершения предыдущей. И можно выполнять в асинхронном режиме – «RunAsynchronous», в этом режиме все команды выполняются независимо друг от друга.

Для чего нужен скрипт для запечатывания

Скрипт упрощает указание файла ответов для запечатывания, не нужно использовать командную строку. По умолчанию скрипт предлагает выбрать файл ответов в консольном меню, если это не удобно, то можно изменить выбор на графический, для этого нужно в вызове функции выбора файла «Open-File» добавить параметр D «-D».

В каждом разделе файла ответов есть параметр «processorArchitecture», разрядность, указанная в значении этого параметра должна соответствовать разрядности системы, в которой он используется, иначе весь раздел будет проигнорирован. Данное обстоятельство вынуждает создавать одинаковые файлы ответов для систем X32 и X64. При запечатывании системы с файлом ответов скрипт меняет в выбранном файле значения всех параметров «processorArchitecture» в соответствии с разрядностью запечатываемой системы, таким образом скрипт избавляет от необходимости создавать файлы ответов с одинаковыми настройками для систем разных разрядностей.

Плюс к этому, если Вы добавляли команду для автоматического закрытия окна Sysprep’а, то при запечатывании в режиме OOBE она будет удалена.

В примерах файлов ответов настроен автоматический вход пользователя «Admin». Использование настройки автоматического входа в систему с учетной записью, которой нет в системе приводит к тому, что система пытается войти в учетную запись, которой нет. При запечатывании с файлом ответов скрипт проверяет, есть ли в настройках файла ответа автоматический вход, если да, то есть ли в системе пользователь с таким именем.

При некоторых настройках системы загрузка в режиме OOBE будет невозможна, скрипт проверяет параметры таких настроек, а при необходимости отключит их и добавит команду на их включение после первой загрузки системы. Это настройки режима киоска и блокировки запуска приложений, о которых мы поговорим в следующей части.

По причине простой невнимательности могут быть допущены простые ошибки, которые могут потребовать сложных решений для их исправления. При угрозе возникновения таких ошибок, связанных с запечатыванием, скрипт выводит уведомления. Встречающиеся ошибки:

  • Итоговый образ системы подготовлен на пробной версии
  • Забыли ввести ключ множественной активации ePKEA
  • Ключ ePKEA введен и находится в открытом виде

Исхитрись-ка мне добыть то, чаво не может быть

Майкрософт не разглашает различные подробности, связанные с активацией системы, что приводит к плохой информированности и порождает излишние опасения или стремления реализовать то, что не предусмотрено системой. Ниже ответы на вопросы, которые появляются с завидной периодичностью.

Как создать активированный образ системы?

Активированный образ создать нельзя. Можно только подготовить образ к активации введя ключ многократной активации ePKEA.

Как зашить ePKEA в BIOS?

Официально такой способ использования ePKEA не поддерживается. Майкрософт наоборот сделал так, чтобы этого не делать. Ключ активации можно добавить в систему и скрыть его.

Как сохранить ключ и предотвратить нецелевые активации с ключом?

Если Вы боитесь утечки непосредственно самого ключа, то можно предотвратить его утечку. Ключ ePKEA выдается на компанию, его получает один сотрудник. Сотрудник получивший ключ продукта может лично ввести его в чистую систему стандартным способом и сразу скрыть ключ продукта. Когда ключ будет скрыт его нельзя будет посмотреть, но система сможет активироваться. После этого можно запечатать систему в режиме аудита и сохранить образ системы. Данный образ можно использовать для дальнейших разработок.

Но таким способом можно предотвратить только утечку ключа. А предотвратить нецелевые активации с этим ключом не получится т.к. получившийся образ можно будет развернуть на любом оборудовании и активировать систему.

Послесловие

С одной стороны, здесь описан необходимый минимум для начала освоения вопроса тиражирования. А с другой стороны для многих ситуаций этого минимума будет достаточно, разумеется при использовании предоставленных скриптов.

Но если говорить не о Windows 10 в целом, а о Windows 10 IoT Enterprise, то тиражирование это только часть, которую нужно освоить. А вторая часть – это ее настройка. Во второй части статьи мы рассмотрим специальные возможности Windows 10 IoT Enterprise показанные в этом видео.

Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru.
Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале.

Автор статьи — Борисенков Владимир, технический эксперт компании Кварта Технологии. Статья опубликована в блоге компании на Хабр.

Последние статьи: