Создание образа winpe night blog

Обновлено: 04.07.2024

Первая и вторая части статьи были посвящены установке и конфигурированию сервера для загрузки и инсталляции с сети разнообразных дистрибутивов операционных систем. Будем считать, что все настроено и работает. Из поставленных задач, остается только один вопрос: “Как это может помочь лечить от вирусов компьютеры, восстанавливать ОС и загрузчики и т.д.?". Ответу на этот вопрос и посвящается эта часть.

Во времена, когда операционная система Windows XP только начинала свое победное шествие по десктопам пользователей, с ней происходили разные необъяснимые вещи, вроде синих экранов смерти (BSOD), испорченных загрузчиков и т.д. В связи с этим компания Microsoft разработала волшебный инструмент, позволяющий быстро и просто восстановить работоспособность операционной системы. Его название —Preinstallation Environment for Windows XP и WinPE [1].
WinPE представляла собой упрощенную версию Windows XP с возможностью установки и запуска с любого носителя достаточной ёмкости. Изначально система предназначалась для подготовки компьютера к инсталляции полноценной операционной системы и позволяла осуществлять предустановку ОС в автоматическом режиме. В поставку включался пакет драйверов сетевых карт и дисковых подсистем, которые поддерживаются Windows XP или Windows Server 2003. Обеспечивала доступ к общим сетевым папкам, включая доступ к Distributed File System (DFS). Включала в себя утилиты для форматирования и работы с разделами жесткого диска, позволяя получить доступ к его существующим разделам.
Отметим, что полный доступ возможно было получить и к разделам имеющим формат NTFS. Это, во многом, предопределило успех WinPE, так как кроме Windows XP и Windows Server 2000–2003, с этой файловой системой ни одна из операционных систем в полном объеме не работала.
Так же применив стандартные команды и утилиты Windows можно было восстановить работу системы и спасти данные. На этом возможности стандартной поставки Microsoft заканчивались, но ларчик который был открыт, оказался очень интересен многим.

Прошло немного времени после выхода WinPE для Windows XP и голландец Барт Лагервей (Bart Lagerweij) предложил для использования вместо нее свою альтернативу — BartPE [2]. Эта сборка операционной системы отличалась от WinPE возможностью расширения функций за счёт системы плагинов [3].
Плагины предлагалось использовать для интеграции самого различного программного обеспечения, изменения внешнего вида и работы операционной системы. Также была предложена возможность использовать собственноручно написаные плагины. Архитектура сборки оказалась настолько удачной, что количество расширений стало безудержно расти. Это позволило сборкам на BartPE вплотную приблизиться и внешне и функционально к традиционной Windows XP (Рис.1), выведя дистрибутив на первое место по популярности среди сборок Windows Live CD.

Рисунок 1. Внешний вид сборки BartPE с плагином XPE.

Внешний вид winpe от Yurkesha

С появлением BartPE создание собственного Live CD стало совсем простым делом. Вокруг BartPE образовалось большое количество сообществ разнообразных сборок, разрабатывающих плагины и улучшающих систему. Из основных, которые развиваются и обновляются до сих пор, можно отметить Ieshua's Live CD и (Y)PE by Yurkesha (CD) [4].
К сожалению, сам продукт уже очень давно не обновлялся. Существуют проблемы с созданием версий на основе Windows XP SP3. Но основной недостаток — для создания сборки основанной на Windows Vista или Windows 7 он не подходит, а необходимость в этом была . И вот на смену BartPE пришёл конструктор WinBuilder [5].

WinBuilder — это приложение для создания и полуавтоматической сборки Live-CD. Позволяет использовать в качестве исходной системы проекта дистрибутивы, начиная с Windows XP и заканчивая Windows 7 . Разрабатывается и поддерживается Питером Шлангом (Peter Schlang). До не давнего времени официальный сайт проекта был доступен по адресу [6], всю необходимую информацию возможно найти на указанном сайте .
В проекте для сборки используются специальные сценарии, которые выполняются последовательно один за другим, добавляя или изменяя компоненты и настройки будущей сборки операционной системы. За счет того, что система собирается с нуля, можно получить минимальный размер дистрибутива. Этот подход прямо противоположен BartPE, где сначала собирается полная система, а потом выкидывается все лишнее. Учитывая указанные недостатки BartPE, для создания системы воспользуемся конструктором WinBuilder.

Рассмотрим, что должен содержать дистрибутив “спасательной" системы, с учетом минимально необходимых задач администрирования:

  1. Возможность загрузки с сетевого сервера, USB, CD-ROM;
  2. Работа с разделами жесткого диска;
  3. Подключение к сетевым дискам для сохранения информации;
  4. Антивирусные утилиты;
  5. Работа с загрузчиками операционных систем;
  6. Восстановление данных;
  7. Сброс пароля Windows.

