Windows 10 IoT: Эволюция средств разработки

ВВЕДЕНИЕ

В последние годы фокус интересов компании Microsoft сместился в сторону облачных технологий, интернета вещей (IoT) и связанных с ними сервисов. При этом, многие устройства, взаимодействующие с облачными сервисами, имеют у себя на борту операционные системы (ОС). Windows 10, выпущенная в 2015 году, претендует на роль универсальной системы практически для любых типов устройств.

Вместе с новой системой появились новые концепции модели приложений, обслуживания и доставки обновлений, а также средства разработки, не имеющие аналогов в предыдущих версиях ОС. Чтобы понять, что привело к радикальным изменениям в Windows 10 (IoT), и какие преимущества она принесет разработчикам встраиваемых устройств, интересно проследить развитие средств разработки образов ОС компании Microsoft.

СЕМЕЙСТВО ОПЕРАЦИОННЫХ СИСТЕМ WINDOWS EMBEDDED/IOT

Для применения во страиваемых (т.е. функционально законченных) системах компания Microsoft предлагает отдельное семейство операционных систем Windows Embedded со специальными условиями лицензирования и дополнительными компонентами, предназначенными для упрощения процесса создания встраиваемых решений "из коробки" [1]. Семейство Windows Embedded полностью поддерживает программное обеспечение (ПО), разработанное для версий Windows для компьютеров общего назначения (сказанное не относится к Windows CE/Compact). Работа компонентов ОС, предназначенных для обеспечения бесперебойной работы встраиваемых решений, прозрачна и незаметна для прикладного программного обеспечения (ПО).

Семейство ОС Windows Embedded можно условно разделить на несколько групп, наиболее интересными для рассмотрения из которых являются две из них:

  • Windows Embedded Standard - компонентные ОС с возможностями встраивания, такими, как фильтры записи, клавиатуры, USB и т.п. Совместимы с приложениями и драйверами устройств классических ОС Windows. Требуют разработки образа ОС, заключающейся в выборе нужной комбинации компонентов, позволяя таким образом исключить лишние в данном проекте, уменьшая занимаемый объем на диске и увеличивая стабильность системы. Необходимо специальное средство разработки;
  • Windows Embedded POSReady/Industry/IoT - предсобранные версии из группы Standard, содержащие максимальный набор компонентов и не требующие специального средства разработки. Содержат специальные возможности встраивания. В работе с этими ОС используются привычные средства разработки от систем Windows для компьютеров общего назначения.

Windows 10 IoT можно отнести к последней группе. Вместе с тем, имея и черты классических систем Windows и включая в себя специальные возможности встраивания, данная ОС не требует отдельного конфигурирования, а процесс разработки может сводиться к простейшей установке системы с загрузочного диска. Однако средства разработки (скорее точной кастомизации) для Windows 10 IoT все же существуют и призваны упростить получение готового образа системы, сразу же сконфигурированной конкретные требования проекта.

Существует три разновидности Windows 10 IoT, имеющие некоторые различия, но основанные, тем не менее, на едином ядре [2]. Акцент в данной статье сделан на систему Windows 10 IoT Enterprise (в ряде источников также называться Windows 10 Enterprise LTSB, что связано со специальным способом доставки обновлений на нее [3]).

МОДЕЛИ НАСТРОЙКИ ОБРАЗОВ (ДО WINDOWS 10)

Под моделью настройки образов ОС (Customization Framework) понимается определенный процесс внесения в образ ОС настроек, связанных с внешним видом системы, способами подключения к сети, взаимодействием с пользователем, элементами брендирования, адаптацией под целевой рынок, на который поставляется устройство. Сюда может относиться также добавление приложений, модификация значков и меню, звуков, сетевых и других настроек системы [4].

До появления Windows 10 для различных ОС Windows Embedded использовались различные модели настройки образов:

  • В Windows Embedded CE/Compact - ряд файлов в разных форматах, данные которых содержат конфигурацию образа ОС [5], средство разработки – Microsoft Visual Studio с дополнениями;
  • Для мобильных систем, начиная с Windows Phone 8.1 - Managed Centralized Settings Framework (MCSF) [6], средство разработки поставляется вместе с ОС;
  • Для всех остальных систем - Unattend Framework [7]. Суть данной модели заключается в применении так называемых файлах ответов (Answer files), содержащих описание конфигурации конкретного образа ОС в формате XML. Файлы ответов позволяют автоматизировать установку, обслуживание, тиражирование, в том числе с использованием сетевых служб. Средства разработки файла ответов - Image Configuration Editor (для ОС семейства Standard) или System Image Manager (SIM, для всех остальных ОС).

К моменту выхода Windows 10 возникла большая фрагментированность моделей настройки и средств разработки, что привело к тому, что разработчику, осваивавшему новую для себя версию Windows, зачастую необходимо было изучать новые технологические приемы. Назрела необходимость качественного изменения - перехода к универсальной модели и средству разработки, единому для всех ОС Microsoft, что и было выполнено к выходу Windows 10.

МОДЕЛЬ НАСТРОЙКИ ОБРАЗОВ WINDOWS 10

Отметим, в Windows 10 универсальны не только модель настройки и средства разработки, но и сама система и приложения Windows Store [8].

Рис. 1 - Средство разработки Imaging and Configuration Designer

Универсальная модель настройки образов в Windows 10 носит название Provisioning Framework [9]. Соответствующий инструмент разработки Windows Imaging and Configuration Designer (ICD) (рис. 1) из состава комплекта ADK [10] объединяет работу с компонентами, обслуживание и подготовку к развертыванию образов как с использованием графического интерфейса, так и командной строки. Поддерживаются все редакции Windows 10.

Структурная схема Provisioning Framework приведена на рис. 2.

Образ любой редакции Windows 10 содержит метаданные (Settings Manifest) с описанием компонентов и их возможных настроек. В процессе разработки образа при помощи ICD все возможные настройки, полученные из этих метаданных, доступны в хранилище настроек (Settings Store).

Из схемы нетрудно увидеть, что в Windows 10 по-прежнему доступны параметры компонентов из предыдущих моделей разработки. Более того, в состав ADK по-прежнему входит инструмент Windows SIM от ранних версий Windows для создания файлов ответов в рамках модели Unattend Framework, что позволяет как использовать знакомые средства разработки, так и постепенно осуществлять переход на новые.

Выполненные в ICD настройки образа сохраняются в новом формате файла ответов, который называется Windows Provisioning Answer File (WPAF). Файл WPAF далее преобразуется в пакет Provisioning Package, который содержит одновременно как сами настройки, так и дополнительные компоненты (Deployment Assets), к которым относятся драйверы, приложения, обновления, языковые пакеты и т.п. Уникальной особенностью такого пакета является то, что он может быть применен как при исходном развертывании образа (на схеме - Imaging Tool), так и уже на работающем образе (с помощью Provisioning Engine).

Совмещение настроек и дополнительных компонентов в одном пакете (Provisioning Package) решает одну из проблем Unattend Framework, когда дополнительные компоненты и файл ответов, содержащий путь к ним, были разделены, что создавало потенциальные сложности, когда файл по указанному пути в момент применения файла ответов был недоступен, например, из-за ошибок и неточностей в проектировании. Среди способов решения данной проблемы можно назвать применение наборов конфигураций и папок OEM (Configuration Sets, OEM Folders) [11] или пользовательских модулей в Windows Embedded Standard 8 [12], что не всегда было удобно.

Из сказанного видно, что разработка образа Windows 10 состоит фактически в модификации одного из базовых образов.

Как и любой новый и универсальный инструмент, ICD не во всех ситуациях оказывается наиболее подходящим средством для решения задачи. Так, разработчики [13] замечают некоторые сложности при использовании ICD.

Действительно, ICD никак не может помочь в «запечатывании» образа с файлом ответов, т.к. утилита sysprep, используемая для запечатывания, ожидает файл ответов модели Unattend Framework, а ICD может сохранить настройки только в WPAF. На наш взгляд, это связано с тем, что в новой модели предлагается внесение максимума настроек непосредственно в файл ответов, а не выполнение их на работающем образе с последующим его тиражированием. Таким образом, каждый раз получается уже настроенная система с "чистой" установки, и использование sysprep не требуется.

Некоторую путаницу создает то, что при помощи утилиты обслуживания образов DISM к образу нельзя напрямую применить файл ответов WPAF, но можно сделать это, если WPAF находится в составе Provisioning Package, что, тем не менее, вполне согласуется с идеологией модели Provisioning Framework (см. схему выше).

Сложности, возникающие при использовании ICD, могут быть связаны с тем, что он был спроектирован как универсальный инструмент, скрывающий свою мощь за внешней простотой, и, как любой подобный инструмент, он требует некоторого времени на устранение шероховатостей. Интерфейс ICD гораздо проще по сравнению с SIM или ICE и не требует глубокой подготовки для работы с ним, а все настройки снабжены мгновенно появляющимися подсказками. ICD, в отличие от SIM или ICE, не требует знания особенностей фаз установки Windows, что позволяет разработчику сосредоточиться на разработке образа, а не изучении особенностей работы программы установки. Не можем не отметить, что Microsoft рекомендует постепенный переход на новые средства разработки.

