Что такое winpe. Что такое Windows PE? Назначение Windows PE

Существует миллион разрозненных статей о том, что такое 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.

Скачав архив, распакуйте его и запустите приложение Builder SE.exe . Далее, действуйте по инструкции: укажите Source с установочными файлами ОС (там должен быть install.wim), настройте подпроекты (у каждого есть страница настроек) и запустите сборку проекта.

WinPE (Windows Preinstallation Environment) – это урезанная версия операционной системы Windows. Главное отличие WindowsPE от стандартной Windows заключается в том, что ее можно загрузить со сменного носителя (CD, DVD, USB). Т.е. при наличии диска с WinPE вы сможете запустить компьютер и восстановить работоспособность существующей системы, если она оказалась повреждена.

Загрузившись с WinPE мы получаем полный доступ к жестким дискам компьютера (в т.ч. к NTFS-томам, реестру, настройкам и драйверам), следовательно – можем заменить поврежденные системные файлы оригинальными или, например, произвести какие-то операции с разделами диска.

Существуют как официальные версии WindowsPE от Microsoft, так и различные сборки. Первая официальная версия (Windows PE 1.0) была собрана на основе Windows XP, а последняя на момент написания данной статьи (Windows PE 4.0) – на основе Windows 8.

WinPE от Microsoft имеют приличный вес, но при этом малофункциональны. Поэтому среди пользователей большей популярностью пользуются, так называемые, сборки – наборы программ, работающих в среде WindowsPE. Пожалуй, самой известной такой сборкой является диск аварийного восстановления ERD Commander . Изначально он являлся разработкой Winternals Software, но в 2006 году компанию приобрел Microsoft и с тех пор ERD Commander стал частью набора программных средств Microsoft Desktop Optimization Pack.

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

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

Последовательность сетевой загрузки WinPE, начиная с версии 2.0, следующая:

  1. загружается сетевое ядро pxeboot.com ;
  2. сетевое ядро загружает стандартный диспетчер загрузки bootmgr.exe , далее сетевая загрузка практически не отличается от загрузки с других носителей;
  3. диспетчер загрузки читает файл BCD (boot configuration data), где прописана конфигурационная информация (расположение загрузочных файлов), загружает необходимый шрифт (wgl4_boot.ttf) и драйвер виртуального диска boot.sdi , потом загружается образ WinPE;
  4. диспетчер загрузки передает управление программе, указанной в параметре path BCD-файла.
Для получения вышеуказанных файлов нет необходимости разворачивать (скачивать и устанавливать) пакеты Windows AIK, как сказано, например, . Также необязателен похожий пакет OEM Preinstallation Kit. Нам нужен только сам установочный диск или даже его образ, в последнем случае на вашем компьютере должно быть 7Zip или любая другая программа, которая позволит копировать файлы из образов ISO и WIM. Поэтому не тратьте время на закачку и установку Windows AIK. Подойдут любые совместимые с архитектурой дистрибутивы Windows 7, 8 и даже 10. Для максимальной совместимости лучше использовать архитектуру x86.

Файлы boot.sdi и bcd можно взять в каталоге boot , здесь же можно взять целиком подкаталог fonts (там располагается шрифт wgl4_boot.ttf), а из каталога sources нужен только файл boot.wim . Потребуются еще два файла, которые располагаются в образе boot.wim. Проще всего воспользоваться графическим файловым менеджером 7Zip, но если вы собираетесь добавлять в образ WinPE драйверы или пакеты, то лучше использовать утилиту dism. Далее мы будем рассматривать вариант с dism, а для тех, кому достаточно будет стандартного образа, сообщаем: необходимые файлы (pxeboot.n12 и bootmgr.exe) находятся в каталоге windows\boot\pxe . Файл pxeboot.n12 отличается от, указанного выше, pxeboot.com тем, что не требует нажатия клавиши F12 .

В случае с dism потребуется компьютер с Windows 7-10, так как на Windows XP dism не работает, как в прочем и с утилитой bcdedit. Работать с этими утилитами можно только из под администратора, то есть находим в кнопке пуск пункт «Командная строка», щелкаем правой кнопкой мыши по этому пункту и выбираем из контекстного меню «Запуск от имени администратора» (способов много, все эти способы и для всех операционных систем перечислять смысла нет, если не получилось попробуйте включить соображалку). Получить справку по работе с этой утилитой можно, набрав в запущенной командной строке:

Dism /?
Например, мы хотим убедиться, что это нужный нам WIM-файл, то есть нам нужны сведения об образах в WIM-файле, для этого получим справку о команде /Get-Wiminfo , набрав в консоли:

Dism /get-wiminfo /?
Подключим образ следующей командой:

Dism /mount-wim /wimfile:<путь_к_WIM-файлу> /index:<индекс_образа> /mountdir:<каталог_подключения>
Обращаю ваше внимание, что путь к WIM-файлу и каталогу подключения должны существовать на этом компьютере, а индекс образа можно узнать командой /Get-Wiminfo . В каталоге подключения находим папку windows\boot\pxe, в которой берем два файла: pxeboot.n12 и bootmgr.exe .

Для желающих добавить драйвера потребуется команда:

