Магистр ДонНТУ Баринов Сергей Сергеевич

Баринов Сергей Сергеевич

Факультет: Компьютерные науки и технологии
Кафедра: Компьютерная инженерия
Специальность: Системное программирование
Тема выпускной работы: Разработка и исследование средств отладки режима ядра операционной системы Microsoft Windows
Руководитель: профессор, д.т.н. Святный Владимир Андреевич
Консультант: старший преподаватель Шевченко Ольга Георгиевна

Мой опыт подготовки дистрибутивов ОС Microsoft Windows

От автора

Я заинтересовался автоматизацией процесса установки операционной системы Microsoft Windows в 2004 году. Впоследствии это вылилось в создание собственного дистрибутива, позволявшего сократить время установки и избавиться от рутины. С тех пор я выпустил 3 дистрибутива Windows XP и 1 дистрибутив Windows 7, также экспериментировал с Windows 2000 и Windows Vista.

Первый дистрибутив Windows XP был хаотичным, сводился к ручной работе с файлом ответов и другими конфигурационными файлами. При создании второго дистрибутива я перешел к использованию утилиты nLite, с помощью которой я вносил изменения в компоненты операционной системы, их параметры, интегрировал обновления и приложения. Оказалось, что такой дистрибутив чрезвычайно сложно поддерживать, установщик неконтролируемым способом засорялся, а внесенные в дистрибутив изменения не могли быть отменены. Это являлось проблемой, например, в случае замены или перевыпуска обновления. Попытки начать создание дистрибутива с чистого листа, но по той же схеме закончились неудачей.

Выход операционной системы Windows Vista ознаменовал новый виток в развитии дистрибутивов, поскольку вместе с новой операционной системой была предложена новая концепция установки, основанная на образах. Конечно, образы создавались и раньше, но тогда это были сторонние решения, идущие не в ногу с инструментами корпорации Microsoft. Главная же прелесть новых инструментов для автоматизации установки Windows Vista заключалась в том, что их можно было применять и для других операционных систем, в частности, для Windows XP. Четвертая версия дистрибутива Windows XP вышла в свет в 2008 году после выхода пакета сервисных обновлений 3. Она создавалась полностью в виртуальном окружении, каждое изменение фиксировалось отдельным снимком состояния системы, после чего для создания образа загружалась установочная среда Windows PE. Все изменения строго фиксировались в специальном руководстве по развертыванию.

Что касается дистрибутива Windows Vista, то он так и не был выпущен, хотя опыт, полученный при освоении новых технологий, использовался при создании дистрибутива операционной системы Windows 7, механизмы установки которой не отличаются принципиально.

На момент 2011 года я поддерживаю дистрибутивы Windows XP и Windows 7, причем для последней операционной системы следующий релиз будет содержать как 32-разрядную, так и 64-разрядную версии образов.

Введение

Все мы пользуемся операционной системой Microsoft Windows. Именно она установлена на большинстве персональных компьютеров дома и на работе. Многие пользователи в случае необходимости не отдают свой компьютер в сервисный центр, а, вооружившись диском с операционной системой Windows, самостоятельно устанавливают систему. Разве в этом есть что-то сложное? Необходимо только вставить диск в дисковод и следовать инструкциям мастера установки! Операционная система Windows занимает лидирующее положение, и не последнюю роль в этом играет поддержка всего многообразия выпускаемого оборудования и низкий порог вхождения: если с аппаратным обеспечением компьютера все в порядке — проблем не возникнет.

Но если вы спросите о процессе установки операционной системы Windows администратора, то с удивлением услышите, что знакомый вариант — всего лишь вершина механизма установки. В самом деле: раз в несколько лет потратить пару часов на установки и настройку системы — это не проблема, но на большом предприятии, где необходимо подготовить к работе сотни однотипных рабочих станций, такая установка займет огромное количество времени. Другой пример: компания-изготовитель комплексного оборудования, выпускающая конкретную модель ноутбука в огромных количествах, не будет тратить время на ручную установку.

Исследование процесса установки Windows XP

