Windows PE (Bart's PE) на загрузочной USB-Flash или CD/DVD
[by  microsaint{at}gmail.com  microsaint.narod.ru]

Windows PE (Preinstallation Environment) - специальная, усеченная версия ОС Windows (2K XP 2003 Vista). Используется при установке системы, содержит ядро и минимальный набор утилит и сервисов, тем не менее позволяет запускать любые Win-exe-шники (без исталляции, служб и спец. драйверов) и обеспечивает доступ к сети LAN (иногда требуется установить драйвера для вашей сетевой карты) и к партициям на FAT, NTFS. Очень удобно использовать в качестве системы восстановления - запускать антивирус, работать с файлами на ЖД (восстановление при невозможности запустить локальную ОС), редактировать локальный реестр (подгружать кусты из файлов - c:\WINDOWS\system32\config\SAM и т.д.), изменять/обнулять пароли пользователей?

История создания WinPE:
WinPE изобретено MS специально для стадии установки ОС (оконный интерфейс). Естественно MS не обнародовала как собирать WinPE. Но как только оно появилось (в Win2K), энтузиасты смекнули что это очень удобная штука, так как занимает мало места (50-150Мб) и очень удобна при создании LiveCD для администраторов. Одним из главных таких энтузиастов стал Bart Lagerweij, отметившийся ранее: дискетой DOS с поддержкой LAN, утилитой по работе с MBR mkbt, своей процедурой создания загрузочных CD и т.д. Он создал свою систему сборки WinPE на основе дистрибутивного диска Windows - она представляет из себя систему загрузки ядра с развертыванием виртуального реестра. И организована как совокупность плагинов, которые по сути указывают какие файлы куда копировать и что добавить в реестр - так и добавляют любые утилиты и программы в WinPE. Существует множество модификаций WinPE ОС восстановления, но почти все они основаны на Bart's PE.

Видимо смерившись с таким положением дел, MS, начиная с Vista, предоставляют бесплатно свою систему сборки WinPE2 - Windows Automated Installation Kit (WAIK), статья о создании WinPE2 дистрибутива.
 
Но в этой статье речь пойдет о Bart's PE.

Начальная подготовка системы сборки Bart's PE:
  1. Качаем (или с оф-сайта) и распаковываем утилиту Bart's PE на c:\BartsPe
  2. Копируем мой плагин поддержки русского языка (основан на 25.10.2005 Yurkesha на базе susta76, добавлена поддержка русских шрифтов в оконных приложениях 22.08.08) и распаковываем его в c:\bartpe\plugin\
  3. Скачиваем и устанавливаем дополнительные плагины и приложения, если надо. В данном документе это не рассматривается.
  4. Вставляем диск с дистрибутивом той версии Windows, PE версию которой необходимо получить.
    Запускаем c:\bartpe\pebuilder.exe
    Указываем путь к источнику с дистрибутивом X:\ (где X-Ваш CD-Rom или путь до I386)
    Каталог назначения - BartPE
    Записать\создать ISO-образ ставим - Нет
    Проверяем что подключен плагин z_ruslang кнопка - Модули
    Жмем Создание сборки
На этом подготовку версии Bart's PE можно считать законченной. Все необходимые файлы находятся в c:\bartpe\BartPE, с ними и будем производить все наши дальнейшие действия.

Здесь не рассматривается вариант загрузки c флэшки iso-образа в память с последующим стартом оттуда WinPE, в котором участвует ramdisk.sys от Win2003 SP1. Об этом написано в BartsPE2USBRusToms.html 

Установка на CD/DVD:
Допустим корень директории из которой будет генерироваться *.iso находится в C:\BootCDRoot
  1. Копируем содержимое диретории c:\bartpe\BartPE\* в корень директории загрузочного диска C:\BootCDRoot\*. Должно получиться так - C:\BootCDRoot\I386.
    Переименуйте C:\BootCDRoot\I386 в C:\BootCDRoot\XPPE (четырьмя заглавными латинскими буквами, не больше и не меньше!)
    Проследите чтобы ВСЕ! имена файлов (кроме содержащихся в WINSXS) были в верхнем регистре. Если это не так, то выполните пункт 2, иначе переходите к пункту 3.
  2. Переименовываем ВСЕ! названия файлов в ЗАГЛАВНЫЕ буквы C:\BootCDRoot\XPPE\*. Это необходимо потому, что файловая система ISO9660/Joliet регистрозависима (с этим же возникают проблемы в menu.lst Grub4Dos в используемых путях - на флэшке с регистронезависимой FAT такой конфиг работать будет, а на загрузочном диске нет).
  3. Эту операцию легко выполнить в TotalCmd:
    1. Открываем директорию C:\BootCDRoot\XPPE
    2. Выбираем меню Команды-> Показать все файлы без каталогов (Ctrl+B)
    3. Выбираем меню Файлы-> Пакетное переименование файлов (Ctrl+M)
    4. Посредине открывшегося диалогового окна выбираем Регистр -> ВСЕ ЗАГЛАВНЫЕ
    5. Жмем кнопку Выполнить.
      Пункты 4 и 5 объясняют как поправить пути файлов-меток MS Win CD
      Если Вы используете больше одной версии BartsPE на одном диске (правда остается проблема с директорией Programs, но если использовать один и тот-же набор плагинов то все ОК), то необходимо переместить файлы-метки и поправить пути к ним в TXTSETUP.SIF. Если же нет оставляем их в корне и переходим к пункту 5.
  4. Редактируем сценарий загрузки C:\BootCDRoot\XPPE\TXTSETUP.SIF Заменяя:
    cdtagfile = "\win51ip"
    cdtagfile = "\XPPE\win51ip"
    cdtagfilei = "\win51ip"
    cdtagfilei = "\XPPE\win51ip"
    cdtagfilem = "\win51mp"
    cdtagfilem = "\XPPE\win51mp"
    spcdtagfilei = "\win51ip.sp3"
    spcdtagfilei = "\XPPE\win51ip.sp3"
    cd2tagfilei = "\win51ip2" cd2tagfilei = "\XPPE\win51ip2"
    I386 на XPPE менять нет необходимости, хотя многие уверяют в обратном.
  5. Копируем файлы-метки (из списка в пункте 3) из корня дистрибутивного диска Windows в C:\BootCDRoot\XPPE\
    WIN51IP.SP3, WIN51IP некоторых файлов может и не быть, их можно сделать самому 0-го размера.
  6. Редактируем в HEX-редакторе файл C:\BootCDRoot\XPPE\SETUPLDR.BIN заменяя I386 на XPPE. Именно поэтому мы использовали ровно 4 буквы.
    Grub4Dos умеет цепочно-грузить (chainload) загрузчики MS - ntldr, поэтому на данном пункте можно закончить подготовку директорий и перейти к созданию ISO-образа - пункт 6.

    Пример пункта меню в конфиг файле menu.lst Grub4Dos:
    title Barts PE Windows NT/2K/XP/2003 from CD/DVD
    find --set-root /CM_Boot.mrk
    chainloader /XPPE/SETUPLDR.BIN


    Для использования isolinux/syslinux (эти загрузчики не поддерживают chainloading ntldr) необходимо:
    1. Извлечь загрузочный образ (любой программой типа UltraISO MagicISO) оригинального загрузочного диска с инсталляцией Windows (лучше из того, с которого делали BartsPE). Или поищем на диске файл bootsect.bin - это и есть оно. И сохраним в файл C:\BootCDRoot\xppe.bin (расширение важно!) получим файл размером 2048 байт.
    2. Редактируем в HEX-редакторе этот файл. Заменяем I386 на XPPE.
    3. Добавляем пункт меню в isolinux/syslinux \boot\isolinux\isolinux.cfg:
      label 3
          kernel /xppe.bin
  7. Генерируем ISO-образ загрузочного диска с помощью утилиты mkisofs.exe:
    mkisofs -iso-level 4 -volid "CMMultiBoot" -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -boot-info-table -no-emul-boot -boot-load-size 4 -o CM_MultiBoot.iso C:\BootCDRoot
    В BartPE добавлен ключь -force-uppercase - он переводит все! имена файлов в верхний регистр при генерации *.iso, так что можно пропустить пункт 3, но Вам могут понадобиться файлы в нижнем регистре (допустим в батниках HirenCD) поэтому использовать его не рекомендуется.
Сравнить и увидеть изменения в оригинальных и измененных файлах загрузчика (setupldr.bin) и сценария загрузки (txtsetup.sif) можно в архивах Orig_BartPE_XPSP3Eng.zip и DVD_BartPE_XPSP3Eng.zip

Используйте в названиях директорий и при правке загрузчиков ЗАГЛАВНЫЕ буквы из-за регистрозависимости ISO9660.

Установка на USB Flash drive:

Для установки Bart's PE на мультизагрузочную флэшку по второму типу см. "Как это работает", которая описана ниже.
Тут идея в замене не I386 на XPPE (это работает только с CD), а minint на xppenv (это работает только с USB-Flash).
Если же вы используете одну версию BartsPE, то пропустите пункты 2 и 3, а в 1-вом переименуйте X:\I386 в X:\minint
  1. Копируем содержимое диретории c:\bartpe\BartPE\* в корень директории загрузочного диска X:\*. Должно получиться так - X:\I386. Переименовываем X:\I386 в X:\xppenv.
    Есть и другой способ - происталлировать файлы с помощью c:\bartpe\pe2usb.cmd. Подробно он описан здесь.
    Коротко: нажмите "1" и на запрос "Enter Source Path" введите расположение сгенерированных файлов Windows: C:\Program Files\pebuilder313\bartpe. Затем нажмите "2" и укажите букву флэш-брелока (к примеру, E:). Выполните установку, нажав "5", а затем "1". В конце процесса появится оповещение завершения "Installation completed". Получите директорию X:\minint.
  2. Копируем ntdetect.com в корень флэшки. Без Bootsect.bin грузится, но копируем его тоже на всякий случай.
  3. Редактируем в HEX-редакторе загрузчик setupldr.bin заменяя слова minint на xppenv (те  самые 6 букв из пункта 1).
  4. Файлы-метки - WIN51IP скопируйте в X:\xppenv \ и сделайте изменения в TXTSETUP.SIF (см. выше пункт 3), если используете больше одного BartsPE - работает и без изменения, видимо дистриб обращает внимание на метки, только когда грузимся с CD.
  5. Grub4Dos умеет цепочно-грузить (chainload) загрузчики MS - ntldr. Загружаем загрузчик MS ntldr из Grub4Dos:

    Пример пункта меню в конфиг-файле menu.lst Grub4Dos:
    title Recovery Console of Windows NT/2K/XP/2003 from USB
    find --set-root /CM_Boot.mrk
    chainloader /xppenv/setupldr.bin

    syslinux вообще не задействуем т.к. не поддерживают chainloading ntldr. И кроме того здесь мы играемся с директорией minint, а в бут-секторе есть возможность перенаправить только I386.
Сравнить и увидеть изменения в оригинальных и измененных файлах загрузчика (setupldr.bin) и сценария загрузки (txtsetup.sif) можно в архивах Orig_BartPE_XPSP3Eng.zip и Usb_BartPE_XPSP3Eng.zip

Использовать в названиях директорий и при правке загрузчиков ЗАГЛАВНЫЕ буквы необязательно из-за регистронезависимости FAT16/32/NTFS, которая будет на флэшке.

??Можно ли поиграться с I386, убрав из txtsetup.inf /minint??

Как это работает. Дополнительная информация.

Есть два типа загрузки Bart's PE:
  1. Загрузчиком MS ntldr (из директории minint или модифицированной xppenv) заchainload-инного из Grub4Dos (или другого загрузчика). Ограничение данного метода в том, что этот способ не работает с загрузочным CD! - видимо при загрузке с CD никакие директории кроме I386 не используются.
    Этот метод используется для USB-Flash, для CD/DVD не подходит!
  2. Загрузка установки дистрибутива (точно как загружается оф. дистрибутив Windows CD) из измененной директории I386.
    Этот метод используется для CD/DVD, для USB-Flash не подходит!
Также второй тип используется для изготовления мультизагрузочного диска с несколькими установочными дистрибутивами Windows на одном DVD, описано это на русском в ixbt_MuliBCD_Win_bootscriptor.html

Как происходит загрузка по пунктам с CD:
При загрузке с CD загрузчик не может использовать директории \cmdcons и \minint (в случае с WinPE), а используется директория I386 из которой грузится официальный загрузочный дистрибутивный диск MS Windows (в случае загрузки с USB флэшки все наоборот). Поэтому алгоритм загрузки следующий:
0. Из isolinux загружается модфицированный bootsect.bin (см. пункт 6), который в свою очередь находит файл загрузчик в ФС ISO9660 (поэтому с USB-flash FAT и syslinux этот вариант не работает, да и потому что не используются директории с 4мя буквами I386) передает загрузку ntldr - /XPPE/setupldr.bin. либо
    Из Grub4Dos сразу chainload-ится /XPPE/setupldr.bin
1. Далее тоже модифицированный /XPPE/setupldr.bin (правка I386 на XPPE) начинает работать с этой директорией - подгружает файл-сценария txtsetup.sif
2. Модифицированный txtsetup.sif говорит загрузчику где находятся файлы-метки дистрибутива (которые могут быть где угодно, но для исключения конфликтов разных версий windows на мультизагрузочном диске копируем метки не в корень, а в свои директории XPPE...2KPE).
3. Далее загружается Win PE.

Исходя из вышесказанного понятно, что можно делать загрузочный диск с несколькими Bart's PE от разных версий Windows, изменяя названия директорий и правя соответственно директории в загрузчике: XPPE 2KPE  

Как происходит загрузка по пунктам с USB-Flash:
0. Из Grub4Dos сразу chainload-ится X:\xppenv\setupldr.bin. Syslinux не умеет chainload-ить ntldr.
1. Модифицированный X:\xppenv\setupldr.bin (правка minint на xppenv) начинает работать с этой директорией - подгружает файл-сценария txtsetup.sif
2. Далее загружается Win PE.

Исходя из вышесказанного понятно, что можно делать загрузочный диск с несколькими консолями восстановления от разных версий Windows, изменяя названия директорий и правя соответственно директории в загрузчике: xppenv 2kpenv.

?  Кроме того видимо есть возможность загружать интерфейс установки дистрибутива Windows с Usb-flash из измененной директории I386. Найти в инете информацию - установка Windows с флэшки. ??

Дополнительная информация по теме:
Будьте внимательны с регистрами букв путей и файлов в конфигурационных файлах isolinux/syslinux и Grub4Dos при создании CD. Следите чтобы регистры в конфигах и реальных путей точно! совпадали, а то загрузчик не найдет необходимы файлов так как  ISO9660 регистрозависма .
Рекомендуется прочитать для понимания процедуры мультизагрузки следующие материалы!:
Изготовление мультизагрузочного диска с несколькими установочными дистрибутивами Windows на одном DVD, описано это на русском в ixbt_MuliBCD_Win_bootscriptor.html
Как самостоятельно сделать Bootable CD-ROM ixbt (подробно! рассмотрены типы эмуляции CD как FDD HDD elTorito)
Bart's way to create bootable CD-Roms - статья очень подробно описывает типы и создание загрузочных CD!
Установка BartsPE на флэшку в том числе с использованием Win2003 Ramdisk на русском Tom's Hardware BartsPE2USBRusToms.html 

Сайт создан в системе uCoz