Dism /image:<каталог_подключения> /Add-Driver /driver:<каталог_c_драйвером> /recurse /ForceUnsigned
Если вам потребуется добавление дополнительных пакетов, например, таких как: WMI, HTA, MDAC, NetFX, PPPoE, PowerShell, scripting и др., то их нужно сначала найти. Например, установить Windows OPK или AIK или ADK. Потом выполнить команду:

Dism /image:<каталог_подключения> /Add-Package /PackagePath: <путь_и_имя_пакета_cab>
Далее надо отключить образ командой:

Dism /unmount-wim /mountdir:<каталог_подключения> /commit
Дальше мы рассмотрим pxelinux – сетевой загрузчик по PXE из пакета syslinux, который надо скачать . Распакуем скачанный файл, но прежде чем будем копировать файлы, разберемся с корневым каталогом. Допустим, мы используем Tftpd32 под операционной системой Windows, и корневым каталогом мы делаем C:\tftpd32 . Далее все пути мы будем отсчитывать от этого каталога, а указывать мы его не будем, более того в путях будет использоваться прямой слэш, а не обратный как в Windows. То есть, если указано pxelinux.cfg/default , то реальный путь будет C:\tftpd32\pxelinux.cfg\default , причем default это файл без расширения. Скопируем следующие файлы из каталога, куда распаковали syslinux в корневой каталог (то есть C:\tftpd32):

  • bios\core\pxelinux.0 (собственно сам сетевой загрузчик);
  • из каталога bios\com32\menu два файла: menu.c32 и vesamenu.c32 (menu.c32 будем использовать только для тех машин, где не сработает vesamenu.c32);
  • bios\com32\chain\chain.c32 (модуль управления загрузчиками, обычно используется для локальной загрузки);
  • bios\com32\elflink\ldlinux\ldlinux.c32 (вторичный загрузчик, обязателен при использовании pxelinux.0);
  • bios\com32\lib\libcom32.c32 (необходим при использовании chain.c32);
  • bios\com32\libutil\libutil.c32 (необходим при использовании chain.c32);
  • bios\memdisk\memdisk (драйвер загрузки образов флоппи, жесткого диска, ISO и т.д.).
Сетевой загрузчик не очень сильно отличается от родительского проекта syslinux, поэтому многое, что применимо и при загрузке с флешки или компакт-диска и наоборот. Создадим папку pxelinux.cfg, в которой будет пока единственный файл (потом с ростом вариантов загрузки будет увеличиваться количество конфигурационных файлов) – default, со следующим содержимым:

UI vesamenu.c32 MENU TITLE PXE Special Boot Menu LABEL bootlocal MENU LABEL ^Boot local disk MENU DEFAULT LOCALBOOT 0 TIMEOUT 80 TOTALTIMEOUT 9000 LABEL winpe MENU LABEL ^WinPE KERNEL pxeboot.0
Первая строчка задает графический характер меню, вторая – название всего меню. Потом идут два пункта меню, которые идентифицируются как bootlocal и winpe, а на экран будут выведены: Boot local disk и WinPE. Как вы догадались, первый пункт меню является пунктом по умолчанию и обеспечивает локальную загрузку, но нам интересен второй пункт. Получается какая-то путаница, сначала говорилось о pxeboot.com , скопировали pxeboot.n12 , а прописываем pxeboot.0 . Дело в том, что pxelinux предъявляет свои требования к наименованию сетевых загрузчиков – расширение таких файлов.0 , кстати не путайте pxeboot.0 , который мы взяли из образа WinPE с pxelinux.0 , взятый из syslinux. Второй требуется для отображения меню, а первый загружается только после выбора соответствующего меню. Значит, мы должны переименовать pxeboot.n12 в pxeboot.0 и поместить в корневую папку.

Также в корневую папку мы должны поместить bootmgr.exe . Создаем в корневой папке подкаталог boot , куда нужно поместить два файла: bcd и boot.sdi и каталог fonts , еще надо создать каталог sources , куда скопируем файл boot.wim . Если вас устраивает подобное расположение всех загрузочных файлов, то файл bcd менять не надо. Хитрость тут заключается в том, что сетевая загрузка аналогична загрузке с компакт-диска или флешки.

Можем запускать DHCP и TFTPD (в нашем примере это Tftpd32), только проверьте правильность настроек: каталог - C:\tftpd32 , файл - pxelinux.0 , выбор сетевого интерфейса и т.д. При наличии ошибок или отсутствия нужного результата, смотрите вывод в журнал (Log Viewer). Отдельно стоит сказать про компьютеры с отсутствием совместимости с BIOS, то есть только с UEFI. Для таких компьютеров нужны другие файлы:

  • вместо pxelinux.0 syslinux.efi , который располагается в efi32\efi\syslinux.efi для 32-разрядных систем или efi64\efi\syslinux.efi для 64-разрядных;
  • вместо ldlinux.c32 соответственно - efi32\com32\elflink\ldlinux\ldlinux.e32 или efi64\com32\elflink\ldlinux\ldlinux.e64 .
