Заметки из личного о WinPE 2.x (в комплекте Windows AIK)
Перенос моей статьи, для истории, из ЖЖ (livejournal.com)
Очень много проблем люди имеют из-за зверских "аппетитов" к ОЗУ у новой PEшки.
Постараюсь объяснить, почему так "аппетитно" на двух примерах (без деталей):
1. Клиентская машина обращается к DHCP серверу и находит сервер загрузки TFTP
2. С него загружается в ОЗУ локальной машины бут манагер висты - bootmgr
3. bootmgr стягивает BCDstore с того-же TFTP и запарсив его выводит список ОС
4. После выбора ОС согласно действиям, описанным BCDstore стягиваясь с TFTP в ОЗУ локальной машины
начинает развертываться WIM-образ вплоть до окончания его загрузки. Образ развертывается на жестко
записанный диск Х:
5. bootmgr передает управление загрузчику самой ОС
6. На экране появляется бегущая зеленая полоска....
7. Всё загрузка окончена!
Если мы грузимся с CD процесс происходит практически таким-же образом:
1. Клиентская машина ищет загрузочный сектор на CD
2. В загрузочном секторе загрузчик "инициирует" bootmgr
3. bootmgr прочитав BCDstore и запарсив его выводит список ОС
4. После выбора ОС согласно действиям, описанным BCDstore в ОЗУ машины
начинает развертываться WIM-образ из каталога \sources
до окончания его загрузки. Образ развертывается на жестко записанный диск Х:
5. bootmgr передает управление уже загрузчику самой ОС
6. На экране появляется бегущая зеленая полоска....
7. Всё загрузка окончена!
Тоесть в обоих случаях в памяти у нас содержится "развернутое" содержимое
плоского файла WIM с ОС. Вот отсюда и требования по памяти - её должно
быть много чтобы она могла удержать в себе:
1. диск с развернутой ОС
2. свободное место для работы самой ОС и запускаемых в ней программ
В ходе чтения документации по работе с WinPE я попробовал создать рабочий образ без
использования WIM-файлов. Это значит отказаться от стадии развертывания в ОЗУ его
содержимого полностью! Образ должен содержать:
1. Сформированную с нуля конфигурацию (BCDstore) для bootmng
В документации WAIK на этот счет допущено немалое кол-во ошибок и поэтому я погрузился
на какое-то время в недра документа "Boot Configuration Data in Windows Vista".
После применения к голове содержимого документа и гуглингу на свет вылез следующий CMD-файл:
set BCD-File=c:\Boot\BCD
del %BCD-File%
Bcdedit /createstore %BCD-File%
Bcdedit /store %BCD-File% /create {bootmgr} /d "Boot Manager"
Bcdedit /store %BCD-File% /set {bootmgr} device Boot
rem Bcdedit /store %BCD-File% /create /d "WINPE" -application osloader
for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%c
Bcdedit /store %BCD-File% /set %guid1% osdevice Boot
Bcdedit /store %BCD-File% /set %guid1% device Boot
Bcdedit /store %BCD-File% /set %guid1% path \windows\system32\winload.exe
Bcdedit /store %BCD-File% /set %guid1% systemroot \windows
Bcdedit /store %BCD-File% /set %guid1% winpe Yes
Bcdedit /store %BCD-File% /set %guid1% detecthal Yes
Bcdedit /store %BCD-File% /displayorder %guid1% /addlast
Bcdedit /store %BCD-File% /enum all
2. Содержимое WIM-файла с WinPE
Содержимое файла (уже препарированного). Тут вообще ничего особого.
Процесс пошагово будет таким:
1. берем жесткий диск
2. размечаем его, формируя партицию первичную, активную размером с содержимое нашего WIM-образа + 20%
3. развертываем на него WIM файл. Что-то типа imagex /apply winpe.wim 1 c:
4. Копируем туда-же в C: весь каталог \boot из Windows AIK\Tools\PETools\x86
5. Копируем туда-же в C: файл bootmgr из Windows AIK\Tools\PETools\x86
6. Удаляем старый bcdstore с C:\boot. делаем del c:\boot\bcd
7. Настала очередь формирования конфигурации новой BCDstore. Это описано выше (скрипт сохранить в файл и заюзать)
8. Берем bootsect.exe из Windows AIKа и пишем загрузчик на винт выполнив bootsect.exe /nt60 C:
Всё готово! Перегружаем машинку и загружаемся с этого жесткого диска.
Причем, запустив taskmgr вы заметите, что кол-во ОЗУ свободной просто фантастическое!
Я попробовал провернуть этуже фишку с read-only media тоесть CDRW болванкой:
Для реализации этого я залил в ISOшник содержимое тестового винта (все, что там было в корне диска скинул в WINPE каталог предварительно):
oscdimg -n -bc:\etfsboot.com c:\winpe c:\winpe.iso
Но вся загрузка остановилась на wpeinit.exe. Очевидно, что он пытается писать на носитель, который является только для чтения :(
Решить эту заморочку мне пока не удалось...
Мысли вслух:
1. дефолтовый winpe.wim (лежащий в Windows AIK\Tools\PETools\<архитектура>)
гигантского размера - более 640 мегабайт. В него по-умолчанию включена масса
дополнительных пакетов не каждому нужных (WinPE-HTA-Package,WinPE-MDAC-Package,
WinPE-Scripting-Package,WinPE-SRT-Package,WinPE-XML-Package,WinPE-WMI-Package)
Все подробности об этих пакетах можно узнать в Windows Preinstallation
Environment User's Guide.
2. после активации требуемых пакетов (например, мне были нужны WMI и VBScript)
_обязательно_ выполняется "препарирование" ;) командой peimg /prep /image=<путь>.
Это действие уменьшит размер с 640 примерно до 285 мегабайт! Многие, похоже, забывают
это делать вследствие чего при развертывании её в ОЗУ на машинах с её малым кол-вом
возникают всякие "паранормальные" эффекты.
4. в образе идет по-умолчанию полный джентльменский набор утилит для работы! Перечислю
только некоторые: notepad, taskmgr, regedit, diskpart, net, ping, tracert, netsh, итп.
5. образ еще можно уменьшить (замочив в сортире) убив из его недр ненужные вещи ручками.
Действие это стоит делать _ОЧЕНЬ_ аккуратно и четко представляя себе что делаешь.
Например, я в своем убивал каталоги "лишних языков" отличных от EN-US (а их там тьма)
6. пройти через операцию экспорта из одного файла WIM в другой. Команда: imagex /export filein.wim номер fileout.wim. Дело в том что при при изменении файлов в образе (после imagex.../unmount ..../commit) imagex "дописывает" изменения в конец файла а следовательно появляются "дырки" в первоначальных местах. Файл-то - плоский!
7. после загрузки, есть возможность создать pagefile что теоретически, на мой взгляд,
должно решить отчасти проблему нехватки ОЗУ. Делается это через
wpeutil CreatePageFile /path=<путь-и-имя-файла>
8. очень рекомендую к прочтению документ "Windows Automated Installation Kit (WAIK) User's Guide for Windows Vista" на узле Microsoft
Минимальный размер что мне удалось получить при сохранении полезных утилит это winpe.wim = 93 Мегабайта,
развернутый он занимает 230 Мегабайт. С этого образа загрузившись я могу создавать новые образы операционок,
размечать диски (diskpart) и применять образы операционных систем на локальные диски из сети.
Буду рад узнать методы и хинты пользуясь которыми можно еще уменьшить размеры!
There are no published comments.
New comment