Сборка образа Windows PE в Linux

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

Windows PE на базе Windows 10 в QEmu

Утилита mkwinpeimg написана на bash и является обёрткой над остальными утилитами из состава wimlib. С помощью этих утилит можно не только собирать образ Windows PE, но и работать с существующими: распаковывать, модифицировать и т.д. Подробнее можно прочитать на официальной странице проекта.

На этом всё. Приятной работы!

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x