Процесс установки Windows XP
    Оригинальная программа установки Windows XP (созданная на основе аналогичной программы для Windows 2000 и Windows NT 4) выполняет следующие действия, разбитые на этапы:
  1. Текстовый
    • определение базового оборудования, такого как тип процессора, контроллер жесткого диска, объем оперативной памяти;
    • анализ и подготовка жестких дисков и разделов;
    • установка базовой ОС, необходимой для продолжения установки;
    • создание структуры каталогов.
  2. Графический
    • копирование файлов Windows;
    • определение и настройка оборудования;
    • запрос индивидуальной информации у пользователя;
    • вспомогательные операции (регистрация компонентов в реестре, создания ярлыков)

Простейший способ ускорить процесс установки — это автоматизировать работу мастера, заранее подготовив ответы на типичные вопросы. Это частично избавляет администратора от необходимости вмешательства в процесс установки, но почти не сокращает его время. Описание синтаксиса файла ответов и утилита для генерации базового файла ответов содержатся в наборе инструментов под названием «Пакет средств подготовки системы для развертывания». Набор инструментов распространяется в виде файла deploy.cab, размещенного на диске в папке support/tools а также доступного в центре загрузки.

Более быстрым способом установки, или, как говорят в таком случае, развертывания операционной системы, является клонирование диска: сохранение состояния установленной эталонной системы в файл-образ, а затем низкоуровневое побайтовое (или даже посекторное) копирование данных из образа на жесткий диск целевого компьютера. Указанный набор инструментов не содержит средств для клонирования диска, однако для этой цели существуют сторонние программные продукты, такие как Norton Ghost или Acronis True Image Home.

Исследование процесса установки Windows Vista и Windows 7

Windows PE

При разработке следующей версии операционной системы, Windows Vista, корпорация Microsoft учла недостатки процесса установки Windows XP и разработала принципиально новую программу установки. Тогда как установка Windows 7 принципиально не отличается от установки Windows Vista. Ранее установщик был узкоспециализированной программой, созданной именно для этого, имел свой механизм обнаружения устройств и начинал работу в текстовом режиме. Тогда как установщик операционной системы Windows Vista — не что иное, как специальная версия этой же операционной системы в упрощенном варианте и небольшая программа установки, запущенная из-под нее и работающая в графическом режиме. Эта специальная версия операционной системы имеет название Windows Preinstall Environment (Windows PE) и хранится в образе размером всего 100 МБ. Когда пользователь загружается с установочного диска, программа-загрузчик создает в оперативной памяти виртуальный диск, записывает в него содержимое образа с операционной системой Windows PE и передает управление ей. Операционная система Windows PE тестирует оборудование, устанавливает базовые драйвера и запускает программу установки. В свою очередь, главная задача программы установки — скопировать из другого образа на жесткий диск полноценную версию операционной системы. Применение такой методики позволяет существенно сократить время установки. Кроме того, подобный механизм можно применить и для развертывания операционной системы Windows XP, если создать соответствующий образ.

Процесс установки Windows 7
    Сама установка проходит в несколько этапов:
  1. windowsPE
    • настройка параметров Windows PE;
    • задание параметров установки, без которых установка не может быть продолжены (выбор тома, ввод ключа);
    • обнаружение критических для загрузки драйверов (например, контроллеров запоминающих устройств);
  2. offlineServicing
    • внесение изменений в образ Windows (применение обновлений, языковых пакетов, добавление драйверов);
    • развертывание образа;
  3. specialize
    • применение сведений, относящихся к системе (параметры сети, региональные стандарты);
  4. oobeSystem (экран приветствия)
    • настройка пользовательских параметров, необходимых для первого входа (учетные записи пользователей, личные предпочтения).

Любой из этапов может быть автоматизирован с помощью сценария ответов. Все этапы установки стали проходить в графическом режиме. Также было выпущено новое средство для автоматизации установки Windows — Windows Automated Installation Kit (WAIK). В него входит утилита ImageX для создания и работы со специально разработанным форматом образов Windows. Поэтому отсутствует необходимость использовать сторонние утилиты.

Подготовка образов для развертывания

    Подготовка образов будет включать следующие этапы:
  1. подготовка установочной среды, которая необходима как для создания образов, так и для их последующего развертывания;
  2. проведение оригинальной установки операционных систем;
  3. настройка операционной системы;
  4. установка обновлений;
  5. установка стороннего программного обеспечения;
  6. подготовка системы к дублированию;
  7. создание образа.