Существует огромное количество готовых к использованию сборок на все случаи жизни. Для поставленной задачи можно выбрать понравившуюся. Но используя сторонний дистрибутив, конечно нельзя на сто процентов гарантировать целостность и сохранность ваших данных. В связи с этим, собранный лично, дистрибутив системы будет более безопасен.
Для самостоятельной подготовки сборки понадобится дистрибутив Windows 7 с интегрированным с пакетом исправления, полный комплект WAIK for Windows 7 and Windows 2008, дистрибутив WinBuilder и, конечно, комплект необходимых драйверов [7]. WinBuilder может сам запустить виртуальную машину с созданным live–CD образом системы во встроенном QEMU. Для полного тестирования готовых сборок рекомендуется установить VirtualBox [8]. Все действия можно проводить на компьютере с установленной Windows Vista и более поздними версиями операционных систем. Загрузим из сети Интернет все необходимые компоненты, а затем выполним последовательно следующие действия:

  1. Копируем все файлы с установочного диска или образа в папку на жесткий диск, например c:\win7lv;
  2. Установим WAIK;
  3. Распакуем WinBuilder в папку c:\winbuilder. Внимание: при распаковке многие антивирусы, например Антивирус Касперского и Microsoft Essential, начинают подавать сигналы тревоги проверяя сам сборщик или его сценарии, поэтому рекомендуется добавить эту папку в исключения или отключить их на время;
  4. Распакуем комплект драйверов в папку c:\x86\drivers. Архивы самих драйверов 7z распаковывать не надо. При необходимости добавить недостающие драйвера, просто скопируйте наборы *.inf,*.sys,*.dll и *.exe в эту папку. EXE-файлы инсталляторов копировать не надо.

Рисунок 2. Выбор скриптов для установки.

winbuilder

Рисунок 3. Загрузка и обновление скриптов для сборщика Wibuilder.

Загрузка скриптов

Обычно процесс загрузки занимает не очень много времени. Об окончаним загрузки сигнализируют включенные галочки в панели слева главного окна программы. Если все сценарии скрипты, то можно переходить к сборке дистрибутива. В противном случае придётся удалить из папки с утилитой (c:\winbuilder) всё, кроме неё самой, и заново повторить загрузку. Можно попробовать еще раз повторить загрузку, но без очистки папки. Это позволит сэкономить время и трафик, но не гарантирует дальнейшей правильной работы. Так же необходимо обратить внимание на то, что если в Вашей системе включен UAC, запускать WinBuilder необходимо исключительно с правами администратора. Еще один важный момент — во время работы конструктору потребуется вызывать консольные утилиты из комплекта WAIK. Чтобы обеспечить ему эту возможность есть два пути.

