Существует миллион разрозненных статей о том, что такое Windows PE, чем он полезен. В интернете приводится миллион способов создания этого самого Windows PE. какой же из них самый лучший? Попытаемся обобщить основную необходимую информацию и сделать выводы в этой статье.
Для чего вам потребуется Windows PE?
Windows PE (Windows Preinstallation Environment) — Среда предустановки Windows, с ограниченными службами, построенная на ядре обычный Windows . Она используется для подготовки компьютера к установке Windows, копирования образа Windows с сетевого файлового сервера и запуска установки Windows. Она является встроенным элементом других средств установки и восстановления системы, например программы установки для Windows , служб развертывания Windows (WDS), пакета средств развертывания операционной системы (OS) SCCM сервера и среды восстановления Windows (Windows RE). Изначально среда Windows PE была создана для того, чтобы помочь производителям оборудования, сборщикам систем и корпорациям загружать компьютер без работающей операционной системы. Таким образом, PE чаще всего запускают или с внешнего накопителя или же по сети с WDS/TFTP сервера компании.
Да, не надо путать Windows PE и Windows RE. Windows RE (Recovery Environment) — среда для восстановления Windows после сбоя. Однако, Windows RE как набор инструментов можно запустить из-под PE. И тут возникает мысль: а почему бы не использовать PE для задач восстановления упавших систем, интегрировав в PE необходимые приложения? Да, именно это нам и нужно.
Какие задачи мы сможем выполнять под ней:
- управление разделами жесткого диска с помощью утилиты Diskpart или сторонних средств;
- захват томов в WIM-образ с помощью утилиты ImageX и их сохранение на другой раздел жесткого диска или USB-диск;
- применение WIM-образов к разделу имеющегося жесткого диска с помощью утилиты ImageX и её разновидностей;
- запуск автоматической установки Windows используя скрипты и файлы ответов XML;
- копирование и замену файлов, а также правку реестра установленной операционной системы, если она не загружается;
- диагностировать неисправности оборудования;
- бороться с вирусами используя различные антивирусные утилиты для Windows PE.
Особую ценность для диагностики и восстановления операционной системы Windows PE приобретает при включении в ее состав набора Microsoft Diagnostics and Recovery Toolset (MS DaRT), который можно скачать и интегрировать в образ Windows PE. По сути вся операционная система запаковывается в один файл — WIM формата, который при запуске с носителя распаковывается в оперативную память (RAM-disk, обычно диск X:). Вот основные особенности PE:
- Все изменения в реестре Windows PE во время ее выполнения будут потеряны при следующей перезагрузке компьютера. Постоянные изменения в реестр можно внести только в автономном режиме до запуска Windows PE.
- Буквы дисков присваиваются последовательно, по мере создания разделов в среде Windows PE. Однако при перезагрузке Windows PE все присвоенные буквы возвращаются к порядку по умолчанию.
- Для установки 64-разрядной версии Windows необходимо использовать 64-разрядную версию Windows PE. Точно так же для установки 32-разрядной версии Windows необходимо использовать 32-разрядную версию Windows PE.
- Все приложения Windows PE должны или быть интегрированы в образ PE и зарегистрированы в её реестре или же быть portable (не требующими установки). В большинстве случае все не-Microsoft приложения — portable: при распуске распаковываются на RAM диск в оперативной памяти.
- При запуске Windows PE с носителя, доступного только для чтения, например с компакт-диска, среда Windows PE сохраняет кусты реестра в памяти, позволяя приложениям производить запись в реестр. Все изменения, внесенные в реестр приложениями, не сохраняются для использования в других сеансах Windows PE.
Какие бывают Windows PE?
Собственно классический Windows PE — это среда от компании Microsoft, ядро которой зависит от версии PE, которую вы скачаете:
- Windows PE 2.0 — Windows Vista
- Windows PE 3.1 — Windows 7 SP1
- Windows PE 4.0 — Windows 8
- Windows PE 5.0 — Windows 8.1
- Windows PE 10.0 — Windows 10
«Голая» Windows PE весьма урезана в своих возможностях и по большей части опирается на интерфейс командной строки, где вы можете запускать любые сервисные утилиты, входящие в образ PE. Набор интегрированных приложений и команд зависит от версии. Также обратите внимание, что для развертывания той или иной ОС на диск вам нужна PE версии не ниже, чем разворачиваемая ОС. То есть для установки на целевой компьютер Windows 10 из-под PE вам потребуется PE версии не ниже чем 10.0, потому что для этого используется утилита DISM соответствующей версии. Также от версии к версии меняется поддержка версий платформы .NET и версий Powershell.
Но помимо классический Windows PE существует большое количество альтернативных сборок PE (более 300), основанных на том же ядре, но с графическим интерфейсом и большим набором программ. Существуют даже готовые среды от производителей того или иного ПО, которые содержат их утилиты.
Win PE от вендоров:
- AOMEI Windows PE — включает утилиты от AOMEI и позволяет добавить свои portable приложения, файлы и драйверы
- Acronis Bootable Media (Boot CD) — утилиты от Acronis, позволяет интегрировать драйвера. Есть версия Live CD основанная на ядре Linux, есть на WinPE.
- Dr.Web LiveDisk — загрузочная среда для лечения от вирусов
- Kaspersky Rescue Disk
- Paragon Rescue Kit
- Lazesoft Recovery Suite Home Edition
- EaseUS Todo Backup WinPE
Это далеко не полный список, но те системы, которые наиболее на слуху. Каждый полезен, у каждого свои преимущества. А список кастомных сборок от разных энтузиатов просто море:
- BartPE — загрузочный диск, построенный на основе дистрибутива Windows XP/2003. Все начиналось с него, тогда не было альтернатив, все последующие сборки брали с нее пример. Сейчас имеет смысл только на очень слабых старых ПК. Чтобы быстро создать такой диск, можно воспользоваться готовой утилитой PEBuilder. Такую сборку записывали на CD диск, она весила несколько сот мегабайт, отсюда пошел термин Windows Live CD.
- Ieshua’s Live DVD/USB и (Y)PE by Yurkesha — самые популярные отечественные сборки на основе BartPE.
- RusLive by Nikzzzz — Windows Live CD для очень старых ПК на базе Windows XP, запускался на 128 МБ RAM
- WinPE5 TechAdminPE — проект загрузочной флэшки для системных администраторов
- AdminPE — проект загрузочной флэшки для системных администраторов на базе PE 5.1 и 10.0
- WinPE Sergei Strelec — один из лучших, если не лучший проект Windows 10 и 8 PE, который есть сейчас
- MultiBoot 2k10 by conty9 & Viktor Kisel — Мультизагрузочный диск системного администратора, базируется на загрузчиках BOOTMGR (Windows 8.1.1), Isolinux/Syslinux v.4.06 и Grub4Dos v.0.4.5c. Диск состоит из большого количества продуктов, обьединённых оболочкой, с возмoжностью загрузки c CD/DVD, USB Flash Drive, USB-HDD и обычного HDD. На мой взгляд, это лучший Windows PE проект на данный момент.
- Gandalf’s Win10PE — лучший зарубежный проект
Перечислять можно долго, но если вам нужен готовый вариант WinPE на современном ядре, выберите что-то списка выше. Я бы рекомендовал или проект Стрельца или Conty9. Если вас не устроит набор утилит в сборке — посмотрите в сторону TechAdminPE или AdminPE. Если же вам хочется создать свои набор, то читайте дальше.
Как устроен и работает Windows PE
Как уже было сказано выше, чистый Win PE — это командная строка. По сути PE — это один файл boot.wim и ряд служебных, передающих ему управление и позволяющих его загрузить.
Диспетчер загрузки bootmgr позволяет выполнить загрузку как с обычного системного диска, так и из загрузочных образов, виртуальных дисков, загрузку с использованием загрузчиков других операционных систем. Содержимое типового диска аварийного восстановления на базе WinPE:
- Файл корневого раздела bootmgr — это файл диспетчера загрузки.
- Папка BOOT — содержит файл bcd — данные конфигурации загрузки, файл boot.sdi, необходимый для создания виртуального электронного диска в оперативной памяти, ссылка на который имеется в конфигурации BCD, и файл шрифтов, используемый диспетчером загрузки bootfix.bin
- Папка SOURCES, содержащая файл образа загружаемой системы boot.wim. Поскольку конфигурация загрузки BCD для созданного диска восстановления Windows уже настроена на выполнение загрузчиком bootmgr загрузки из образа boot.wim, то для создания загрузочной флэшки достаточно просто скопировать все перечисленные файлы и папки, выполнить запись загрузочных секторов MBR и PBR, а также установить признак активности раздела. Все это можно выполнить стандартными средствами Windows 7 — с использованием утилит командной строки bootsect.exe и diskpart.exe.
Процесс загрузки Windows PE проходит следующие этапы:
- Выполняется загрузка с использованием загрузочного сектора определенного носителя. Управление передается программе Bootmgr. Bootmgr извлекает основные сведения загрузки из данных конфигурации загрузки и передает управление программе winload.exe, содержащейся в Boot.wim. Затем Winload.exe загружает необходимый уровень HAL (Hardware Abstraction Layer) и загружает куст системного реестра и необходимые драйверы загрузки. После завершения загрузки она подготавливает среду для выполнения ядра Ntoskrnl.exe.
- Выполняется программа Ntoskrnl.exe, которая завершает установку среды. Управление передается модулю Session Manager (SMSS).
- Модуль SMSS загружает остальную часть реестра, настраивает среду для запуска подсистемы Win32 (файл Win32k.sys) и ее различных процессов. Модуль SMSS загружает процесс Winlogon, чтобы создать сеанс пользователя, а затем запускает службы, остальные второстепенные драйверы устройств и подсистему безопасности (LSASS).
- Winlogon.exe выполняет установку, основываясь на значении реестра HKLM\SYSTEM\Setup\CmdLine. Winpeshl.exe запустит %SYSTEMDRIVE%\sources\setup.exe, если этот файл существует, в противном случае программа Winpeshl.exe будет искать приложение, указанное в файле %SYSTEMROOT%\system32\winpeshl.ini. Если приложение не указано, будет выполнена команда cmd /k %SYSTEMROOT%\system32\startnet.cmd. По умолчанию Windows PE содержит файл Startnet.cmd, который запускает программу Wpeinit.exe. Wpeinit.exe загружает сетевые ресурсы и координирует свою работу с сетевыми компонентами, такими как DHCP.
- Wpeinit.exe устанавливает устройства PnP, обрабатывает параметры Unattend.xml и загружает сетевые ресурсы. После выполнения Wpeinit.exe отобразится окно командной строки. Процесс загрузки Windows PE завершен.
Программе wpeinit можно сообщить файл ответов Unattend.xml, в котором будут указаны различные настройки пользовательского интерфейса системы. Служебная программа Wpeutil — это средство командной строки, которое позволяет выполнять различные команды в сеансе Windows PE. Например, можно завершить работу компьютера или перезапустить Windows PE, включить или отключить брандмауэр, задать языковые параметры и настроить сеть. Средство настройки региональных параметров (Intlcfg.exe) используется для изменения языка и региональных настроек, шрифтов и параметров ввода образа Windows. Обычно Intlcfg.exe запускается после применения одного или нескольких пакетов поддержки языков к образу Windows. О других системных командах можно почитать на Technet.
В кастомизированных сборках все намного сложнее. Там происходит не только запуск командной строки, но и запуск графического интерфейса explorer.exe, а также массы кастомизированных скриптов и приложений. Все же хотите создать свой Windows PE? — Пожалуйста.
Методика создания своего Windows PE
Итак, подхода три:
- Создать мультизагрузочную флэшку или диск с меню на базе загрузчика GRUB или Syslinux, где каждый пункт будет запускать свой LiveCD или WinPE.
- Создать свой WinPE, напичкав его своими драйверами, утилитами, приложениями, скриптами.
- Создать Windows PE средствами MDT (Microsoft Deployment Toolkit). Этот способ самый удобный, но самый сложный и требующий времени на изучение MDT.
Первый вариант рассмотрен в конце нашей статьи о загрузчиках. Мы пойдем другим путем.
Подготовка Windows PE своими руками
Откуда взять необходимое? Windows PE является частью свободно распространяемого Windows ADK. Версия PE соответствует версии ADK. Скачать ADK можно с сайта Microsoft. Обратите внимание, что для Windows 7 ADK ранее назывался WAIK. Итак, план действий:
- Скачать и установить ADK. Не забудьте скачать правильную версию нужной разрядности. Хотите ставить Windows x64 из WinPE — тащите 64-битный ADK.
- Скопировать необходимые для PE файлы из ADK в заранее подготовленную пустую папку. В ADK входит удобный файл copype.cmd, который делает эту работу одной командой.
- Подключите с помощью DISM образ (смонтируйте его в пустую подпапку)
- Добавьте все необходимые пакеты, программы, модули, драйвера, используя dism
- Добавьте свои папки, утилиты
- Настройте запуск свои приложений или скриптов. Укажите в файле startnet.cmd программы, которые вы хотите запустить автоматически. Или же можно задать собственную оболочку или список запускаемых приложений вместо командной строки в файлике Windows\System32\winpeshl.ini. Если ваша оболочка будет лежать в в папке Shell диска, то код будет выглядеть так:
[LaunchApp]
AppPath = %SystemDrive%\Shell\myshell.exe
- Создайте свой файл ответов для запускаемого wpeinit -unattend=<путь\ФайлОтветов.xml>. Примеры xml можно посмотреть здесь.
- Сохраните изменения в WIM файл через dism с ключом /commit
- Переименуйте winpe.wim (дефолтное имя) в boot.wim
- Запишите содержимое папки образа на загрузочный носитель любым способом. Существует встроенная в ADK утилита для создания носителя (media) — Makewinpemedia. О ней можно почитать на MSDN.
Все, образ готов. Конечно, уйдет немало времени для отладки всего этого, но в целом процесс не такой сложный. Можете надергать готовые PE приложения из других готовых сборок и добавить в свою. Детали процесса подготовки и добавления приложений я описывать не буду, таких описаний в сети тьма.
Полуавтоматизированная сборка Windows PE
И как обычно в конце я предлагаю вариант для тех, кто по тем или иным причинам не достиг желаемого результата своими руками. Существует спасительный конструктор, который называется WinBuilder, который позволяет собрать дистрибутив Windows PE путем интегрирования готовых модулей (проектов) и портативных программ, скачиваемых с web сайта проекта автоматически. Дело в том, что это свободно распространяемый проект, который включает массу других подпроектов, сделанных на его базе, по сути это агрегатор проектов, написанных на Java в рамках одной концепции. Все, что вам требуется — выбрать готовые проекты и скачать их с сети, они включают в себя даже набор готовых приложений, а затем скомпилировать. Установка ADK все равно требуется.
К сожалению, я данным проектом полная неразбериха, и не существует полноценной документации. Все статьи в интернете более не актуальны. Основной проект по обновления платформы WinBuilder, как таковой, умер, но в рамках него существует несколько самостоятельно развивающих проектов. В связи с этим не скачивайте приложение Winbuilder 082 с официального сайта, оно ссылается на умершие проекты, поэтому не работает.
Вам нужно выбрать между 4 проектами:
- Win7PE SE — The Win7PE SE project provides a basis for building a PE environment using Windows 7 or Windows Vista sources. A fork of Multi 7PEs.
- Win8PE SE — The Win8PE SE project provides a basis for building a PE environment using a Windows 8 source and supports both x86 and x64 architectures.
- Win8.1PE SE — The Win8.1PE SE project provides a basis for building a PE environment using a Windows 8.1 source and supports both x86 and x64 architectures.
- Win10PE SE — Live CD/DVD that can be built from Windows 10 sources and supports both x86 and x64 architectures.
У каждого из этих проектов есть самостоятельный сайт, на котором хранятся пакеты и подпроекты, относящиеся к этому проекту. Вам необходимо скачать ZIP архив с каждого из этих сайтов, который содержит соответствующее приложение и набор основных модулей — ссылка доступна на первой странице каждого из этих сайтов. Например, для Win7PE SE это http://w7pese.cwcodes.net/Compressed/index.php.
Скачав архив, распакуйте его и запустите приложение Builder SE.exe. Далее, действуйте по инструкции: укажите Source с установочными файлами ОС (там должен быть install.wim), настройте подпроекты (у каждого есть страница настроек) и запустите сборку проекта.