Схема связей снимков состояния виртуальной машины

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

Установка обновлений. Корпорация Microsoft регулярно выпускает обновления для своих продуктов, исправляющие найденные ошибки, повышающие скорость работы системы в определенных сценариях или устраняющие найденные в системе безопасности уязвимости. Установка последнего вида обновлений (обновлений безопасности) является особенно важной. Список найденных уязвимостей и соответствующих исправлений публикуются в Центре безопасности TechNet корпорации Майкрософт каждый месяц, за исключением внештатных ситуаций. Включение обновлений в дистрибутив позволяет всегда устанавливать актуальную версию операционной системы. Для централизованной установки обновлений во время дальнейшей эксплуатации выпускаются специальный продукт под названием Microsoft Center Configuration Manager.

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

Несовместимый уровень абстрагирования от оборудования. Во время стандартного процесса установки в зависимости от оборудования выбирается уровень абстрагирования от оборудования (hardware abstraction layer, HAL). HAL — это загружаемый модуль ядра, предоставляющий низкоуровневый интерфейс с аппаратной платформой. В общем случае образ, созданный на компьютере с одним HAL, не будет работать на компьютере, для которого требуется другой HAL, т.е. при попытке загрузить систему результат будет непредсказуем. Windows XP поддерживает виды HAL, перечисленные в таблице:

Название Техническое название Модуль
Стандартный компьютер Non-ACPI PIC HAL Hal.dll
Однопроцессорный компьютер с MPS Non-ACPI APIC UP HAL Halapic.dll
Многопроцессорный компьютер с MPS Non-ACPI APIC MP HAL Halmps.dll
Компьютер с ACPI ACPI PIC HAL Halacpi.dll
Однопроцессорный компьютер с ACPI ACPI APIC UP HAL Halaacpi.dll
Многопроцессорный компьютер с ACPI ACPI APIC MP HAL Halmacpi.dll
    Следовательно, тип HAL зависит от следующих аппаратных компонентов:
  • контроллер прерываний;
  • интерфейс управления питанием.

Компьютеры, оснащенные процессором Intel 8086, использовали программируемый контроллер прерываний (Programmable Interrupt Controller, PIC), выпускаемый компанией Intel в виде микросхемы 8259. Позднее контроллер стали включать в состав контроллера-концентратора ввода-вывода (I/O Controller Hub). Вместе с процессором Intel Pentium был предложен расширенный контроллер прерываний (Advanced Programmable Interrupt Controller, APIC), которым оснащаются современные компьютеры.

Программное управление питанием было введено в 1992 г. стандартом Advanced Power Management (APM), который в 1996 г. был заменен новым стандартом — Advanced Configuration and Power Interface (ACPI).

На практике, компьютеры, построенные на основе Multi-Processor Specification (MPS), не являются распространенными в Украине, тогда как компьютеры, не поддерживающие стандарт ACPI (т.е. с поддержкой APM), обычно имеют оборудование, не соответствующее системным требованиям ОС Windows XP. С приходом Windows Vista поддержка стандарта APM была прекращена.

    Таким образом, следует сконцентрироваться на последних трех типах HAL, каждый из которых имеет поддержку стандарта ACPI. Вариант «Однопроцессорный компьютер с ACPI» является, по сути, упрощенным вариантом «Мультипроцессорный компьютер с ACPI» для уменьшения издержек. Эти два типа HAL изменяются на противоположный тип системой автоматически, при наличии или отсутствии более одного ядра в процессоре. Следовательно, для развертывания Windows XP вместо 6 необходимо 2 образа:
  • на основе HAL «Компьютер с ACPI» (без поддержки APIC);
  • на основе HAL «Однопроцессорный компьютер с ACPI» (с поддержкой APIC).

Перед копированием содержимого образов на конечный компьютер необходимо провести тестирование поддержки ACPI и использовать соответствующий образ. Определение поддержки ACPI процессором возможно с помощью команды идентификации процессора cpuid, функция 1 которой предоставляет информацию о списке поддерживаемых возможностей.

Преимущество операционной Windows Vista заключается в том, что ее образы не зависят от типа HAL, т.е. достаточно одного образа.