Первый путь. Добавить в переменные окружения рабочие пути WAIK:

  1. Скопировать из папки C:\ProgramFiles\WindowsAIK\Tools\PETools\ файл pesetenv.cmd в папку c:\winbuilder;
  2. Заменить в нём относительные пути к утилитам (%

Второй путь. Скопировать необходимые файлы:

  1. Из папки C:\ProgramFiles\WindowsAIK\Tools\x86\ файлы bcdboot.exe,imagex.exe,wimgapi.dll,wimmount.inf,wimmount.sys и wimserv.exe в папку C:\winbuilder\Projects\Tools\Win7PE_SE\x86\;
  2. Из папки C:\Windows\System32 файл bcdedit.exe в папку C:\winbuilder\Projects\Tools\Win7PE_SE\x86\. Внимание: если файла bcdedit.exe нет по этому пути, его необходимо искать в папке C:\Windows\winsfx\.

Перейдем к настройке WinBuilder. Запустим приложение, нажимаем кнопку Tools-Language и переключаем на русский язык. Интерфейс приложения, к сожалению, переведен не полностью. Закрываем эту вкладку и нажимаем на кнопку Ресурс, расположенную в правой части окна. В разделе Рабочие каталоги указываем путь к папке с файлами дистрибутива Windows 7 — c:\win7lv, целевой каталог и iso файл. Затем выбираем пункт меню Drivers-Driver Integration и нажимаем на кнопку Explore. В появившемся диалоговом окне выберем папку с драйверами. Ею, в данном случае, является папка c:\x86\drivers. В VirtualTest устанавливаем флаг в пункте VirtualBox Emulation, это позволит вызвать установленный VirtualBox. Если сборка происходит на системе Microsoft Vista, то необходимо в разделе Images Configuration отметить пункт Always use WIMMount Driver (very slow). Это позволит использовать старую утилиту монтирования файлов imagex.exe, которая входит состав Microsoft Vista.
На этом подготовка окончена, перейдем к созданию пробной сборки дистрибутива.

Перед тем как начать добавлять дополнительные приложения рекомендуется на данном этапе проверить работу сборщика. Для этого нажмем кнопку Play .

Рисунок 4. Внешний вид системы по умолчанию.

Внешний вид системы по умолчанию

  • Apps-HDTask . Используется для работы с разделами жесткими дисками восстановление данных и восстановление загрузки операционных систем;
  • Apps-Security. Обеспечивает защиту от вирусов и сброс пароля пользователей Windows в случае необходимости;

Наконец, нажмем на кнопку Загрузить. После завершения процесса загрузки перейдем в главное меню приложения и выберем, доступные теперь компоненты и снова запускаем сборку образа. Далее выполним проверку и убедившись, в правильной работе всех приложений перейдем к размещению на сервере установки. Заметим, что полученный iso-образ можно использовать по назначению – записать CD диск.

В первой части статьи [10] дано подробное описание технологии загрузки wim-образов систем. Кратко напомню. При загрузке по сети файл pxelinux.0 создает и отбражает меню доступных для загрузки систем. Меню описывается файлом конфигурации pxelinux.cfg. Для систем Window Vista и старше загружаемым файлом является «pxeboot.0» (переименованный «pxeboot.n12»). Он в свою очередь загружает «bootmgr.exe» – Windows Boot Manager (диспетчер загрузки) и запускает его на выполнение.Тот запрашивает у сервера файл BCD – boot configuration data (хранилище параметров запуска) и на основе полученных данных «bootmgr.exe» производит загрузку «boot.sdi» и «boot.wim» – образа Windows PE2.0. Все выше перечисленные необходимые файлы необходимо взять из созданного дистрибутива winpe7.iso.
Для настройки выполним последовательно:

1.Создадим новую секцию winpe7 в файле конфигурации меню /srv/tftpboot/pxelinux.cfg.

label winpe7
menu label ^WinPE WIN7
kernel sources/pxeboot.0

2.Монтируем созданный iso с WinPE7.

mount -o loop /home/iso/winpe7.iso /home/temp/pe7

3.Копируем файл /home/temp/pe7/sources/boot.wim в /srv/tftpboot/sources/.

Если сервер уже был настроен на сетевую загрузку Windows 7 [10], файлы pxeboot.0, bootmgr.exe и boot.sdi копировать нет необходимости. В противном случае для более подробного разъяснения обратитесь к 9. Загружаемся с сети и проверяем созданный образ.

Существует большое количество «загрузочных» дискет для выполнения разнообразных операций с компьютером. К их числу относятся дискеты для перепрошивки BIOS, HDD и т.д. Обычно они распространяются в виде файла формата IMA. Это ни что иное, как расширение дискетного образа, стандартной загрузочной дискеты Windows 98.
Специально для этого формата в комплекте syslinux существует сетевой загрузчик memdisk, который по умолчанию располагается в /usr/share/syslinux/.
Его можно использовать для загрузки любого образа ima.
Приведем пример использования этой утилиты. Для этого добавим в загрузку образ ima содержащий FreeDos:

1.В секцию freedos в файл конфигурации /srv/tftpboot/pxelinux.cfg добавим следующий текст:

label freedos
menu label ^FreeDOS+MHDD util
kernel memdisk
append initrd=pe/freedos.ima
2.Копируем файл /usr/share/syslinux/memdisk в корень tftp сервера (/srv/tftpboot/).
3.Скачиваем базовый образ FreeDOS по ссылке [12].
4.Создаем папку /srv/tftpboot/pe/ и копируем туда файл freedos.ima.

Теперь можно проверить загрузку выбрав в меню пункт FreeDOS+MHDD util (Рис.5).

Рисунок 5. Загрузка Freedos.

Загрузка Freedos

Полученная сборка Windows 7 PE будет неплохо справляться с поставленными задачами:очистить компьютер от вирусов, восстановить загрузчик операционной системы или информацию.
Но, как показывает практика, скорее всего понадобиться добавить в сборку свои собственные файлы и приложения. Это можно сделать также при помощи сценарие. Большой набор готовых скриптов располагается по адресу [4] и [9]. Там же, на форуме можно найти различные дополнения к WinBuilder и методы работы с ними. Дополнять и улучшать созданную систему можно постоянно.

средства развертывания комплекта оценки и развертывания Windows (adk) и adk Add WinPEвключают служебные программы командной строки, которые упрощают создание загрузочного носителя WinPE.

    создает рабочий набор файлов WinPE использует рабочий набор файлов для создания загрузочного носителя WinPE. Макевинпемедиа может создавать ЗАГРУЗОЧНЫЕ USB-накопители WinPE, виртуальные жесткие диски или ISO, которые позволяют загружать виртуальные машины или записывать их на DVD-диски или компакт-диски.

если вы используете ADK для Windows 10 версии 1803 или более ранней, Windows PE включается в ADK при выборе варианта Windows среды предустановки во время установки и не требует отдельной надстройки.

Шаг 1. Создание рабочих файлов

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

Убедитесь, что на компьютере установлена надстройка ADK и ADK WinPE.

Запустите среду средств развертывания и создания образов с правами администратора.

выполните команду copype , чтобы создать рабочую копию Windows PE-файлов. Дополнительные сведения о Copype см. в разделе Параметры командной строки Copype.

Шаг 2. Настройка WinPE

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

Распространенные настройки

Добавьте обновление. Если вы собираетесь захватить ФФУ в конце лаборатории, примените KB4048955 к образу WinPE. Дополнительные сведения см. в разделе: WinPE: mount и customize.

Добавление видеодрайвера или сетевого драйвера. (WinPE включает универсальные видеодрайверы и сетевые драйверы, но в некоторых случаях для отображения экрана или подключения к сети требуются дополнительные драйверы.) Дополнительные сведения см. в разделе WinPE: Add Drivers.

Добавьте поддержку сценариев PowerShell. дополнительные сведения см. в разделе WinPE: добавление поддержки Windows PowerShell в Windows PE. Скрипты PowerShell не включены в эту лабораторию.

Установите для схемы управления питанием значение Высокая производительность. Ускоряет развертывание. Обратите внимание, что в нашем примере сценария развертывания эта схема уже задана автоматически. См. раздел WinPE: подключение и настройка: высокая производительность.

Оптимизация WinPE: рекомендуется для устройств с ограниченным ОЗУ и хранилищем (например, 1 ГБ ОЗУ/16 ГБ). после добавления драйверов или других настроек в Windows PE см. раздел WinPE: оптимизация и сжатие образа для сокращения времени загрузки.

Шаг 3. Создание загрузочного носителя

Теперь, когда у вас есть набор рабочих файлов, можно использовать макевинпемедиа для создания загрузочного носителя WinPE.

Создание загрузочного USB-накопителя WinPE

Подключите USB-накопитель к обслуживающему компьютеру.

Запустите среду средств развертывания и создания образов с правами администратора.

Необязательно Вы можете отформатировать ключ USB перед запуском Макевинпемедиа. Макевинпемедиа будет форматировать диск WinPE как FAT32. Если вы хотите хранить файлы размером более 4 ГБ на USB-накопителе WinPE, можно создать многосекционный USB-диск с дополнительным разделом, отформатированным как NTFS. Инструкции см. в разделе Создание многосекционного USB-накопителя .

используйте макевинпемедиа с /UFD параметром для форматирования и установки Windows PE на флэш-накопитель usb, указав букву диска usb key:

Эта команда переформатирует секцию.

Загрузочный USB-накопитель WinPE готов. Его можно использовать для загрузки ПК в WinPE.

Создание образа ISO, DVD или компакт-диска WinPE

используйте макевинпемедиа с /ISO параметром, чтобы создать ISO-файл, содержащий Windows PE-файлы:

Необязательно запишите DVD-диск или CD-файл. в обозревателе Windows щелкните правой кнопкой мыши ISO-файла и выберите записать образ диска > записать и следуйте инструкциям на экране.

Создание виртуального жесткого диска WinPE для использования с Hyper-V

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

если вы планируете запускать Windows PE в Hyper-V, вместо виртуального жесткого диска рекомендуется использовать формат ISO, чтобы ускорить установку virtual PC.

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

Создайте виртуальный жесткий диск (VHDX):

Подготовьте диск с помощью макевинпемедиа:

Устранение неполадок

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

Для загрузки ПК, поддерживающего режим UEFI: в меню загрузки встроенного по выберите загрузочные файлы вручную: \ EFI \ Boot \ BOOTX64. Интерфейс.

если компьютеру требуется загрузка драйверов хранилища или видеодрайверов, попробуйте добавить эти же драйверы к образу Windows PE. Дополнительные сведения см. в разделе WinPE: подключение и настройка.

Если компьютер не подключается к сетевым расположениям, см. раздел Сетевые драйверы WinPE: инициализация и добавление драйверов.

Перед системными администраторами стоит задача эффективно обслуживать парк вычислительной техники, поэтому каждый системный администратор должен стремиться автоматизировать свою работу и рутинные задачи. Сейчас я хочу начать цикл статей по автоматизации развёртывания ПО в гетерогенной среде, где рабочие станции пользователей работают по понятным причинам под управлением ОС Windows, а часть серверов под различными свободными системами типа Linux или FreeBSD. За основу образа взята Windows PE версия 3.1, что соответствует Windows 7 или Windows Server 2008 R2, т.к. Windows 7 - это наиболее ходовая ОС на рабочих станциях.

Все эксперименты по сборке и проверки работоспособности образов я буду проводить на виртуальных машинах VirtualBox и QUEMU/KVM.

Создание образа Windows PE

Windows Preinstallation Environment (Windows PE), это такая усечённая версия Windows, предназначенная для установки полноценной ОС Windows. Windows PE нельзя рассматривать как полноценную ОС, т.к. на неё наложен ряд ограничений, в т.ч. и автоматическая перезагрузка через 72 часа работы, но как среда для резервного копирования, восстановление данных и подготовки ПК к переустановки системы она подходит как нельзя лучше. Поэтому прдлагаю снабдить нашу Windows PE некоторым набором утилит, которые нам очень помогут для спасения данных и повысят удобство работы.

Драйвер для VirtualBox

Копируем файлы VBoxWindowsAdditions-x86.exe или VBoxWindowsAdditions-amd64.exe в зависимости от вашйе системы со стандартного образа средств интеграции VirtualBox - VBoxGuestAdditions.iso.
VBoxWindowsAdditions-x86.exe /extract /D=C:\Drivers\VBox-x86
VBoxWindowsAdditions-amd64.exe /extract /D=C:\Drivers\VBox-amd64

Драйвер для QEMU/KVM

Распаковываем их в:

При этом необходимо удалить все драйверы не связанные с нашей ОС. Аналогично вы можете подготовить и необходимые вам драйверы для интеграции в дистрибутив.

Сборка образа

Устанавливаем Windows AIK, и запускаем от имени администратора "Пуск" -> "Все программы" -> "Microsoft Windows AIK" -> "Командная строка средств развертывания".

Собирать будем образ x86, т.к. с образом amd64 всё происходит по аналогии, но по скольку Windows PE это усечённая версия Windows, x86 приложения работать в ней не будут, и такой образ будет годиться лишь для создания прединсталляционной среды.

Копируем загрузочный образ:

Для того, чтобы в будующем снять образ с системного диска, нам понадобится утилита imagex, копируем её:
xcopy "%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" C:\WinPE\x86\iso\
И создаём для неё список исключений (файлов, которые она не будет захватывать при копировании):

[ExclusionList]
\$ntfs.log
\$RECYCLE.BIN
\hiberfil.sys
\pagefile.sys
"\System Volume Information"
\RECYCLER
\Windows\CSC

[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf

xcopy "%ProgramFiles%\Windows AIK\Tools\x86\Servicing" C:\WinPE\x86\iso\Servicing /s
xcopy %windir%\system32\msxml6*.dll C:\WinPE\x86\iso\Servicing

Внесение изменений в образ Windows PE

Теперь отредактируем сам наш образ Windows PE, полный образ файловой системы, которая загружается в память находится в файле winpe.wim, который в готовом образе и установочном дистрибутиве находится перемещается в sources\boot.wim. Для его подключением воспользуемся утилитой dism

Подключаем образ Windows PE

dism /mount-wim /wimfile:C:\WinPE\x86\winpe.wim /index:1 /mountdir:C:\WinPE\x86\mount
dism /image:C:\WinPE\x86\mount /add-driver /driver:"C:\Drivers\KVM-x86" /recurse /forceunsigned
dism /image:C:\WinPE\x86\mount /add-driver /driver:"C:\Drivers\VBox-x86" /recurse /forceunsigned

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

Теперь копируем необходимый софт:

xcopy "%ProgramFiles(x86)%\Total Commander" "C:\WinPE\x86\mount\Program Files\Total Commander"
xcopy "%ProgramFiles(x86)%\12noon Display Changer" "C:\WinPE\x86\mount\Program Files\Display Changer"
xcopy "%ProgramFiles(x86)%\PuTTY" "C:\WinPE\x86\mount\Program Files\PuTTY"

Оформление

Копируем понравившуюся нам картинку рабочего стола:
xcopy %homepath%\Pictures\winpe_wp_800x600.bmp C:\WinPE\x86\mount\Windows\winpe_wp_800x600.bmp

Теперь для того, чтобы Total Commander, Display Changer и PuTTY можно было вызывать командами "totalcmd", "dc" и "putty", а не обращаться к файлам по полному пути, добавим пути в переменную "%Path%". Для этого нам понадобится ветка реестра System из системы Windows PE.

Можно открыть редактор реестра, в нём выбрать "Файл", "загрузить куст" и выбрать SYSTEM в C:\WinPE\x86\mount\Windows\System32\config\SYSTEM, а можно это сделать командой:

REG LOAD "HKLM\WinPE_SYSTEM" "C:\WinPE\x86\mount\Windows\System32\config\SYSTEM"
Далее идём в:
HKEY_LOCAL_MACHINE\WinPE_SYSTEM\ControlSet001\Control\Session Manager\Environment
и в праметр Path добавляем следующие строки:
%SystemRoot%\system32;%SystemRoot%;%PROGRAMFILES%\Sysinternals\;%PROGRAMFILES%\Total Commander\;%PROGRAMFILES%\Display Changer\;%PROGRAMFILES%\PuTTY;
REG LOAD "HKLM\WinPE_DEFAULT" "C:\WinPE\x86\mount\Windows\System32\config\default"
REG ADD "HKLM\WinPE_DEFAULT\Control Panel\Desktop" изменяем параметр "Wallpaper" на путь к нашему файлу "%systemroot%\winpe_wp_800x600.bmp"
И выгружаем WinPE_DEFAULT

Пользовательский реестр находится в NTUSER.DAT:
c:\WinPE\x86\mount\Users\Default\NTUSER.DAT

После внесения всех необходимых изменений, отключаем образ и сохраняем в нём изменения командой:

Если вы допустили где-то ошибку, то можно отключить образ без сохранения изменений, в таком случае замените команду /commit на /discard.

Создание ISO-образа Windows PE

Теперь настало время собрать загрузочный образ системы Windows PE. Копируем winpe.wim в директорию нашего будующего образа системы в качестве загрузочного образа:
После этого загружаемся и проверим, что у нас получилось, вставив полученный iso-файл в виртуальный привод виртуальной машины.

Работа в среде Windows PE

После выполнения команды wpeinit, система должна опознать все устройства, и в случае, если у вас установлены драйверы на сеть и у вас работает DHCP, то сеть должна заработать автоматически.

КДПВ

Здравствуйте. Сегодня я расскажу как можно создать единый установочный носитель с множеством разных версий Windows не прибегая к использованию стороннего ПО. Таким образом вы будете полностью понимать какие манипуляции мы выполняем.

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

Кому интересно — прошу под кат.

Без хакинга эти имена не поменять. Для чего это может понадобиться? Да для того, чтобы иметь несколько дистрибутивов Windows на одной флешке! Ведь кто-то не переваривает Win8, ему Win7 ставь, а кто-то хочет систему поновее и пошустрее.

Раньше я особо не заморачивался и просто скопировал эти файлы и папки с одного установочного ISO-шника (скажем, Win 8.1 x64). Переименовал [sources] в [sources_w8x64] . Потом покопировал с остальных ISO-шников только [sources] , попутно переименовывая их. И всё. Больше никаких телодвижений кроме записи загрузочного сектора и активации раздела флешки я не делал. В результате у меня была приблизительно такая структура файлов на флешке:

Когда надо было установить какую-то из систем, я просто переименовывал соответствующие папки так, чтобы файлы требуемой Windows были в папке [sources] .

Эти обстоятельства послужили тригером к решению:

Конечно, в этом можно найти определённую логику: такой подход позволяет не распаковывать ISO-шки, а положить их в отдельную папку на флешке… Но надо поддерживать кучу других файлов…
Короче, это не наш путь.

Мы не будем играться с монтированием ISO, а просто разместим файлы для загрузки на установочном носителе. Но не просто перенесём эти файлы с установочных ISO (как было до этого), а немного переделаем их структуру так, чтобы можно было просто выбирать версию Windows для установки, не делая больше никаких рутинных действий (см. предысторию).

  • один файл огромного размера
    • нельзя использовать FAT32 , а следовательно и UEFI
    • невозможно впоследствии использовать флешку меньшего объёма пропустив копирование ненужных дистрибутивов

    One more thing

    Делать мы всё будем руками и, как было обещано, без стороннего ПО. А то есть куча разных прог для создания супер мега крутых мультизагрузочных дисков, но толком не ясно что они делают и как. А у нас план — без стороннего софта и с минимальным вмешательством!

    Подготовка флешки

    Определитесь с файловой системой

    Выбор-то и не большой:

    Вот и получается:
    обязательно нужен UEFI — FAT32, не обязательно или не нужен вовсе — NTFS.

    Отформатируйте флешку в выбранную вами ФС.
    Примечание: если ваша флешка уже имеет нужную ФС, то форматировать её необязательно. Но я бы всё-таки отформатировал ;)

    Сделайте раздел активным

    Это нужно для того, чтобы компьютер мог загрузиться с него (ну, или хотя бы попытаться. ).
    Тут есть различие между USB-HDD и флешками .

    Для USB-HDD это можно сделать так:
    Откройте оснастку Управление дисками (diskmgmt.msc). Щёлкните правой кнопкой мыши по нужному разделу своего USB-HDD и выберите "Сделать раздел активным". Если этот пункт контекстного меню неактивен — значит раздел уже активен.

    Для флешки этот вариант не пройдёт. Тут пункт контекстного меню "Сделать раздел активным" будет всегда неактивен. Поэтому нужно использовать универсальный способ:
    Откройте Командную строку (cmd.exe). Выполните такие команды:

    Пример активации раздела с помощью DiskPart

    Теперь ваша флешка является загрузочной. Но она пока пуста. Самое время наполнить её смыслом .

    Наполнение дистрибутивами

    Файлы диспетчера загрузки Windows

    Нам нужен набор файлов менеджера загрузки. Это:

    Я скопировал эти файлы из самого свежего дистрибутива — Windows 10 x64 (Threshold 2).

    Дистрибутивы

    Файлы дистрибутива находятся в [sources] . Значит надо создать структуру папок, содержащую [sources] из разных версий Windows под разными именами. Эту структуру можно делать как захочется. Но важно потом соблюдать соответствие путей. Я сделал так:

    Теперь в каждую из этих папок надо скопировать содержимое [sources] из соответствующих ISO-шников. До сих пор на флешке было занято лишь несколько десятков МиБ . А теперь — несколько ГиБ .

    Настройка

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

    Помните, раньше мы копировали файлы диспетчера загрузки? Теперь нужно отредактировать файлы данных конфигурации загрузки. Это:

    Редактируем BCD

    Сначала включим отображение меню. И уберём таймаут, чтобы оно отображалось столь угодно долго до совершения выбора пользователем (мы ведь не просто загружаемся, а систему устанавливаем! Выбор должен быть осознанным ◕‿◕).
    Чтобы сделать это выполните команды:

    где <буква_диска> здесь и далее — ваша флешка.

    Дальше будем добавлять пункты установки для каждой из систем. Сначала выполним команду
    bcdedit /store <буква_диска>:\boot\bcd /enum
    чтобы узнать значение device и osdevice пункта по-умолчанию. Они будут приблизительно такими:

    Параметр device определяет устройство, на котором лежит \windows\system32\boot\winload.exe (это значение указано в параметре path ).
    Параметр osdevice определяет устройство, на котором лежит \windows (это значение указано в параметре systemroot ).

    В нашем случае значения device и osdevice состоят из пути к WIM-образу системы (в данном случае WinPE), который загружается в оперативную память (ramdisk). После запятой указан GUID записи, которая определяет параметры устройства, с которого будет загружаться WinPE (в нашем случае — ramdisk). На неё можно взглянуть подробнее:

    Ничего особенного. Будем использовать эти же параметры устройства для других пунктов загрузки.

    boot.sdi — Это по-сути образ пустого NTFS-тома. А в этот том уже монтируется образ из boot.wim .

    Поскольку пункт по-умолчанию уже полностью настроен (кроме значений device и osdevice ), то мы просто будем его копировать и изменять.

    Добавление пунктов

    bcdedit /store <буква_диска>:\boot\bcd /set > osdevice ramdisk=[boot]\<путь к дистрибутиву>\boot.wim,>

    Здесь приведено несколько примеров создания новых пунктов загрузки на основе пункта по-умолчанию.
    Не копируйте тупо команды отсюда! У вас будут другие GUID-ы. Эти примеры только чтобы понять что к чему.

    Завершение редактирования BCD

    После того, как все пункты добавлены удаляем пункт по-умолчанию:
    bcdedit /store <буква_диска>:\boot\bcd /delete

    Редактируем BCD для UEFI

    Если вам нужна загрузка по UEFI, то вам нужно также отредактировать другое хранилище конфигурации загрузки (то, которым руководствуется BootMgFw.efi ).

    Тут всё точно так же как и там, за исключением пути к файлу BCD .
    Т.е. вместо
    bcdedit /store <буква_диска>:\boot\bcd
    следует использовать
    bcdedit /store <буква_диска>:\efi\microsoft\boot\bcd .

    Нельзя просто так взять

    Примечание. Вы не можете просто так взять и скопировать \boot\bcd в \efi\microsoft\boot\bcd ! Они должны различаться как минимум параметрами path во всех пунктах, включая .

    \windows\system32\boot\winload.exe vs \windows\system32\boot\winload.efi
    \boot\memtest.exe vs \efi\microsoft\boot\memtest.efi

    Update
    Посредством UEFI могут загружаться все 64-битные версии Windows NT 6.0+, а из 32-битных — только Windows 8+.
    Кроме того, в пунктах установки ОС, предшествующих Windows 8, не должно быть параметра IsolatedContext со значением Yes. Иначе, у вас просто не запустится среда предустановки этой системы (т.е. вы не сможете установить, например, Windows 7 x64 в режиме UEFI).

    Windows PE

    Итак, у нас при загрузке с флешки уже есть рабочее меню, где мы можем выбирать нужную версию Windows. Загрузитесь и убедитесь, что при выборе определённого пункта меню загружается соответствующая Windows PE.

    Проблема

    Мы ещё не всё сделали. Ведь, если попытаться установить какую-то из систем, то получим неприятный сюрприз:

    No Sources Error

    Варианты решения

    Вы уже можете установить Windows из своей флешки, вручную правильно запустив программу установки. Есть несколько вариантов.

    Решение

    Это всё хорошо, но мы же не хотим вручную запускать установку, правда? Хотим чтобы оно само. Значит надо сделать так, чтобы оно само запускало установку откуда надо.

    Варианты автоматизации

    Рассмотрим запуск Windows PE, чтобы понять, как с минимальным вмешательством заставить её выполнять то, что нам нужно.
    В параметре реестра HKLM\SYSTEM\Setup\CmdLine указано первое приложение, которое выполняется после запуска WinPE. Это winpeshl.exe . Оно делает всякие полезные вещи, как то:

    1. Включает фоновую картинку (запуск WallpaperHost.exe )
    2. Проверяет, есть ли рядом файл winpeshl.ini . Если есть — выполняет из него команды.
    3. Инициализирует PNP
    4. Если файла winpeshl.ini не было — пытается запустить одно из приложений (в порядке приоритета):
    5. X:\$Windows.

    Нам нужно выполнить свой сценарий, который найдёт на флешке нужный файл и запустит его. Как видите, у нас не один вариант:

    • добавить файл сценария и winpeshl.ini с командой на запуск cmd.exe для выполнения нашего сценария
    • удалить/переименовать X:\setup.exe и отредактировать startnet.cmd

    Я продемонстрирую вариант только с добавлением файлов (минимальное вмешательство, да).

    Модифицируем boot.wim

    На примере дистрибутива Windows 10 x64.
    Итак, нам нужно редактировать содержимое тома X: , которое монтируется из boot.wim . Сначала узнаем индекс образа для монтирования:

    Нам нужен не чистый Windows PE, а установочный — Windows Setup. Т.е. индекс — 2.
    Ещё нам нужно создать папку, куда будем монтировать образ. Я создал C:\mnt .

    Теперь, как и запланировали, копируем в C:\mnt\Windows\System32\ файлы winpeshl.ini и свой файл сценария (я назвал его runsetup.cmd ).

    А за тем, чтобы файлы winpeshl.ini и runsetup.cmd были универсальны для всех дистрибутивов Windows NT 6.0+. Т.е. их не нужно отдельно модифицировать под установку Win7, Win8 и т.п. Путь к папке дистрибутива определяется автоматически.

    image

    Также добавлен простой способ запуска Восстановления системы, т.к. из-за прямого запуска \sources\setup.exe вместо X:\setup.exe мы теряем страницу:

    Разница только в том, что в нашем случае мы язык выбираем уже после запуска установки Windows или Восстановления системы. В оригинальных ISO образах X:\setup.exe сообщает языковые настройки запускаемым через него приложениям.

    Внимание! В предоставленном мной runsetup.cmd путь к программе установки определяется по шаблону <буква_флешки>:\\<путь_и_префикс_к_папкам_дистрибутивов>_<версия>_<архитектура>\setup.exe
    (строка %RamdiskSourceDrive%\%WinDistAfx%_%WinVerAfx%_%WinArchAfx%\setup.exe ). Т.е. в моём случае сценарий будет формировать пути (в зависимости от того, из какого дистрибутива был запущен) наподобие:

    • D:\WinDists\Win_7_ia32\setup.exe
    • D:\WinDists\Win_10_x64\setup.exe

    Если вы создавали на флешке другую структуру папок и их названий — сделайте соответствующие изменения.

    Осталось отмонтировать образ с сохранением изменений:

    Готово! Теперь нужно повторить эти действия для остальных boot.wim . После этого у вас на флешке будут все желаемые дистрибутивы, которые вы сможете просто выбирать из меню и продолжать установку как будто на флешке только одна версия Windows!

    Чего бы улучшить?

    Тут ещё несколько советов по улучшению вашей установочной флешки.

    Пропуск ввода ключа продукта и выбор любой редакции Windows

    Для этого нужно поместить файлик ei.cfg рядом с программой установки

    Помещать нужно в папку откуда запускается setup.exe . Постольку у нас он запускается с флешки, а не с ramdisk-а ( boot.wim ), то и кладём ei.cfg в папки дистрибутивов на флешке. (+1 преимущество от запуска установки прямо с флешки, вместо запуска с ramdisk-а с параметром /installFrom ).

    Запуск приложения реального режима из меню Диспетчера загрузки Windows

    Таким образом можно сделать возможность циклического перехода из одного меню в другое без перезагрузки компьютера. И уже не важно какой из загрузчиков был запущен первым: BOOTMGR или GRLDR .

    Прогрессбар при загрузке boot.wim на ramdisk

    В новейших BootMgr сделали загрузку образа boot.wim на ramdisk без анимации. Т.е. просто выводится статический логотип Windows и всё, ждите. Можно вернуть прогрессбар, как было раньше. Он хоть будет давать информацию о степени загрузки WinPE в оперативную память.

    Подробный вывод загружаемых файлов

    Это в дополнение к предыдущему украшательству. Работает по Windows 7 включительно. В Windows 8+ майки это выпилили почему-то (не даёт эффекта).

    Применив предыдущие два украшательства прикольнее всего грузится Windows 7. Но это всё — баловство.

    новая сборка windows 10

    Комплект windows adk для windows 10

    Во второй части мы с вами обезличили все персональные данные Windows 10 redstone и выключили его в режиме OOBE (out of box experience). Теперь нам с вами нужно из данной виртуальной машины получить wim образ, который мы и будем потом интегрировать в наш дистрибутив.

    Для решения данной задачи нам необходим комплект windows adk для windows 10, и некоторые его утилиты.

    • WinPE > урезанная версия операционной системы с нее мы будем загружаться.
    • ImageX > утилита для захвата образа wim

    Вот как это выглядит на схеме, мы загружаемся с загрузочной флешки или ISO с средой WinPE Windows 10, на нашу виртуальную машину (Ту которая выключена, у вас это может быть эталонный компьютер), и с помощью командной строки и утилиты imageX захватываете образ wim. Данный образ wim по сути и будет вся ваша система, которую вы до этого подготовили для создания образа с Windows 10 redstone.

    Данный дистрибутив вы можете установить либо на другой компьютер или другую виртуальную машину, не на ту что мы запечатали

    Комплект windows adk для windows 10

    Недавно же мы с вами устанавливали windows 10 redstone, у нее версия была 1607.

    Комплект windows adk для windows 10-2

    В итоге вы скачаете маленький файл, полтора мегабайта, это онлайн установщик windows 10 adk

    windows 10 adk

    Запускаете adksetup.exe и у вас открывается окно мастера установки комплекта windows adk для windows 10. Вы можете изменить каталог установки, либо вообще просто его скачать, для дальнейшего развертывания. (Скачайте комплект средств для развертывания и оценки Windows 10 для установки на другом компьютере) Я оставляю как есть и буду ставить себе на компьютер.

    windows 10 adk-2

    Говорим нет, так как нет необходимости принимать участие в программе Microsoft.

    windows 10 adk-3

    Соглашаемся с лицензионным соглашением ADK и жмем принять.

    windows 10 adk-4

    Выбираем два компонента:

    • Средства развертывания
    • Среда предустановки Windows PE

    Жмем установить. Учтите, что потребуется доступ к интернету и будет скачано, порядка 3,5 гигабайт.

    windows 10 adk-5

    Начнется процесс скачивания ADK.

    скачать windows adk windows 10

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

    комплект windows adk для windows 10-3

    Открываем кнопку пуск и находим вот такой пункт Windows kit

    • Диспетчер установки
    • Среда средств развертывания

    Следующим шагом у нас с вами будет создание ISO Образа с Windows PE, с помощью которой мы будем загружаться на эталонном компьютере, для снятия образа операционной системы.

    комплект windows adk для windows 10-4

    Создаем winpe для windows 10

    Наша задача с вами создать ISO образ содержащий среду предустановки winPE для десятки, для этого открываем от имени администратора Среду средств развертывания. Для этого щелкаем правым кликом по ярлыку, далее пункт Дополнительно > Запуск от имени администратора.

    winpe windows 10

    Так как у меня будущая сборка имеет архитектуру x64, то я ввожу вот такую команду

    где c:\winpe это создаваемая папка на диске С:, а amd64 указание архитектуры

    Для 32 битных систем команда выше, там параметр x86. В результате выполнения нужной команды, у вас в папке winpe, будет скопирована вся структура каталогов, необходимая для создания загрузочного ISO с winPE.

    winpe windows 10-2

    Перейдя на диск C: вы увидите в родительской папке вот такие три папки:

    У каждой из них свое назначение, об этом мы поговорим чуть ниже.

    winpe windows 10--3

    Теперь нам нужно еще до копировать необходимые утилиты в наш winPE, переходим в папку с установленным ADK.

    C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools

    Выбираете папку с вашей архитектурой, у меня это amd64. Переходите в папку DISM и копируете из нее вот эти два файла:

    Читайте также: