В прошлых заметках я рассказывал о том, как загрузить WinPE XP по сети и установить из нее Windows XP. Теперь делаю WinPE на базе Windows 7
— Компьютер, с установленной Windows 7 🙂
— Достаточное место на HDD, со всеми потрохами этот процесс сожрал ~50Гб на диске.
— Образ Windows Automated Installation Kit (WAIK)
— WinBuilder — небольшая утилита, позволяющая автоматизировать процесс создания образа. О ней ниже.
— Чистый (!) образ установщика какой-нибудь одной версии Windows 7, сборки разной степени колхозности, а так же образы дисков все-в-одном (AIO) не подойдут. Скорее всего WinBuilder прекратит работу с какими-нибудь неудобоваримыми глюками. Поскольку я собрался делать образ x86 (32-разрядный), то и скачал Windows 7 Ultimate x86 с рутрекера.
— Универсальные наборы драйверов для сети, чипсетов и устройств хранения данных. О них ниже.
— Какая-нибудь виртуальная машина для тестирования полученного образа. У WinBuilder в комплекте есть QEMU, но желательно поставить VMWare, в нужный момент WinBuilder ее «подхватит», создаст свою виртуалку и запустит на ней образ
-cdrkit в Linux, для создания ISO-образа.
Перед установкой WinBuilder’а устанавливаем WAIK и распаковываем в отдельный каталог чистый образ установщика винды.
C:\PE
) удалить все, кроме файловBuilderSE.exe
, BuilderSE.ini
, winbuilder.chm
, WinBuilderN.chm
, перезапустить программу, а потом в открывшемся окне Download Center выбрать «Complete», снять и поставить галочку напротив Win7PE_SE (чтобы выделились все компоненты) и загрузить скрипты из репозиториев.
В отличие от описанного в статье оригинального WinBuilder’а, WinBuilder от TheOven умеет «подхватывать» пути к инструментам WAIK сам, поэтому дополнительные утилиты из WAIK в недра WinBuilder’а не надо.
Забавно, что когда я все это проделывал первый раз, глюка в плагине, который позволяет сменить обои на десктопе WinPE не было. А пока писал заметку, и поставил для повторного эксперимента чистый WinBuilder и перезалил плагины — он появился. Видимо, создатели что-то подправляли, и таки недоподправили 🙂 Так что если плагин падает с ошибкой Index of bounds (2) Set,%WallPaperFileName%=img0.%SB_PicFormatV%
, то надо открыть файл Projects\Win7PESE\Tweaks\1-wallpaper.script
Notepad++ или редактором Far и в строке 84 заменить =
(равно) на ,
(запятую).
Сначала в дереве слева выбираем Config source, рядом с полем Select Source жмем кнопочку с иконкой папки, выбираем каталог с распакованным образом инсталлятора Win7 и жмем Set Source.
Далее нажимаем кнопку Interface SE —> и в появившемся окне выбираем, какую сборку делаем, x86 или x64, остальное не трогаем, пусть указания на всякие десятки вас не смущает.
Далее можно, например, в разделе Main configuration подправить разрешение. Не советую сильно задирать, лучше наоборот поставить 800×600, все равно в WinPE будет встроена утилита, динамически меняющая разрешение.
Далее обязательно(!) заходим в Apps—>File Tasks —> File Find и снимаем галочку с этого пункта. Там скрипт для внедрения в образ утилиты Super Finder XT, но скрипт кривой, саму утилиту не скачивает, потому в процесс сборки вылетит с ошибкой о ненайденном файле.
Заходим в пункт Drivers, снимаем галку Audio (для экономии, нафиг нам в PE звук), зато ставим USB 3.0 Support (эта штука наоборот, часто встречается).
Качаем необходимые наборы драйверов отсюда. На сайте выбираем ОС и качаем те, что посвежее. Обычно нужны LAN, Chipset и Mass Storage.
Далее заходим в Drivers —> Driver Package Installer, ставим напротив него галку, жмем кнопку Explore в зависимости от типа сборки, и кладем пакеты в открывшуюся папку. Можно поставить галку Load drivers at startup, чтоб потом не пришлось вручную подгружать драйвера из загруженной WinPE, однако это может вызвать тормоза при загрузке.
Для предварительного тестирования все готово, проверяем, что стоит галка в пункте VirtualTest —> Best Emulation
Нажимаем кнопку Play в правом верхнем углу, и ждем. Первый раз может быть о-о-о-очень долго, дело в том, что программа попытается целиком распаковать образы WIM (7-zip’ом) из инсталлятора во временную папку, даже не на самой слабой машине это дело заняло минут 30. Правда, программа предусмотрительная, папку она за собой не чистит, так что при последующих сборках дело пойдет быстрее. Но не забудьте после того, как окончательно все настроили, сами почистить временные файлы, там их скопится ~20 Гб
Вот как раз момент, когда программа дошла до этой стадии, не смогла загрузить драйвер WOF (Windows Overlay File System Filter Driver), т.к. его в семерке и нет, и предложила распаковаться стандартным способом (7zip), но даже если и 7zip не возьмет WIM (а некоторые он не берет), то программа будет подключать WIM’ы с помощью DISM, хотя это будет и медленнее.
В моем случае, все удачно распаковывается.
В общем, идем есть печеньки, которые в радость, и/или смотреть АнтиЗомби (которая в сладость).
Ну вот, все получилось. Даже сеть поднялась, весело мигает огонечками утилита, и IP получен.
Теперь можно более тонко настроить образ под себя, тут уж все на ваше усмотрение — ходите по дереву проекта и выбирайте, что нужно, добавляйте и удаляйте компоненты, например .NET Framework, библиотеки Visual C++, программы. Можно как сократить размер образа, так и неимоверно его раздуть. 🙂
Для этих целей лучше всего подойдут портабельные версии программ, обычные могут напихать свои библиотеки и компоненты в разные места, задолбаешься в кучу собирать. И в Реестр тоже могут понаписать лишнего. Посему, приложения подойдут не все, а я для примера выберу Far, которого мне в таких сборках очень не хватает. Пусть он и не совсем «портабельный», но работать будет вполне неплохо.
Вообще способов три. Первый — это поискать нужный скрипт от WinBuilder’а, добавить его в проект, отметить нужные опции и пересобрать WinPE. Второй — примонитровать WIM-образ с помощью DISM и вручную добавить туда все нужное. Я же воспользуюсь скриптом, входящим в состав WinBuilder’а.
1. Скачиваем и ставим Far.
2. Копируем в отдельный каталог содержимое директории, куда он поставился.
Тут я скажу, что новый Far со всеми плагинами весит аж 30 с гаком Мб, потому я взял Far постарше, он весил всего 8, а повыкидывав все лишнее, можно ужать его до 3.
3. Архивируем содержимое каталога в архив 7zip.
4. Теперь идем в дереве Win7PE SE —> Utils —> PC Packed
Здесь указываем расположение нашего 7zip-архива, имя экзешника, по нажатию кнопки Options будут доступны еще ряд настроек будущего плагина.
Когда все готово, жмем кнопку Goooo.
После того, как плагин отработает, в дереве проекта должна появиться новая папка AppsMy, а внутри плагин, который добавит приложение к сборке WinPE. Если все сделано правильно, то появятся опции, откуда загружать программу, из образа WIM или с CD-диска (в выпадающем списке), возможность создать ярлык в автозагрузке, ярлык запуска от имени администратора и т.д.
Я случайно добавил кнопку Download. 🙂 Но при желании можно прописать в плагине вручную необходимые адреса, и пользователи смогут скачивать необходимые файлы прямо из WinBuilder’а.
Пересобираем WinPE и смотрим, что получилось.
И Far запустился
В меню, правда, получилось не очень симпатично, но это довольно легко исправить — надо просто закрыть WinBuilder, найти свой плагин, и перенести его в удобную директорию, например в Apps — File Tasks. Кстати, нажав на кнопку с гаечным ключом, можно попасть в редактор плагинов, где можно подправить интерфейс в визуальном редакторе, изменить настройки или код плагина.
Минус — дистрибутив WinPE получается довольно объемный, 250 — 300 Мб, зато без бубна внедряются дрова и софт.
1. Создаем сетевую шару. В
/etc/samba/smb.conf
прописываем:
[win7] path=/home/pxe/tftp/distrib/windows/win7 public=yes browsable=yes read only=yes guest ok=yes
Рестартируем samba-сервер
2. Распаковываем ISO с дистрибутивом, копируем файлы в /home/pxe/tftp/distrib/windows/win7
и устанавливаем права на все файлы дистрибутива в 755
:
cd /home/pxe/tftp/distrib/windows/win7
chmod -R 755 *
3. Пишем батник, запускающий установку винды.
@echo off
echo Set variables...
SET NETADDR=\\PXE\win7
SET NETDRIVE=Z
echo Checking setup.exe...
if exist %NETDRIVE%:\sources\setup.exe goto INSTALL
echo Mount share...
net use %NETDRIVE%: %NETADDR%
sleep 5
:INSTALL
echo Launch setup...
sleep 3
%NETDRIVE%:
cd \sources
setup.exe
4. Внедряем его в WinPE, аналогично Far Manager’у и пересобираем WinPE.
Батник на PasteBin
Утилита sleep.exe
Почему-то стандартным способом у меня не получилось, что я только не перепробовал, загрузчик PXE винды падал с ошибкой BCD
Впрочем, все вполне получилось способом нестандартным, хотя он, теоретически, более требовательный к памяти.
Как с WinPE из Hiren’s Boot CD (на базе XP) сделать тоже не получится, если загрузить эту WinPE из образа HDD, то будет ругаться инсталлятор винды, он не сможет поставить винду на жесткий диск, будет мешать «первый» виртуальный HDD, хоть даже его не будет видно после загрузки. Но этот WinPE без глюков грузится из ISO-образа.
Нам потребуется загрузчик Grub4DOS, точнее файл grldr
из комплекта Grub4DOS.
1. Создаем где-нибудь на машине с Linux каталог iso_root
, кладем туда grldr
.
2. Распаковываем ISO-образ ранее собранного WinPE
3. Копируем из распакованного образа в iso_root
каталоги Boot
, sources
и файл BOOTMGR
.
5. В каталоге iso_root
создаем файл boot.disk
, можно пустой, можно написать туда пояснение, это не важно, он будет использоваться Grub4DOS, чтобы найти загрузочный диск. Если использовать BOOTMGR
для поиска загрузочного устройства, то компьютер ВНЕЗАПНО может начать грузиться с HDD, от того, что BOOTMGR
, расположенный на жестком диске будет найден первее, чем нужный.
4. Создаем файл menu.lst
Внимание! grldr
чувствителен к регистру имен файлов!
Так что menu.lst
обязательно надо назвать строчными буквами, а BOOTMGR
в menu.lst
должен быть прописан заглавными!
5. В каталоге уровнем выше iso_root
создаем скрипт для создания образа диска:
#!/bin/bash if [ -z "$1" ]; then LABEL="bootable" else LABEL=$1 fi echo "Create ISO..."
mkisofs -o disk.iso -b grldr -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V $LABEL iso_root
и запускаем его:
./createiso-gfd WIN7PE
Скрипт createiso-gfd на PasteBin
6. Копируем готовый образ в нужный каталог на PXE-сервере и создаем соответствующий пункт в меню загрузки PXE.
LABEL win7pe menu label Windows 7 PE kernel modules/memdisk initrd distrib/windows/winpe7/win7pe.iso append iso raw
Меню Grub4DOS
8. Ну вот, все загрузилось.
И даже винды ставятся
Минус — способ требователен к памяти, понадобится хотя бы 1 Гб RAM
— Скрипт createiso-gfd на PasteBin
— Урезанный Far
— Плагин для установки Far в сборку
— BAT-файл для установки Windows 7
— Скрипт для установки файла в сборку
— Исправление для плагина Wallpaper
—Загрузчик и menu.lst
— WinBuilder SE (чистый, без плагинов)
— Полная версия
3 Responses to Делаем аварийный загрузочный образ WinPE на базе Windows 7. (с возможностью установки Win7/8/10)