Несовместимый контроллер запоминающих устройств. Во время загрузки операционной системы Windows XP программный код, записанный в загрузочном секторе, считывает в память файл загрузчика ntldr и передает ему управление. Загрузчик подготавливает компьютер к запуску ядра Windows и кроме всего прочего загружает посредством функций 13-го прерывания BIOS драйвер контроллера запоминающих устройств. Если в системе установлены драйвера для конкретного контроллера, а на конечном компьютере используется другой контроллер запоминающих устройств — драйвер не будет функционировать, а система не сможет прочитать необходимые компоненты. В этом случае будет инициирован BSOD c сообщением INACCESSIBLE_BOOT_DEVICE. В Windows Vista загрузчиком является файл bootmgr, а процесс загрузки ОС происходит несколько иначе, однако неверный драйвер контроллера запоминающих устройств приведет к аналогичному результату.

Для обеспечения совместимости между различными контроллерами достаточно заменить драйвер стандартным драйвером контроллера запоминающих устройств «Standard Dual Channel PCI IDE Controller», который работает со всеми ATA накопителями (PATA и SATA). Для систем, отличных от ATA (например, использующих SCSI), необходимо выполнить дополнительные действия, однако это является актуальным для серверных решений, для которых используются серверные версии Windows.

    Запечатывание системы. Перед созданием образа эталонной системы ее следует очистить от зависимой информации и подготовить к новому запуску. Этот процесс называют запечатыванием. Для этого существует утилита Sysprep. Данная утилита не включена в состав Windows XP, однако входит в Windows Vista. Для Windows XP утилиту (файлы sysprep.exe и SetupCL.exe) необходимо скопировать в папку C:\Sysprep из архива deploy.cab. Утилита выполнит следующие операции:
  • очистит журналы системы и другую временную информацию;
  • скопирует настройки пользователя в профиль пользователя по умолчанию;
  • создаст новый идентификатор безопасности компьютера после перезагрузки;
  • инициирует обнаружение оборудования после перезагрузки;
  • проведет этап, похожий на окончание графического этапа оригинальной установки (т.н. мини-установка).

В рамках мини-установки после включения компьютера с развернутой системой у пользователя будет запрошена некоторая информация, такая как имя пользователя, серийный номер и т.д. Для автоматизации этого этапа может быть применен файл ответов. Для Windows XP это INI-файл с именем sysprep.inf, для Windows Vista — XML-файл unattend.xml.

    Создание образа системы. Система готова к дублированию, после применения программы Sysprep компьютер завершил работу. Для переноса копии системы на другой компьютер будут использованы образы. Для создания такого образа на основе подготовленного необходимо:
  • загрузить установочную среду Windows PE;
  • выполнить захват тома в образ;
  • если образов несколько, например как в случае с Windows XP для разных типов HAL, добавить последующие образы в тот же файл (при этом одинаковые файлы хранятся в единственном экземпляре).

Развертывание образов

В качестве съемных носителей предпочтительным является использование флэш-накопитель (UFD). Их скорость чтения значительно выше скорости чтения дисководов для компакт-дисков и составляет около 20 МБ/с. Однако такая скорость может быть достигнута, только если конечный компьютер поддерживает интерфейс USB версии 2 и может выполнять загрузку с таких устройств. В противном случае необходимо использовать CD или DVD.

    Процедура развертывания включает следующие шаги:
  1. Загрузка установочной среды. BIOS компьютера должен быть настроен на загрузку с соответствующего устройства. BIOS компьютеров, которые были выпущены за последние 5 лет, часто имеет отдельное меню загрузки, позволяющее выбрать загрузочное устройство без изменения настроек BIOS.
  2. Подготовка жесткого диска. Выполняется с помощью DiskPart в случае, если жесткий диск не использовался ранее или размечен неправильно.
  3. Форматирование тома, на который необходимо развернуть систему. Программа ImageX не выполняет очистку тома во время применения образа, файлы образа добавляются в существующую файловую систему, поэтому форматирование выполняется предварительно программой format или DiskPart.
  4. Выбор образа в зависимости от типа HAL (для Windows XP). Для определения типа HAL была написана программа IsApicSupported, и в зависимости от кода возврата может быть выбран образ.
  5. Применение образа к тому. Выполняется командой ImageX.
  6. Запись в загрузочную область раздела кода, совместимого с загрузчиками ntldr или bootmgr. Выполняется командой BootSect.

