Встраиваемые системы / Обзор Windows XP Embedded
Здравствуйте!
Хочу немного рассказать о Windows XP Embedded (XPe), т.к. на Хабре не нашлось статей по теме.
Windows XP Embedded — специальная версия Windows XP Professional, предназначенная для применения в тонких клиентах, банкоматах, платёжных терминалах, игровых автоматах и тому подобном.
Под катом — общий обзор системы, описание инструментов разработчика и цикла разработки.
Действительно, зачем было создавать очередной велосипед, если для встраиваемых систем есть Windows CE, а для смартфонов — Windows Mobile?
Возможные сценарии применения:
В общем виде выглядит так: создание файла с описанием устройств целевой платформы (Target Analyzer) — сканирование БД компонентов на предмет наличия подходящих драйверов (Component Designer, Target Designer) — [опционально] импорт недостающих драйверов в БД компонентов (Component Designer) — создание проекта, разрешение зависимостей (Target Designer) — создание мастер-образа, тиражирование | установка образа на целевую платформу.
А теперь — что же такое все эти дизайнеры и анализаторы:
...Windows XP Embedded — это встраиваемая компонентная операционная система на базе Windows XP Professional Edition…
Что значит — компонентная? Инструментарий разработки образов (fingerprint) ОС XPe представляет собой базу компонентов и IDE для работы с этой базой.
База компонентов состоит из файла БД, содержащий описание компонентов (название, зависимости, настройки реестра и пр.) и репозиторий, содержащий файлы компонентов. Поддерживаются СУБД MSDE и Microsoft SQL Server 2005 (в том числе и Express Edition), Microsoft SQL Server 2008 не поддерживается (актуально для Windows XP Embedded SP3, насчёт Windows XP Embedded Standard сказать не могу).
Компоненты — набор примитивов, каждый из которых может содержать:
Если не вдаваться в подробности, то довольно похоже на пакеты в Linux (deb, rpm).
Программа, предназначение которой — определить оборудование аппаратной платформы (видеокарту, звуковую карту, процессор, накопитель и т.д.). На выходе — xml-файл (с расширением pmq), содержащий описание каждого из найденных устройств (основные характеристики — название устройства, Vendor ID, Device ID), который будет использован как каркас для построения образа ОС.
Существует в двух версиях:
После того, как список устройств получен, нужно сравнить его с содержащимися в БД XPe драйверами и добавить недостающие. Всё это можно сделать с помощью Component Designer:
Component Designer — средство для создания собственных компонентов, в том числе драйверов.
Несколько компонентов в Component Designer
После импорта, устройства, драйвера для которых есть в базе, будут отображены в качестве компонентов, каждый со списком зависимостей (системных компонентов), что позволяет создать базовый образ ОС (ядро+минимальный набор необходимых файлов) автоматическим разрешением зависимостей при конструировании образа в Target Designer.
Если же, устройства в БД компонентов не обнаружено — Component Designer умеет парсить inf-файлы, создавая из них компоненты. Для этого зачастую приходится потрошить инсталлятор драйвера для Windows XP от производителя. Однако, это далеко не всегда срабатывает, например, драйвера интеловской графики, по-видимому содержали не все действия для установки драйвера в inf-файле, соответственно — XPe использовал видеодрайвер по-умолчанию, который не поддерживает разрешение выше 640x480, что очень меня огорчало. Справедливости ради, стоит сказать, что Intel выпустили бесплатную утилиту IEGD, позволяющую генерировать драйвера для встраиваемых систем.
После того, как Component Designer закончил разбор inf, нужно внести свежесозданный компонент в БД компонентов. Для этого используем Component Database Manager:
Component Database Manager — средство для управления содержимым базы компонентов. Позволяет импортировать и удалять компоненты.
База компонентов
Когда мы убедимся в том, что драйвера всех устройств целевой платформы содержатся в БД XPe, можно создавать проект образа ОС. Для этого используется Target Designer:
Target Designer — IDE для проектирования образа ОС. Добавляем и удаляем компоненты, можно отредактировать настройки компонента «на лету», без внесения изменений в общую базу, есть возможность автоматического разрешения зависимостей.
Открытый проект в Target Designer
Как уже было сказано выше, построение образа начинается со списка компонентов-описаний устройств. Итак, список загружен, нажимаем кнопку «Разрешение зависимостей». Target Designer сканирует зависимости и выводит список требуемых компонентов (в настройках можно поставить крыжечку «Разрешать зависимости автоматически», это позволяет не добавлять компоненты из зависимостей руками). После того, как все зависимости от оборудования будут разрешены, начинается доводка образа — добавление некритичных компонентов (Internet Explorer, Windows Media Player, .NET Framework и т.п.)
Когда все необходимые компоненты добавлены, запускаем сборку — в заданной директории будет создан установочный образ (обычная директория с файлами и вложенными директориями) — полуфабрикат. После создания этого образа, его нужно скопировать на активный раздел накопителя целевого устройства, после чего будет произведено развёртывание образа, и только после этого установка завершится.
Примечание: в отличие от Windows XP, XPe не содержит встроенных инструментов для разметки диска во время установки. Диск должен быть создан, помечен активным и отформатирован внешними утилитами (мне пришлось использовать LiveCD с Linux, как бы смешно это ни звучало). В установочный комплект входит диск Windows PE, но я так и не выяснил, можно ли изменять его и использовать для развёртывания XPe (лицензии Microsoft это тема для отдельного поста).
На этом я закончу вступление. Не знаю, насколько полезным и информативным оно вышло, в планах написать больше, про технологии, специфичные для встраиваемых систем и опыт внедрения.
P.S.: Нет, это не попытка шантажа, это проба пера. Если эта тема кого-то интересует, я с удовольствием продолжу. Также, буду рад любой конструктивной критике.
Официальная станица Windows Embedded
Сайт официального дистрибьютора Windows Embedded в России
Форум Кварты по Windows Embedded. Чуть ли не единственный русскоязычный ресурс по теме.
Хочу немного рассказать о Windows XP Embedded (XPe), т.к. на Хабре не нашлось статей по теме.
Что же это вообще такое?
Windows XP Embedded — специальная версия Windows XP Professional, предназначенная для применения в тонких клиентах, банкоматах, платёжных терминалах, игровых автоматах и тому подобном.
Под катом — общий обзор системы, описание инструментов разработчика и цикла разработки.
Экологическая ниша системы
Действительно, зачем было создавать очередной велосипед, если для встраиваемых систем есть Windows CE, а для смартфонов — Windows Mobile?
Возможные сценарии применения:
- Целевое устройство должно интегрироваться в существующую инфраструктуру Windows (работа в домене, поддержка групповых политик и т.п.).
- У вас уже есть приложение для Windows XP (да ещё и написанное под .NET), портирование которого под, к примеру, Win CE нерентабельно.
- На целевом устройстве требуется поддержка мультимедийных технологий (полноценные версии DirectX, Internet Explorer, Windows Media Player).
- У вас уже есть аппаратная плаформа (например, промышленный компьютер x86), драйвера для компонентов которой есть только для «большой» Windows.
- Вам нужна загрузка ОС с компакт-дика\USB-flash\CompactFlash или с помощью PXE, прозрачное блокирование записи (см. ниже EWF, FBWF), принудительная загрузка ОС из hibernate (см. ниже HORM), тиражирование образа ОС (по сути — Windows XP OPK, но более автоматизированный), собственный Shell.
Целевому устройства не хватает изюминки.
Цикл разработки
В общем виде выглядит так: создание файла с описанием устройств целевой платформы (Target Analyzer) — сканирование БД компонентов на предмет наличия подходящих драйверов (Component Designer, Target Designer) — [опционально] импорт недостающих драйверов в БД компонентов (Component Designer) — создание проекта, разрешение зависимостей (Target Designer) — создание мастер-образа, тиражирование | установка образа на целевую платформу.
А теперь — что же такое все эти дизайнеры и анализаторы:
Общая теория
...Windows XP Embedded — это встраиваемая компонентная операционная система на базе Windows XP Professional Edition…
Что значит — компонентная? Инструментарий разработки образов (fingerprint) ОС XPe представляет собой базу компонентов и IDE для работы с этой базой.
База компонентов состоит из файла БД, содержащий описание компонентов (название, зависимости, настройки реестра и пр.) и репозиторий, содержащий файлы компонентов. Поддерживаются СУБД MSDE и Microsoft SQL Server 2005 (в том числе и Express Edition), Microsoft SQL Server 2008 не поддерживается (актуально для Windows XP Embedded SP3, насчёт Windows XP Embedded Standard сказать не могу).
Компоненты — набор примитивов, каждый из которых может содержать:
- Файлы.
- Настройки реестра.
- Список зависимостей от других или список конфликтующих компонентов.
- Скрипты на VB для настройки параметров компонента (используются, в основном, в системных компонентах, т.к. документацию по написанию скриптов Microsoft держит в секрете, хотя, вполне возможно, что я её просто не там искал).
- «Действия» — произвольные команды (запуск программ, скриптов) выполняемые во время установки компонента.
- Настройки служб, регистрация DLL и т.д. и т.п.
Если не вдаваться в подробности, то довольно похоже на пакеты в Linux (deb, rpm).
Инструментарий
Target Analyzer
Программа, предназначение которой — определить оборудование аппаратной платформы (видеокарту, звуковую карту, процессор, накопитель и т.д.). На выходе — xml-файл (с расширением pmq), содержащий описание каждого из найденных устройств (основные характеристики — название устройства, Vendor ID, Device ID), который будет использован как каркас для построения образа ОС.
Существует в двух версиях:
- TA.exe (Target Analyzer) — программа, работающая под управлением MS-DOS (и, вероятно, FreeDOS, не проверял). Опрашивает BIOS (поправьте меня, если я не прав) на предмет подключённых устройств. Известные проблемы — не всегда может определить всё оборудование, плохо определяет накопители.
- TAP.exe (Target Analyzer Probe) — программа, работающая под управлением Windows (PE, Pro). Для определения устройств сканирует реестр. Справляется заметно лучше TA.
После того, как список устройств получен, нужно сравнить его с содержащимися в БД XPe драйверами и добавить недостающие. Всё это можно сделать с помощью Component Designer:
Component Designer
Component Designer — средство для создания собственных компонентов, в том числе драйверов.
Несколько компонентов в Component Designer
После импорта, устройства, драйвера для которых есть в базе, будут отображены в качестве компонентов, каждый со списком зависимостей (системных компонентов), что позволяет создать базовый образ ОС (ядро+минимальный набор необходимых файлов) автоматическим разрешением зависимостей при конструировании образа в Target Designer.
Если же, устройства в БД компонентов не обнаружено — Component Designer умеет парсить inf-файлы, создавая из них компоненты. Для этого зачастую приходится потрошить инсталлятор драйвера для Windows XP от производителя. Однако, это далеко не всегда срабатывает, например, драйвера интеловской графики, по-видимому содержали не все действия для установки драйвера в inf-файле, соответственно — XPe использовал видеодрайвер по-умолчанию, который не поддерживает разрешение выше 640x480, что очень меня огорчало. Справедливости ради, стоит сказать, что Intel выпустили бесплатную утилиту IEGD, позволяющую генерировать драйвера для встраиваемых систем.
После того, как Component Designer закончил разбор inf, нужно внести свежесозданный компонент в БД компонентов. Для этого используем Component Database Manager:
Component Database Manager
Component Database Manager — средство для управления содержимым базы компонентов. Позволяет импортировать и удалять компоненты.
База компонентов
Когда мы убедимся в том, что драйвера всех устройств целевой платформы содержатся в БД XPe, можно создавать проект образа ОС. Для этого используется Target Designer:
Target Designer
Target Designer — IDE для проектирования образа ОС. Добавляем и удаляем компоненты, можно отредактировать настройки компонента «на лету», без внесения изменений в общую базу, есть возможность автоматического разрешения зависимостей.
Открытый проект в Target Designer
Как уже было сказано выше, построение образа начинается со списка компонентов-описаний устройств. Итак, список загружен, нажимаем кнопку «Разрешение зависимостей». Target Designer сканирует зависимости и выводит список требуемых компонентов (в настройках можно поставить крыжечку «Разрешать зависимости автоматически», это позволяет не добавлять компоненты из зависимостей руками). После того, как все зависимости от оборудования будут разрешены, начинается доводка образа — добавление некритичных компонентов (Internet Explorer, Windows Media Player, .NET Framework и т.п.)
Когда все необходимые компоненты добавлены, запускаем сборку — в заданной директории будет создан установочный образ (обычная директория с файлами и вложенными директориями) — полуфабрикат. После создания этого образа, его нужно скопировать на активный раздел накопителя целевого устройства, после чего будет произведено развёртывание образа, и только после этого установка завершится.
Примечание: в отличие от Windows XP, XPe не содержит встроенных инструментов для разметки диска во время установки. Диск должен быть создан, помечен активным и отформатирован внешними утилитами (мне пришлось использовать LiveCD с Linux, как бы смешно это ни звучало). В установочный комплект входит диск Windows PE, но я так и не выяснил, можно ли изменять его и использовать для развёртывания XPe (лицензии Microsoft это тема для отдельного поста).
На этом я закончу вступление. Не знаю, насколько полезным и информативным оно вышло, в планах написать больше, про технологии, специфичные для встраиваемых систем и опыт внедрения.
P.S.: Нет, это не попытка шантажа, это проба пера. Если эта тема кого-то интересует, я с удовольствием продолжу. Также, буду рад любой конструктивной критике.
Полезные ссылки
Официальная станица Windows Embedded
Сайт официального дистрибьютора Windows Embedded в России
Форум Кварты по Windows Embedded. Чуть ли не единственный русскоязычный ресурс по теме.
0 комментариев