Рассмотрим последний вопрос нашей статьи: «А что если нужно изменить стандартное расположение загрузочных файлов WinPE?». Тогда нам нужно сделать изменения в файле bcd. Вообще-то файл bcd представляет собой обычный куст реестра и может быть загружен стандартным regedit, но так не удобно будет работать с двоичными данными, поэтому воспользуемся утилитой bcdedit. Как и в работе с предыдущей утилитой нам нужен режим администратора, поэтому, если вы закрыли окно командной строки, его надо открыть таким же способом. Справку по работе с утилитой bcdedit можно получить набрав:

Bcdedit /?
Для начала определимся, что в переменной %BCD% будет полное имя нового файла BCD, создадим этот файл:

Bcdedit /store %BCD% /create {ramdiskoptions} /d "Ramdisk options"
Задаем два параметра, причем второй ссылается на переменную %SDI%, которая содержит путь\boot.sdi относительно загрузочного устройства (первоначально было \boot\boot.sdi):

Bcdedit /store %BCD% /set {ramdiskoptions} ramdisksdidevice boot bcdedit /store %BCD% /set {ramdiskoptions} ramdisksdipath %SDI%
Создаем новую запись для WinPE:

Bcdedit /store %BCD% -create /d "WinPE Boot Image" /application osloader
Результатом последней команды будет вывод на экран GUID в фигурных скобках, далее мы его будем обозначать как переменную %GUID%. Вообще-то это можно было бы автоматизировать с помощью команды FOR, но тогда сложнее разбирать их. Устанавливаем параметр системного корневого каталога:

Bcdedit /store %BCD% /set %GUID% systemroot \Windows
Устанавливаем параметры определения HAL и WinPE:

Bcdedit /store %BCD% /set %GUID% detecthal Yes bcdedit /store %BCD% /set %GUID% winpe Yes
Устанавливаем параметры устройства, содержащего операционную систему и устройство содержащее файл %WIM%, например \windows\winpe.wim:

Bcdedit /store %BCD% /set %GUID% osdevice ramdisk=%WIM%,{ramdiskoptions} bcdedit /store %BCD% /set %GUID% device ramdisk=%WIM%,{ramdiskoptions}
Создаем еще одну запись диспетчера загрузки:

Bcdedit /store %BCD% /create {bootmgr} /d "Windows BootManager"
Устанавливаем параметр ожидания:

Bcdedit /store %BCD% /set {bootmgr} timeout 30
Устанавливаем очередность:

Bcdedit /store %BCD% /set {bootmgr} displayorder %GUID%
Все, BCD-файл готов, можно его подкладывать в каталог boot нашего TFTPD-сервера.

С выходом Windows 8 обновилась и среда предустановки Windows PE. Появлению Windows 8.1 сопутствовал выход PE 5.0, a Windows 8.1 Update соответствует версия PE 5.1. Среда Windows PE входит в Windows ADK, который теперь объединяет средства развертывания и оценки различных параметров системы.

Что входит в Windows ADK

Раньше инструменты для подготовки операционной системы к развертыванию и оценки ее работы поставлялись отдельными наборами. Теперь Windows Assessment and Development Kit (далее ADK) объединил несколько пакетов.

Deployment and Imaging Tools и Windows Preinstallation Environment

Эти средства для подготовки Windows к развертыванию ранее входили в WAIK, а Windows System Image Manager даже не изменился внешне.

Windows Performance Toolkit

Набор инструментов для оценки производительности Windows, с которым вы уже знакомы , раньше поставлялся в наборе SDK. Теперь в WPT входят новые средства для записи различных сценариев работы приложений и системы (Windows Performance Recorder) и просмотра записей (Windows Performance Analyzer).

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

Загрузка и установка Windows ADK

Microsoft не предлагает к загрузке ISO, но с помощью установщика вы можете скачать полный комплект (инструкции на английском) и сделать из него образ, если необходимо. После установки вы найдете все наборы в папке Program Files\Windows Kits. Впрочем, если у вас 64-разрядная система, туда упадет лишь часть средств развертывания, а остальное окажется в Program files (x86).

Дальше в программе:

Что нового в Windows PE

Полный список изменений в разных версиях PE есть на этой странице библиотеки TechNet . Например, на Windows PE 4.0 основана среда предустановки Windows 8, что повлекло ряд значимых изменений по сравнению с Windows PE 3.1. Так, расширился список пакетов, которые можно внедрить в PE, в частности добавились:

  • .NET (WinPE-NetFX) обеспечивает запуск приложений, которым требуется.NET Framework.
  • Powershell (WinPE-PowerShell) позволяет использовать PowerShell в среде PE. В состав ADK входит новая версия Powershell.
  • DISM PowerShell Cmdlets (WinPE-DismCmdlets) представляют собой новые командлеты третьей версии Powershell для создания и обслуживания WIM образов
  • Remote Network Driver Specification (WinPE-RNDIS) пригодится для доступа к удаленным клиентам из Windows PE
  • Windows PE Secure Startup (WinPE-SecureStartup) нужен для управления BitLocker и TPM.

Изменения в Windows PE 5.0 и 5.1 не такие значительные. Но если 5.0 вошла в ADK, то 5.1, добавляющая поддержку WimBoot , на момент последнего обновления этой статьи нужно применять в качестве обновления к 5.0 .

Подготовка рабочей папки

Введите в поиск среда средств (в англ. версии — deployment ) и запустите от имени администратора командную строку средств развертывания. По сути это файл DandISetEnv.bat из папки Deployment and Imaging Tools , задающий необходимые переменные среды для быстрого доступа к инструментам командной строки.

