Оптимизация Windows PE

Одна из опций обслуживания Windows Preinstallation Environment, которой частенько пренебрегают – это так называемое “профилирование” или зачистка ее образа от неиспользуемых в решении конкретной сервисной задачи компонент. Другими словами, Windows PE должна быть маленькой, шустрой и “заточенной” именно под те задачи, под которые она компоновалась.

Посмотрим на практическом примере, как это делается. Учитывая, что иногда посетитители блога выполняют проверку высказанного на блоге методом Cut&Paste, а также во избежание дополнительных консультаций по подсчету пробелов в командной строке, все шаги процесса оптимизации будут проиллюстрированы снимками экрана.

1. Создаем ресурсную директорию для компоновки и обслуживания образа Windows PE:

copype x86 c:winpe

SNAGHTML8e251d5

2. Монтируем образ для последующего обслуживания:

dism /mount-wim /wimfile:c:winpewinpw.wim /index:1 /mountdir:c:winpemount

SNAGHTML8e7d94c

3. Обслуживаем образ, например, добавляем компоненты, отвечающие за поддержку WMI (а это обязательный компонент для профилирования), .wsf и .vbs скриптинга и HTA-приложений, обязательно с их языковыми пакетами:

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPswinpe-wmi.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPsen-uswinpe-wmi_en-us.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPswinpe-hta.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPsen-uswinpe-hta_en-us.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPswinpe-hta.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPswinpe-scripting.cab"

dism /image:c:winpemount /add-package:"C:Program FilesWindows OPKToolsPEToolsx86WinPE_FPsen-uswinpe-scripting_en-us.cab"

WMI:                                                        HTA:

SNAGHTML8f89876SNAGHTML8ecaa9f

поддержка .VBS и .WSF скриптов:

SNAGHTML8eea36e

Добавляем в образ дополнительные утилиты, например, ImageX (рекомендуется все ложить в .windowssystem32 образа, но мы пойдем другим путем):

md c:winpemounttools
copy "c:Program FilesWindows OPKToolsx86imagex.exe" c:winpemountTools*.*

SNAGHTML8f38b6c

4. Включаем профилирование (т.е. своеобразный trace используемых файлов):

dism /image:c:winpemount /Enable-profiling

SNAGHTML8f994fd

5. Демонтируем образ с сохранением внесенных изменений:

dism /unmount-wim /mountdir:c:winpemount /commit

SNAGHTML8fe81fa

6. Копируем модифицированный winpe.wim в компоновочную директорию для создания .iso образа:

copy c:winpewinpe.wim c:winpeISOsourcesboot.wim

SNAGHTML90361bd

7. Делаем загрузочный .iso (при необходимости прожигаем его на физический носитель):

oscdimg -n -bc:winpeetfsboot.com c:winpeISO c:winpewinpe.iso

SNAGHTML904d0d4

8. Загружаем тестовый компьютер с winpe.iso, и интенсивно используем Windows PE и ВСЕ необходимые утилиты для решения ВСЕХ предполагаемых задач.

9. По окончании процесса тестовой эксплуатации образа Windows PE, сохраняем профиль оптимизации в отдельный текстовой файл:

wpeutil saveprofile a:opt.txt "optimized profile"

image

Вот как примерно выглядит его содержимое (по сути – перечень использованных в работе компонент):

SNAGHTML9367b09

10. Повторно монтируем ранее созданный и настроенный образ winpe, который был перенесен в директорию .winpeisosources перед компоновкой .iso образа и, собственно, который-то и загружался:

dism /mount-wim /wimfile:c:winpeISOsourcesboot.wim /index:1 /mountdir:c:winpemount

SNAGHTML92fc6f6

11. Применяем к нему профиль оптимизации:

dism /image:c:winpemount /Apply-Profiles:opt.txt

SNAGHTML93a0b84

12. Демонтируем образ с сохранением изменений:

dism /unmount-wim /mountdir:c:winpemount /commit

SNAGHTML93c1f04

Если на данном этапе сравнить размеры образов, то, как ни странно, – профилированный образ будет даже больше, чем его исходный вариант:

image

Это происходит из-за того, что DISM при обслуживании образа оставляет в нем много “служебного мусора” в области метаданных. От этого мусора нужно избавиться.

13. Для этого экспортируем образ Windows PE из настроенного boot.wim в отдельный файл:

imagex /export c:winpeisosourcesboot.wim 1 c:winpeisosourcesboot_profiled.wim

SNAGHTML945008d

Результат разительно отличается:

image

14. Теперь остается только удалить boot.wim, переименовать  boot_profiled.wim  в  boot.wim и заново скомпоновать загрузочный .iso.

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

Leave a Reply

Your email address will not be published. Required fields are marked *