При стандартной скорости сетевого подключения 100 Мб сетевое развертывание будет выполняться немного дольше, зато обеспечивает централизацию и является предпочтительным. Для сетевого развертывания также необходимо выполнить загрузку установочной среды со съемного носителя, тогда как образ системы будет загружен посредством сетевого подключения. Для сетевой загрузки установочной среды также существует технология PXE.

    При сетевом развертывании перед этапом развертывания при помощи съемных носителей «Применение образа к тому» следует выполнить дополнительные этапы:
  1. инициировать работу сети командой wpeinit;
  2. настроить сетевые параметры с помощью программы Netsh;
  3. подключить сетевой диск.

Рекомендуемая литература

  1. Net Applications. Operating System Market Share [Электронный ресурс]— Электрон. дан. — 2011. — Режим доступа: http://marketshare.hitslink.com/report.aspx?qprid=8
  2. Microsoft Corporation. Правила по срокам поддержки продуктов Microsoft [Электронный ресурс] — Электрон. дан. — 2011. — Режим доступа: http://support.microsoft.com/lifecycle
  3. Microsoft Corporation. Unattended Installation Fundamentals [Электронный ресурс] — Электрон. дан. — 2003. — Режим доступа: http://technet.microsoft.com/en-us/library/cc775443(WS.10).aspx
  4. Microsoft Corporation. Windows XP Service Pack 3 Deployment Tools [Электронный ресурс] — Электрон. дан. — 2008. — Режим доступа: http://www.microsoft.com/downloads/details.aspx?familyid=673A1019-8E3E-4BE0-AC31-70DD21B5AFA7&displaylang=en
  5. Microsoft Corporation. Windows Automated Installation Kit (Windows AIK) [Электронный ресурс] — Электрон. дан. — 2007. — Режим доступа: http://technet.microsoft.com/en-us/library/cc748933(WS.10).aspx
  6. Microsoft Corporation. 7. Центр безопасности TechNet [Электронный ресурс] — Электрон. дан. — 2011. — Режим доступа: http://www.microsoft.com/technet/security
  7. Mark Russinovich. The Machine SID Duplication Myth (and Why Sysprep Matters) [Электронный ресурс] — Электрон. дан. — 2009. — Режим доступа: http://blogs.technet.com/b/markrussinovich/archive/2009/11/03/3291024.aspx
  8. Microsoft Corporation. Error message after you upgrade a computer that uses a processor other than an Intel processor to Windows XP Service Pack 2 or to Windows XP Service Pack 3: "STOP: 0x0000007E" [Электронный ресурс] — Электрон. дан. — 2010. — Режим доступа: http://support.microsoft.com/kb/953356
  9. Microsoft Corporation. Unsupported Sysprep scenarios [Электронный ресурс] — Электрон. дан. — 2011. — Режим доступа: http://support.microsoft.com/kb/828287
  10. Microsoft Corporation. How to add OEM Plug and Play drivers to Windows installations [Электронный ресурс] — Электрон. дан. — 2007. — Режим доступа: http://support.microsoft.com/kb/254078
  11. Microsoft Corporation. Changes in behavior of the SysPrep and RIPREP tools after you install Windows XP Service Pack 2 [Электронный ресурс] — Электрон. дан. — 2008. — Режим доступа: http://support.microsoft.com/kb/887816
  12. Microsoft Corporation. The Microsoft policy for disk duplication of Windows installations [Электронный ресурс] — Электрон. дан. — 2010. — Режим доступа: http://support.microsoft.com/kb/314828
  13. Microsoft Corporation. How to customize the default local user profile when you prepare an image of Windows XP or Windows Server 2003 [Электронный ресурс] — Электрон. дан. — 2010. — Режим доступа: http://support.microsoft.com/kb/959753
  14. Microsoft Corporation. How to customize the default local user profile when you prepare an image of Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 [Электронный ресурс] — Электрон. дан. — 2010. — Режим доступа: http://support.microsoft.com/kb/973289
  15. Microsoft Corporation. HAL options after Windows XP or Windows Server 2003 Setup [Электронный ресурс] — Электрон. дан. — 2008. — Режим доступа: http://support.microsoft.com/kb/309283