Для работы с автоустановкой и Windows PE у меня давно создана переменная среды %ua% , ведущая в папку unattend в корне профиля. Вы можете создать такую же переменную на постоянной основе, либо только в рамках текущей сессии командной строки, как показано ниже.

:: Задайте путь к рабочей папке (избегайте кириллицы и пробелов в пути) set ua=C:\unattend:: Создайте папку md %ua%

# Задайте путь к рабочей папке (избегайте кириллицы и пробелов в пути) $env:ua = "C:\unattend" # Создайте папку md $env:ua

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

Копирование файлов Windows PE в рабочую папку

В ADK входит удобный файл copype.cmd , который делает эту работу одной командой.

Учтите, что с помощью DISM из 32-разрядной PE можно обслуживать Windows любой разрядности, а из 64-разрядной PE — только 64-разрядную . Во всех моих командах подразумевается создание 32-разрядной среды Windows PE. Для подготовки 64-разрядного диска замените везде x86 на amd64 .

В командной строке выполните:

Cd "..\Windows Preinstallation Environment" copype.cmd x86 %ua%\winpe_x86\

Первая команда переходит в папку с наборами файлов Windows PE, а вторая запускает файл copype.cmd с параметрами x86 для создания 32-разрядной PE и %ua%\winpe_x86\ для копирования необходимых файлов в эту папку, с которой мы будем работать дальше.

Работа WIM-образом Windows PE

Все действия нужно выполнять в командной строке средств развертывания, которую вы запустили с полными правами на предыдущем этапе.

Шаг 1 – Подключение образа

Подключение WIM-образа выполняется одной командой с помощью утилиты DISM. Если вы часто работаете с WIM-образами, не повредит сначала очистить все предыдущие подключения.

Dism /Cleanup-Wim dism /Mount-Wim /WimFile:%ua%\winpe_x86\media\sources\boot.wim /index:1 /MountDir:%ua%\winpe_x86\mount

Шаг 2 – Добавление пакетов в образ

Пакеты находятся в папке WinPE_OCs , и мы добавим четыре пакета:

  • .Net Framework
  • PowerShell
  • командлеты DISM

Первая команда переходит в папку, а вторая добавляет пакеты:

Cd x86\WinPE_OCs dism /image:%ua%\winpe_x86\mount /Add-Package /PackagePath:WinPE-NetFx.cab /PackagePath:WinPE-PowerShell.cab /PackagePath:WinPE-DismCmdlets.cab /PackagePath:WinPE-wmi.cab

Возможность перечислить сразу несколько пакетов в одной команде ускоряет дело.

Вы можете добавить любые другие пакеты из папки WinPE_OCs. Например, WinPE-Scripting.cab обеспечит работу сценариев Windows Script Host (WSH). Но учтите, что каждый пакет увеличивает размер образа Windows PE.

Важно! Для работы PowerShell необходим.NET Framework, поэтому сначала нужно добавлять пакет WinPE-NetFx4.cab , и только вслед за ним WinPE-PowerShell3.cab и WinPE-DismCmdlets.cab .

Поскольку добавление пакетов сродни установке программ, при импорте WinPE-PowerShell3.cab без пакета.NET будет возникать ошибка 0x800f081e . Создавая свой первый диск, я добавлял пакеты в правильном порядке. Но потом случайно изменил его, когда собрал все пакеты в одну команду. Для решения проблемы пришлось плясать с бубном (в прямом смысле слова:)

Проверить наличие пакетов в образе вы можете командой:

Dism /image:%ua%\winpe_x86\mount /Get-Packages

Шаг 3 – Добавление драйверов

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

Если возникла необходимость, с помощью DISM можно добавить:

  • отдельный драйвер, указав путь к INF-файлу
  • все драйверы из папки, указав путь к ней и ключ /recurse

Примеры этих команд:

Dism /Image:%ua%\winpe_x86\mount /Add-Driver /Driver:C:\drivers\mydriver.INF dism /Image:%ua%\winpe_x86\mount /Add-Driver /Driver:C:\drivers /recurse

Шаг 4 – Добавление своих утилит и сценариев

У меня есть папка Tools , где хранятся различные утилиты и средства командной строки. Я всегда включаю ее в состав Windows PE, добавляя в корень диска.

Xcopy /e /y "%userprofile%\PortableSoft\Tools" %ua%\winpe_x86\media\Tools\

Альтернативно, вы можете скопировать утилиты прямо в папку System32 образа. Тогда их можно будет запускать, не переходя в папку Tools или не указывая полный путь. Я, однако, предпочитаю отделять мух от котлет.

Видно, что.NET Framework успешно добавлен, поскольку отображается список командлетов DISM в PowerShell 3. В ближайшее время я покажу, как использовать их для работы с WIM-образами из Windows PE.

Чтобы не терять время зря, вы пока можете прочесть интересные факты и полезные советы на тему Windows PE, а также поэкспериментировать с запуском приложений и заменой интерфейса командной строки на любимый файловый менеджер.

А вы пользуетесь Windows PE или другими дисками собственного изготовления? Расскажите в комментариях, какие диски вы используете для обслуживания и восстановления системы!

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

