Одна из опций обслуживания Windows Preinstallation Environment, которой частенько пренебрегают – это так называемое “профилирование” или зачистка ее образа от неиспользуемых в решении конкретной сервисной задачи компонент. Другими словами, Windows PE должна быть маленькой, шустрой и “заточенной” именно под те задачи, под которые она компоновалась.
Посмотрим на практическом примере, как это делается. Учитывая, что иногда посетитители блога выполняют проверку высказанного на блоге методом Cut&Paste, а также во избежание дополнительных консультаций по подсчету пробелов в командной строке, все шаги процесса оптимизации будут проиллюстрированы снимками экрана.
1. Создаем ресурсную директорию для компоновки и обслуживания образа Windows PE:
copype x86 c:winpe
2. Монтируем образ для последующего обслуживания:
dism /mount-wim /wimfile:c:winpewinpw.wim /index:1 /mountdir:c:winpemount
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:
поддержка .VBS и .WSF скриптов:
Добавляем в образ дополнительные утилиты, например, ImageX (рекомендуется все ложить в .windowssystem32 образа, но мы пойдем другим путем):
md c:winpemounttools
copy "c:Program FilesWindows OPKToolsx86imagex.exe" c:winpemountTools*.*
4. Включаем профилирование (т.е. своеобразный trace используемых файлов):
dism /image:c:winpemount /Enable-profiling
5. Демонтируем образ с сохранением внесенных изменений:
dism /unmount-wim /mountdir:c:winpemount /commit
6. Копируем модифицированный winpe.wim в компоновочную директорию для создания .iso образа:
copy c:winpewinpe.wim c:winpeISOsourcesboot.wim
7. Делаем загрузочный .iso (при необходимости прожигаем его на физический носитель):
oscdimg -n -bc:winpeetfsboot.com c:winpeISO c:winpewinpe.iso
8. Загружаем тестовый компьютер с winpe.iso, и интенсивно используем Windows PE и ВСЕ необходимые утилиты для решения ВСЕХ предполагаемых задач.
9. По окончании процесса тестовой эксплуатации образа Windows PE, сохраняем профиль оптимизации в отдельный текстовой файл:
wpeutil saveprofile a:opt.txt "optimized profile"
Вот как примерно выглядит его содержимое (по сути — перечень использованных в работе компонент):
10. Повторно монтируем ранее созданный и настроенный образ winpe, который был перенесен в директорию .winpeisosources перед компоновкой .iso образа и, собственно, который-то и загружался:
dism /mount-wim /wimfile:c:winpeISOsourcesboot.wim /index:1 /mountdir:c:winpemount
11. Применяем к нему профиль оптимизации:
dism /image:c:winpemount /Apply-Profiles:opt.txt
12. Демонтируем образ с сохранением изменений:
dism /unmount-wim /mountdir:c:winpemount /commit
Если на данном этапе сравнить размеры образов, то, как ни странно, – профилированный образ будет даже больше, чем его исходный вариант:
Это происходит из-за того, что DISM при обслуживании образа оставляет в нем много “служебного мусора” в области метаданных. От этого мусора нужно избавиться.
13. Для этого экспортируем образ Windows PE из настроенного boot.wim в отдельный файл:
imagex /export c:winpeisosourcesboot.wim 1 c:winpeisosourcesboot_profiled.wim
Результат разительно отличается:
14. Теперь остается только удалить boot.wim, переименовать boot_profiled.wim в boot.wim и заново скомпоновать загрузочный .iso.
Примечание: у этого метода оптимизации Windows PE есть недостаток – после профилирования образ становится необслуживаемым, так как применение профиля механически удаляет файлы из базового образа, которые не были использованы в процессе тестовой эксплуатации. Это, естественно, происходит без учета зависимостей, которые контролируются стеком обслуживания при добавлении / удалении компонент Windows PE.