Windows PE это облегчённая версия Windows (Windows Preinstallation Environment), предназначенная для помощи в установке и восстановлении операционных систем семейства Windows и загружающаяся с CD, USB Flash или по сети. Для создания образа Windows PE необходимо иметь официальный установочный диск с Windows.
Официальные инструменты для сборки Windows PE существуют только ОС Windows, однако при необходимости собрать образ можно и из под Linux благодаря утилитам из проекта wimlib.
Собирать образ Windows PE мы будем на основе диска с 64-битной Windows 10 из под Ubuntu 18.04. Для начала установим утилиты wimlibs командой:
sudo apt install wimtools
Дальше определим переменную окружения WINPEBUILD, указывающую на директорию сборки, создадим эту директорию и перейдём в неё:
export WINPEBUILD=$HOME/WinPEBuild mkdir -p $WINPEBUILD cd $WINPEBUILD
Создадим директорию, в которую смонтируем дистрибутив Windows:
mkdir -p $WINPEBUILD/WinDistr
Если дистрибутив у нас на компакт-диске, то монтируем его командой:
sudo mount /dev/cdrom $WINPEBUILD/WinDistr
Если же речь идёт об образе диска, то монтируем его командой:
sudo mount -o loop /путь/к/образу/windows.iso $WINPEBUILD/WinDistr
В принципе теперь можно собрать образ диска. Если нужен образ для записи на флэш-накопитель, то сделать это можно командой:
mkwinpeimg --windows-dir=$WINPEBUILD/WinDistr $WINPEBUILD/WinPE.img
Дальше этот образ можно записать на накопитель командой:
sudo dd if=$WINPEBUILD/WinPE.img of=/dev/sdc bs=1M
Здесь “/dev/sdc” надо заменить на правильный файл устройства, соответствующий вашему накопителю. Если необходим образ компакт-диска, то надо использовать дополнительный ключ “–iso”:
mkwinpeimg --iso --windows-dir=$WINPEBUILD/WinDistr $WINPEBUILD/WinPE.iso
Однако утилита mkwinpeimg позволяет не только собрать образ, но и кастомизировать его на этапе сборки. Например если мы хотим добавить файлы то необходимо использовать опцию “–overlay”. Создадим директорию для дополнительных файлов:
mkdir -p $WINPEBUILD/PEAddons
Далее (для примера) скачаем Far Manager и разместим его в директории “$WINPEBUILD/PEAddons/Programs/Far”. ВАЖНО: в WinPE на базе 64-битной Windows можно запускать только 64-битные приложения! Учитывайте это при формировании своих образов!
Соберём образ компакт-диска командой:
mkwinpeimg --iso --windows-dir=$WINPEBUILD/WinDistr --overlay=$WINPEBUILD/PEAddons $WINPEBUILD/WinPE.iso
После загрузки Far Manager будет доступен в директории “X:\Programs\Far”. Следующим шагом настроим автоматический запуск Far Manager после загрузки WinPE. Здесь нам поможет опция “–start-script”, которая должна указывать на CMD-скрипт загрузки. ВАЖНО: после завершения этого скрипта система автоматически перезагружается.
Создадим скрипт “$WINPEBUILD/startpe.cmd” следующего содержания:
@echo off REM Run main system init tool wpeinit REM Start Far Manager in new Window start %SYSTEMDRIVE%\Programs\Far\Far.exe REM Print some manual echo Type "exit" to reboot REM Start cmd cmd
После этого образ компакт-диск можно собрать командой:
mkwinpeimg --iso --windows-dir=$WINPEBUILD/WinDistr --overlay=$WINPEBUILD/PEAddons --start-script=$WINPEBUILD/startpe.cmd $WINPEBUILD/WinPE.iso
Протестировать образ компакт-диска можно в любой виртуальной машине. Например в QEmu это можно сделать командой:
qemu-system-x86_64 -cdrom $WINPEBUILD/WinPE.iso -m 1024
Образ флэш-накопителя можно протестировать в QEmu командой:
qemu-system-x86_64 -hdc $WINPEBUILD/WinPE.img -m 1024
Утилита mkwinpeimg написана на bash и является обёрткой над остальными утилитами из состава wimlib. С помощью этих утилит можно не только собирать образ Windows PE, но и работать с существующими: распаковывать, модифицировать и т.д. Подробнее можно прочитать на официальной странице проекта.
На этом всё. Приятной работы!