Ядро

Начинать создание сборки следует с ядра. Ядро Windows PE содержится в пакете Windows AIK для Windows 7.
Далее необходимо запустить командную строку средств развертывания и выполнить команду
copype.cmd <архитектура> <путь> При том каталог, указанный в качестве аргумента copype.cmd, не должен существовать.
Вы можете создать сборки для архитектур x86,x64 и Itanium(x86,amd64,ia64)

Структура сборки

Проще говоря, сборка – это то, что вы получили в целевой папке после работы сценария copype.cmd. Работать сборка не может, ее необходимо прежде всего поместить на носитель и написать загрузчик. После этого ее уже можно будет назвать пользовательски настроенной системой Windows PE 3.0.

Сборка состоит из папок ISO, в которой находится содержимое, копируемое на носитель при подготовке загрузочного накопителя, а именно основа загрузчика – папки boot, efi, sources, файл bootmgr.
Также есть пустая папка mount, предназначенная для монтирования образа.
Еще там хранится файл etfsboot.com, предназначенный для создания загрузчика на CD\DVD диске
И самое главное, это файл winpe.wim, хранящий собственно систему Windows PE
Итак, создание настроенной системы Windows PE 3.0 представляет собой задачу из двух этапов.

  1. Редактирование файла winpe.wim (создание сборки)
  2. Создание загрузчика

Алгоритм создания сборки

Монтирование winpe.wim

Начнем создание сборки с монтирования образа winpe.wim, который содержит в себе систему Windows PE.
Под монтированием подразумевается, что образу в wim-файле ставится в соответствие некоторая папка в файловой системе.
При монтировании все содержимое образа оказывается связанным с папкой, но физически не копируется.
Для монтирования образа используется соответствующая команда
Dism /Mount-Wim /WimFile:<Путь>\winpe.wim /index:<индекс образа в wim-файле> /MountDir:<Путь>\mount

Таким образом, указывается необходимая информация об монтировании образа: имя и путь к wim-файлу, номер образа в файле, путь для монтирования.

Пакеты Windows PE

Windows AIK содержит в себе компоненты, которые используются для расширения функционала Windows PE. Они называются пакетами. Существует множество пакетов, при помощи которых можно создать образ, с которого происходит загрузка при установке ОС, также есть компоненты предназначенные для поддержки доступа к данным, средств восстановления, а также для инструментария WMI.
Имя пакета Описание
WinPE-FONTSupport- Дополнительная поддержка шрифтов для следующих языков: ja-JP, ko-KR, zh-CN, zh-HK и zh-TW.
WinPE-HTA Поддержка HTML-приложений. Позволяет создавать приложения с графическим интерфейсом пользователя, используя обработчик сценариев Internet Explorer и службы HTML.
Winpe-LegacySetup Пакет компонента программы установки Media. Все файлы программы установки из папки \Sources на носителе с Windows. Добавьте этот пакет при обслуживании установки или папки \Sources на носителе с Windows. Он должен добавляться с пакетом компонента программы установки (Setup). Чтобы добавить новый файл Boot.wim на носитель, дополнительно к пакетам Setup и Media добавьте любой дочерний пакет. Данный пакет необходим для поддержки установки Windows Server® 2008 R2.
WinPE-MDAC Поддержка компонентов доступа к данным MDAC Microsoft®. Позволяет отправлять запросы к серверам SQL с объектами Active Directory (ADO). Пример использования: создание динамического файла автоматического запуска на основе уникальных системных сведений.
WinPE-PPPoE Включает поддержку протокола PPPoE. Позволяет создавать, подключать, отключать и удалять подключения по протоколу PPPoE из среды предустановки Windows.
WinPE-Scripting Поддержка сервера сценариев Windows (WSH). Позволяет производить пакетную обработку файлов с помощью объектов сценариев сервера сценариев Windows.
WinPE-Setup Пакет компонента программы установки (родительский). Все файлы программы установки из папки \Sources, общей для клиента и сервера.
WinPE-Setup-Client Пакет компонента программы установки клиента (дочерний). Файлы фирменной символики клиента для программы установки. Необходимо добавить после пакета компонента программы установки.
WinPE-Setup-Server Пакет компонента программы установки сервера (дочерний). Файлы фирменной символики сервера для программы установки. Необходимо добавить после пакета компонента программы установки.
WinPE-SRT Пакет компонента среды восстановления Windows. Предоставляет платформу восстановления для автоматической диагностики и восстановления системы, а также создания специализированных решений по восстановлению.
WinPE-WMI Поддержка инструментария управления Windows (WMI). Подмножество поставщиков WMI, обеспечивающее минимальную диагностику системы.
WinPE-WDS-Tools Пакет средств служб развертывания Windows. Содержит интерфейсы API, предоставляющие многоадресный сценарий с использованием пользовательского клиента служб развертывания Windows и служебную программу создания образов.

Для добавления пfкета существует команда:
Dism /image:<путь >\mount /Add-Package /PackagePath: "C:\Program Files\Windows AIK\Tools\PETools\<архитектура>\WinPE_FPs\<имя пакета>.cab"

Профилирование