Помимо перечисленного, ICD удобен тем, что в нем существует возможность быстрого и удобного создания загрузочных носителей для чистой установки (Clean Install), производственного процесса (Production), восстановления (Recovery) (рис. 3). Поддерживается включение технологии сжатия образов Compact OS прямо при развертывании. Эта технология избавлена от недостатков предшествующей – WIMBoot [14]. Поддерживается и новый формат хранения образов Full Flash Update (FFU), в отличие от своего предшественника Windows Image (WIM), применявшегося для тиражирования Windows, является секторным, а не файловым, а значит, позволяет вместе с файлами образа сохранить разметку разделов целевого устройства. Сравнение форматов можно найти по ссылке [15].

Рис. 3 - Типы установочных носителей, доступные в Imaging and Configuration Designer.

В завершение отметим, что некоторые из ставших классическими компонентов встраивания (например, отдельный фильтр клавиатуры) отсутствуют в текущей сборке Windows 10 Enterprise LTSB 2015, что связано с ориентацией системы на современную технологию блокировки системы Assigned Access, при использовании которой оболочкой выступает приложение Магазина Windows. Эта технология уже включает в себя фильтр клавиатуры, жестов и запуск приложения Магазина Windows как оболочки, однако в указанной системе доступны все возможности настольной Windows 10 Enterprise, такие, как, например, BitLocker. Исключением является Магазин (Store) и некоторые приложения. Существует также возможность полного отключения сбора телеметрии.

По нашему мнению, несмотря на некоторые шероховатости, с течением времени новая модель разработки и инструменты займут достойное место в разработке образов Windows.

Полный вариант статьи можно прочесть на корпоративном блоге компании "Кварта Технологии":https://habrahabr.ru/company/quarta/blog/278879/

ЛИТЕРАТУРА

  1. Антонович С.В. Windows 8 Embedded Lockdown — возможности для встраивания. Control Engineering Russia. 2013. № 3 (45). С. 64-69. http://www.controlengrussia.com/programmnye-sredstva/windows-8-embedded-lockdown-vozmozhnosti-dlya-vstraivaniya/
  2. Windows 10 IoT для встраиваемого применения. http://www.quarta-embedded.ru/windows10.html
  3. Understanding the Long Term Servicing Branch and Current Branch in Windows 10. http://windowsitpro.com/windows-10/understanding-long-term-servicing-branch-and-current-branch-windows-10
  4. Windows 10 Customization. https://msdn.microsoft.com/en-us/library/windows/hardware/mt269765(v=vs.85).aspx
  5. Run-Time Image Configuration Files (Compact 2013). https://technet.microsoft.com/ru-ru/ee478986
  6. Managed Centralized Settings Framework (MCSF). https://msdn.microsoft.com/en-us/library/windows/hardware/dn772150(v=vs.85).aspx
  7. Customize using the desktop Unattend framework. https://msdn.microsoft.com/en-us/library/windows/hardware/dn898376(v=vs.85).aspx
  8. Guide to Universal Windows Platform (UWP) apps. https://msdn.microsoft.com/en-us/library/windows/apps/dn894631.aspx
  9. Customize using the Windows Provisioning framework. https://msdn.microsoft.com/en-us/library/windows/hardware/dn898375(v=vs.85).aspx
  10. Загрузка Windows ADK. https://msdn.microsoft.com/ru-ru/windows/hardware/dn913721.aspx
  11. Добавление файлов и папок с помощью папок $OEM$. https://technet.microsoft.com/ru-ru/library/dd744507(v=ws.10).aspx
  12. Modules (Standard 8). https://msdn.microsoft.com/en-us/library/jj963003(v=winembedded.81).aspx
  13. Sean D. Liming and John R. Malin. Addendum 1: Windows 10 IoT Enterprise Build 10240. http://annabooks.com/Articles/Articles_IoT10/Windows-10-IoT-E-Addendum-1%20Rev1.4.pdf
  14. WIMBoot и Windows Embedded 8.1 Industry. Тестирование на Intel NUC DC3217IYE. http://ruemb.blogspot.ru/2015/04/wimboot-windows-embedded-industry-81.html
  15. WIM-, VHD- и FFU-файлы: сравнение форматов файлов образов. https://msdn.microsoft.com/ru-ru/library/windows/hardware/dn938355(v=vs.85).aspx
  16. Сведения о загрузке пробной версии Windows 10 Enterprise LTSB. http://www.quarta.ru/wiki/public:windows:servicing:win10_evaluation