Профилирование – это процесс уменьшения размера образа за счет неиспользуемых компонентов
Профилирование выполняется следующим образом: сначала оно включается через программу DISM, затем сборка запускается, в ней выполняют требуемые от неё операции, сохраняют профиль, далее сборка подключается через программу DISM и применяется профиль.
Такой метод довольно эффективно снижает размер образа, но его полезно применять в узкой корпоративной среде. В данной инструкции же я создаю УНИВЕРСАЛЬНУЮ сборку, поэтому профилирование будет выполняться несколько иначе.
Оно будет заключаться в РУЧНОМ удалении некоторых компонентов, а именно языковых пакетов, кроме русского и английского.
Также на завершающем этапе будет выполнено экспортирование wim-образа в другой файл с целью очистки индексов устаревших файлов(об этом позднее)
Таким образом, в каталоге mount\Windows\System32 необходимо удалить все каталоги с именами языковых пакетов, кроме ru-ru и en-us.

Добавление компонентов из Windows 7

После добавления пакетов функционал Windows PE расширяется, но недостаточно для выполнения большей части административных задач.
Поэтому я предлагаю расширить возможности путем добавления некоторых компонентов из Windows 7, а именно
  1. Компоненты Проводника – дают возможность вызвать диалоговое окно «Открыть» из диспетчера задач.
  2. Nslookup – утилита для тестирования DNS-серверов
  3. Fc – утилита для сравнения файлов
  4. Diskcomp – утилита для сравнения дискет
  5. Diskcopy – утилита для копирования дискет
  6. Mstsc.exe – программа «Подключение к удаленному рабочему столу», таким образов, Windows PE превращается в «тонкий клиент»
Для этого необходимо установить систему Windows 7 Максимальная (той же архитектуры, что и сборка Windows PE)и SP1 на виртуальную машину. После этого подключите виртуальный жесткий диск от этой ВМ в консоли diskmgmt.msc.
Таким образом, вы будете копировать файлы с этого VHD в сборку
Копируйте указанные в таблице файлы.
Всегда оставляйте для файла то же местоположение, что и на VHD! То есть, если файл находился в каталоге %systemroot%/system32/ru-ru, то вы должны скопировать его в тот же подкаталог каталога mount сборки.
Имя файла Расположение
Компоненты проводника
Explorer.exe %systemroot%
Shell32.dll %systemroot%/system32
SHELL.dll %systemroot%/system32
Shellstyle.dll %systemroot%/system32
Nslookup
Nslookup.exe %systemroot%/system32
Fc,diskcomp,diskcopy
Fc.exe %systemroot%/system32
Diskcomp.exe %systemroot%/system32
Diskcopy.dll %systemroot%/system32
Diskcopy.exe %systemroot%/system32
Клиент RDC
Mstsc.exe %systemroot%/system32
Mstscax.dll %systemroot%/system32
Msacm32.dll %systemroot%/system32
d3d10core.dll %systemroot%/system32
d3d10.dll %systemroot%/system32
Dxgi.dll %systemroot%/system32
mcm32.dll.mui %systemroot%/system32/ru-ru
mstscax.dll.mui %systemroot%/system32/ru-ru
mstsc.exe.mui %systemroot%/system32/ru-ru

Либо вы можете скачать все эти файлы отсюда . Содержимое рассортировано по каталогам

Добавление стороннего ПО

Будет добавлено следующие программы и сценарии:
Название ПО Команда запуска Описание
CPU-Z 1.57 cpuz Используется для получения информации об аппаратном обеспечении
DnsDataView 1.15 dnsdataview Используется для получения информации с DNS-серверов
EasyTerm 4.3 easyterm Telnet-клиент
Everest 5.02 everest Используется для получения подробной информации об аппаратном обеспечении и проведения его тестов
Free Commander 2008 fcom Двухпанельный NC-образный файловый менеджер
FirefoxPortable4.01 firefoxportable Портативная версия популярного интернет-браузера
HDDScan 2.8 Hddscan Утилита для проверки качества поверхности жёстких дисков
HD_Speed Hdd Утилита для проверки скорости работы жесткого диска
ImageX imagex Утилита от Microsoft, предназначенная для работы с WIM-файлами
IpTools 2.58 ip_tools Набор сетевых утилит
Macview 1.13 macview Программа для определения производителя устройства по его MAC-адресу
MemTest memtest Утилита для проверки оперативной памяти
Netagent 3.2 netagent Набор сетевых утилит
NmapW 2.0.0.1 nmap(консольный интерфейс), nmpw32(графический интерфес) Мощный сканер портов
PortScanner 1.0 portscanner Сканер портов
Putty putty SSH и Telnet-клиент
Radmin Viewer 3.4 radmin Утилита для подключения к серверной части приложения Radmin
Recuva 1.19 recuva Восстановление удаленных файлов
Smart Sniffer smsniff Простой и удобный сниффер
Space Monger 1.4 spacemonger Анализатор дискового пространства. Работает в удобном графическом режиме
Sysinternals ---- Ограниченный набор утилит sysinternal от Марка Руссиновича. Сохранены оригинальные названия программ
Undelete Plus undelete Программа для восстановления удаленных файлов.
Wdsmcast wdsmcast Консольная утилита от Microsoft, предназначенная для работы с WDS-сервером
WIM2VHD.wsf cscript “Z:\Program Files\soft\wim2vhd.wsf” Сценарий для конвертации образов из WIM файлов в файлы виртуального жесткого диска
WinRar 3.71 winrar Многофункциональный архиватор

Список программ из набора sysinternals(о их назначении вы можете прочитать на сайте http://technet.microsoft.com/ru-ru/sysinternals)

Accesschk
AccessEnum
Clockers
Contig
Dbgview
Diskext
DiskView
Du
Efsdumpo
Handle
Listdlls
Loadord
Ntfsinfo
Procexp
Procfeatures
Procmon
Sdelete
Streams
Strings
Tcpvcon
Tcpview
Volumeid
Whois
Psexec
Psfile
Psgetsid
Psinfo
Pskill
Pslist
Psloggedon
Psloglist
Pspasswd
Psservice
Psshutdown
Pssuspend

Все это ПО должно быть помещено в папку \mount\Program Files\soft\
Скачать подборку можно отсюда .
И помимо этого, я решил изменить стандартный фон «рабочего стола». Я указал этот термин в кавычках, поскольку помимо фонового рисунка он ничего не содержит, вследствие отсутствия графической оболочки.
Фоновое изображение берется из файла winpe.bmp из каталога %systemroot%/system32
Скачать его можно отсюда

Редактирование реестра Windows PE


Как известно, в ОС Windows файлы реестра хранятся в папке %systemroot%/system32/config
Для их редактирования используется редактор реестра regedit.exe
Чтобы подключить реестр сборки Windows PE, необходимо выполнить команду «Подключить куст» из меню файл программы «Редактор реестра». В диалоговом окне указать файл реестра сборки, ввести имя раздела.
После этого можно редактировать любые параметры реестра Windows PE, учитывая ее функциональные ограничения.

Настройка Windows PE

Windows PE может быть настроена так, как необходимо администратору. Для этого существует несколько средств.
Вы можете изменить путь к рабочей зоне и ее размер, настроить автоматически выполняемый командный сценарий и прочее.
Одним из средств настройки является файл Winpeshl.ini
Этот INI-файл предназначен для настройки программы оболочки.
По умолчанию не существует, в качестве оболочки используется cmd.exe
Довольно хорошей идеей является настройка в качестве оболочки файл-менеджера FreeCommander, однако я не буду этого делать, так как на мой взгляд, командно-ориентированный интерфейс ближе и удобнее для администратора, и а графический файл-менеджер нужен лишь для решения объемных задач, когда cmd тормозит работу.
Поэтому я не буду создавать файл winpeshl.ini, однако дам обзор его синтаксиса
Обратите внимание, что если вы настроите собственную программу оболочку, то не будет выполняться файл startnet.cmd! Поэтому для увеличения функциональности среды(поддержка сети и Plug and Play) следует добавить команду wpeinit в раздел LaunchApps.
Вообще, благоразумнее использовать раздел LaunchApps, так как он позволяет использовать параметры командной строки и выполнять несколько команд. При этом не стоит использовать оба раздела одновременно, так как это приведет к неработоспособности конфигурационного файла.
AppPath = %SYSTEMDRIVE%\myshell.exe %SYSTEMDRIVE%\mydir\application1.exe, {option}
Выход из программы оболочки ведет к перезагрузке ПК.Файл winpeshl.ini должен хранится в каталоге %systemroot%/system32
Для автозапуска приложений либо для автоматизации каких-либо иных действий в Windows PE существует файл startnet.cmd. По умолчанию содержит строку запуска программы wpeinit, предназначенной для окончательной инициализации среды Windows PE, добавляя сетевые возможности и поддержку самонастраиваемых устройств. Файл startnet.cmd хранится в каталоге %systemroot%/system32 Его синтаксис стандартен для cmd-файлов.

Также при помощи программы DISM вы можете изменить параметры рабочей зоны, т.е. виртуального диска, создаваемого при загрузке Windows PE Иными словами, рабочая зона – это то же самое что и RAM-диск в системе MS-DOS
DISM /image:<путь >\mount /Set-TargetPath:<буква>:\ - устанавливает путь к рабочей зоне. По умолчанию – X:
DISM /image:<путь >\mount /Set-ScratchSpace:64 - установка размера рабочей зоны. По умолчанию - 32 Мб.
Стоит отметить, что в качестве размера рабочей зоны можно задавать значения 32,64,256 и 512
Также существует несколько других команд DISM для работы со смонитрованным образом Windows PE:
Dism /image:<путь>\mount /Get-Packages – отобразить включенные в образ пакеты
Dism /image:<путь>\mount /Get-Drivers – отобразить включенные в образ пакеты
Dism /image:<путь>\mount /Get-Intl – отобразить язык по умолчанию для смонтированного образа
Dism /image:<путь>\mount /Get-PESettings - отобразить инфомция о настройках Windows PE
Dism /image:<путь >\mount /Add-Driver /driver:<путь к драйверу> – добавить в образ драйвер

Добавление драйверов


Чтобы добавить в сборку драйвер в более удобном графическом режиме, необходимо воспользоваться Windows Deployment Services
Для этого необходимо:
  1. Открыть консоль управления WDS
  2. Выполнить команду «Добавить загрузочный образ» из контекстного меню элемента «Образы загрузки» дерева консоли
  3. В открывшемся диалоговом окне выбрать образ
  4. Изменить имя образа и его описание, если требуется. Я всегда указываю в описании назначение конкретной сборки и включенные в нее программные средства
  5. По окончании процесса добавления образа, из контекстного меню добавленного образа вызвать команду «Добавить пакеты драйверов к образу»
  6. Задать условия отбора драйверов, выбрать требуемые драйвера(имеется в виду, что они уже добавлены в хранилище)
  7. По окончании процесса добавления выполнить команду «Экспортировать образ» из контекстного меню данного образа. Указать путь и имя образа, нажать кнопку «Сохранить».
Экспортированный образ будет содержать все добавленные драйвера.
Я рекомендую добавлять драйвера сетевых адаптеров, используемых в вашей организации, особенно если они были выпущены сравнительно недавно. Однако предварительно протестируйте сборку без драйверов. Если сетевые адаптеры «видны» и так, то не стоит добавлять драйвера, увеличивая тем самым размер образа.

Размонтирование и оптимизация образа

После выполнения всех вышеперечисленных этапов вы имеете универсальную сборку Windoiws PE, которую вы можете использовать для различных целей, включая использование в качестве тонкого клиента.
Но для того, чтобы изменения, внесенные в содержимое папки mount были применены к образу, необходимо размонтировать образ с подтверждением изменений.
Это делается при помощи команды
DISM /Unmount-Wim /MountDir:<путь>\mount /Commit Процесс размонтирования состоит из двух этапов – запись изменений в образ, и очистка папки монтирования.
По окончании процесса редактирования размер wim-файла увеличится, однако его можно оптимизировать, путем обновления индексов содержимого в wim-файле.
Делается это при помощи команды
imagex /export <путь>\winpe.wim 1 <путь>\ISO\sorces\boot.wim «Windows PE 3.0»

Работа с Windows PE

Обратите внимание, что Windows PE отличается от обычной версии Windows в первую очередь, своим командно-ориентированным интерфейсом. Не закрывайте окно командной строки. Это приведет к перезагрузке ПК. Диспетчер задач вы можете вызвать путем ввода команды taskmgr, комбинация CtrlAlt Delete не работает. Отсутствует стандартный проводник. Однако, если вы добавляли все библиотеки, указанные выше, вы можете использовать диалоговое окно «Открыть» из диспетчера задач. В Windows PE отсутствует консоль mmc и оснастки. Поэтому стоит привыкнуть работать в консольном режиме, либо использовать стороннее ПО.
Размер образа, созданного по моей инструкции – 220Мб, если удалить что-то ненужное вам, то образ может поместиться на mini-CD диск. Также вы можете поместить его на загрузочный флэш-накопитель или использовать WDS для удаленной загрузки. Если Windows PE будет использоваться как тонкий клиент, то вы можете спокойно использовать бездисковые рабочие станции для работы.
В Windows PE содержится команда wpeutil, при помощи которой вы можете:
Изменить размер файла подкачки.(по умолчанию, C:\pagefile.sys, 64 Мб)
wpeutil CreatePageFile /path= /size=<размер>
Обратите внимание, что если в указанном есторасположении уже имеется файл подкачки, и команда создает файл подкачки меньший по размеру, чем существующий, то это может вызвать ошибку
Отключить или включить брандмауэр.
wpeutil DisableFirewall|EnableFirewall
Реинициализировать сеть.
wpeutil InitializeNetwork
Задать раскладку клавиатуры
wpeutil SetKeyboardLayout <код раскладки клавиатуры>
Задать язык
wpeutil SetMuiLanguage <язык>[;<язык>]
Можно задать несколько языков в приоритетном порядке.
Задать региональные настройки пользователя.
wpeutil SetUserLocale <язык>[;<язык>]
Можно задать несколько региональных настроек в приоритетном порядке.
Выключить компьютер
wpeutil shutdown
Перезагрузить компьютер
wpeutil reboot

На этом я закончу рассмотрение команд wpeutil. Более подробную информацию можно получить в справке по этой команд, вызываемой путем ввода wpeutil /?

Итог

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

Процессор – 1 Ггц.
ОЗУ –384 Мб.
Сборку, созданную при написании этой статьи можно скачать отсюда .

Повторюсь, напомнив вам – данная статья – не строгая инструкция. Это основа для дальнейшего творчества. Единственное, чего вы не имеете права делать – это дизассемблировать и переписывать код ядра Windows PE. В остальном, всё зависит от вашей фантазии и запросов. Я продолжаю вести работу над совершенствованием и увеличением функционала с целью расширить область применения среды. Так, на ближайшей повестке дня:

  • Разблокировка поддержки WiFI
  • Интеграция IE9, дабы не пользоваться Firefox
  • Наведение порядка в системных библиотеках, так как многие программы сторонних разработчиков не работают в Windows PE
  • Написание удобной графической оболочки, аналогичной GNOME, но удобной и содержащей только то, что необходимо администратору, либо частичная интеграция оболочки explorer.exe
  • Интеграция консоли управления mmc.exe
  • Создание мультизагрузочного дистрибутива Windows PE, то есть вы сможете выбрать, что загружать – определенную сборку Windows PE,либо же setup.exe для установки полнофункциональной Windows

Похожие публикации