Windows PE (Русский)
Windows PE — это легковесная версия Windows, предназначенная для установки Windows Vista и более поздних версий, а также для обслуживания системы. Она запускается полностью в оперативной памяти и может быть загружена по сети. Эта страница описывает создание настроенного образа Windows PE и, опционально, публикацию его в сети с использованием только свободного программного обеспечения на компьютере с Arch Linux вместе с Microsoft Windows Automated Installation Kit (WAIK). WAIK может быть загружена бесплатно и требуется только для извлечения файла boot.wim
, который содержит исходную копию Windows PE вместе с некоторыми загрузочными файлами.
Варианты использования
Обычно, образ Windows PE может быть создан только с использованием Windows Automated Installation Kit (WAIK) на компьютере с Windows. Тем не менее, существует возможность создания и модифицирования образов Windows PE используя компьютер с (Arch) Linux, и, опционально, публикации его в сети для загрузки с помощью PXE. Компьютер с Windows не требуется. Вы можете сделать это если:
- вам необходимо установить Windows по сети или загрузить Windows PE по сети для системного администрирования используя Arch Linux-сервер. Это может быть связано с тем, что у вас нет Windows-сервера, или вы предпочитаете использовать сервер на Linux по причине более высокой безопасности и настраиваемости, или вы уже используете сервер на Linux для других целей.
- вам необходимо запустить Windows-окружение для запуска программы для Win32, у вас нет доступа к компьютеру с Windows, и вы не желаете использовать Wine или программа работает некорректно с Wine.
Создание загрузочного образа Windows PE
Установите wimlib.
Настройка образа Windows PE
Для загрузки в командную строку создайте стартовый скрипт, который может быть включён в загрузочный образ следующим образом:
start.cmd
cmd.exe pause
Скрипт mkwinpeimg
поддерживает внесение дальнейших модификаций в Windows PE при использовании опции --overlay
. Смотрите страницу руководства для mkwinpeimg
чтобы получить больше информации. При желании вы можете добавить Windows-приложения, хоторые хотите запускать в Windows PE или добавить дополнительные драйвера которые необходимы Windows PE (драйвера могут быть загружены при помощи команды drvload
в Windows PE).
Получение Windows ISO или WAIK-образа
mkwinpeimg
позволяет создать загрузочный Windows PE ISO из нескольких источников. Для начала необходимо получить один из вариантов:
- Вариант А для Windows 7 и более поздних: установочный Windows ISO / образ диска. Он может быть загружен бесплатно на сайте Microsoft: Windows 10 ISO. Это наиболее простой вариант.
-
Вариант Б: образ Windows Automated Installation Kit (WAIK). Вплоть до Windows Vista/7 он может быть получен как самостоятельный дистрибутив WAIK от Microsoft. Начиная с Windows 8 WAIK был переименован в WADK и распространяется через
adksetup.exe
. -
Вариант В с уменьшенным дистрибутивом: Hiren's BootCD включает в себя Windows PE, весящий примерно вдвое меньше (~2.8GB) полного образа Windows 10. Это полнофункциональная среда, включающая в себя Internet Explorer, который может быть полезен для поиска справки по командам
bcdedit
илиbootrec
для восстановления загрузчика Windows.
Различные версии установочных образов Windows содержат различные версии Windows PE. Для соотнесения версий Windows и Windows PE обратитесь к Википедии.
Подготовка загрузочного ISO Windows PE
Как только вы получили установочный образ Windows или образ WAIK/WADK, необходимо примонтировать его. Предполагая, что образ называется winimg.iso
:
# mkdir /media/winimg # mount winimg.iso /media/winimg
Используйте скрипт mkwinpeimg
, поставляемый с wimlib для создания загрузочного Windows PE ISO winpe.iso
, вместе со стартовыми скриптами из предыдущей секции:
Вариант А: в качестве источника выступает установочный образ Windows:
$ mkwinpeimg --iso --windows-dir=/media/winimg --start-script=start.cmd winpe.iso
Вариант Б: в качестве источника выступает образ WAIK/WADK:
$ mkwinpeimg --iso --waik-dir=/media/winimg --start-script=start.cmd winpe.iso
Смотрите mkwinpeimg(1) для дополнительной информации, включающей опцию --overlay
для копирования файлов в образ.
Демонтируйте исходный ISO:
# umount /media/winimg
Вариант В: в качестве источника выступает образ Hiren's BootCD:
Hiren's BootCD уже является загрузочным и нуждается лишь в записи на USB-накопитель.
dd bs=4M if=./HBCD_PE_x64.iso of=/dev/sdX status=progress && sync
Удостоверьтесь, что USB-накопитель использует таблицу разделов GPT как описано ниже.
Подготовка загрузочной флешки Windows PE для систем с UEFI
К сожалению, в версии 1.13.1-1 wimlib, mkwinpeimg
не может создавать загрузочные UEFI-системы. Но мы легко можем создать такую UEFI-систему: установочный ISO Windows 10 уже содержит необходимые загрузочные UEFI-файлы.
/efi/boot/bootx64.efi
. Неизвестно, будет ли UEFI-система загружать образ Windows x86. Пожалуйста, обновите это руководство, если можете протестировать.На USB-носителе создайте таблицу разметки GPT, включающую единственный раздел FAT32 с типом "EFI System". Это может быть выполнено в интерактивном режиме с cfdisk
или через fdisk:
# fdisk /dev/sdX (fdisk) g # Создать новую таблицу разделов GPT (fdisk) n # Создать новый раздел, оставив все параметры по умолчанию (fdisk) t # Сменить тип раздела (fdisk) 1 # Тип 1 это "EFI System Partition" (fdisk) w # Сохранить и выйти
Затем отформатируйте раздел в FAT32:
# mkfs.vfat /dev/sdX1
Примонтируйте файл winpe.iso
, созданный mkwinpeimg
, примонтируйте свой USB-носитель и скопируйте на него данные:
# mkdir /media/{winpe,usb} # mount winpe.iso /media/winpe # mount /dev/sdX1 /media/usb # cp -r /media/winpe/* /media/usb/
Наконец, примонтируйте оригинальный Windows ISO и скопируйте загрузочные файлы в efi
:
# mount winimg.iso /media/winimg # cp -r /media/winimg/efi /media/usb/
Вы можете отмонтировать все ISO и USB-носитель, который теперь готов к загрузке.
Это правда: нет нужды в магии syslinux или grub. Прошивка UEFI должна обнаружить раздел FAT и загрузить /efi/boot/bootx64.efi
, предоставленный Windows для загрузки с USB-носителя.
Загрузка Windows PE
После создания загрузочного ISO Windows PE (winpe.iso
), как описано в предыдущей секции, вы можете пожелать загрузить Windows PE следующими способами:
В виртуальной машине
Запустите виртуальную машину с winpe.iso
подключённом как CD-ROM. Удостоверьтесь, что выделили достаточно оперативной памяти — определённо больше, чем размер ISO — поскольку Windows PE запускается из оперативной памяти. Смотрите Category:Hypervisors для списка доступного ПО для виртуализации.
С USB-носителя
Если у вас есть подготовленный согласно руководству выше USB-носитель для UEFI-систем, должна просто произойти загрузка. Может потребоваться некоторое время на загрузку (от десяти да двадцати секунд в среднем, в зависимости от вашего USB-носителя) так как загрузчик копирует некоторые/все данные в оперативную память.
С компакт-диска
Просто запишите winpe.iso
на CD и вы готовы к загрузке.
Через сеть
Windows PE может быть загружена по сети с использованием PXELINUX и его модуля MEMDISK на BIOS-системах. Для UEFI-систем можно воспользоваться wimboot и iPXE.
Установите syslinux и tftp-hpa.
Скопируйте необходимые файлы PXELINUX в корневой каталог TFTP-сервера.
# rsync -aq /usr/lib/syslinux/bios/ /var/tftpboot/
Поместите winpe.iso
в корневой каталог TFTP-сервера.
# mv winpe.iso /var/tftpboot
Создайте файл конфигурации для PXELINUX подобный следующему:
/var/tftpboot/pxelinux.cfg/default
UI menu.c32 MENU TITLE Network Boot TIMEOUT 50 LABEL winpe MENU LABEL Boot Windows PE from network KERNEL /memdisk INITRD winpe.iso APPEND iso raw LABEL localboot MENU LABEL Boot from local disk LOCALBOOT 0
Запустите TFTP-сервер.
Настройте ваш DHCP-сервер (такой как Dhcpd или Dnsmasq) так, чтобы он указывал на pxelinux.0
как на загрузочный файл с IP-адресом Linux-сервера. Будьте внимательны: если ваш DHCP-сервер находится на роутере, это может быть невозможным без установки кастомной прошивки.
После завершения предыдущих шагов, вы можете загрузить Windows PE по сети.
winpe.iso
, объём которого может быть более 118MB и загружаться около тридцати секунд. Скорость может быть повышена при помощи загрузчика gpxelinux.0
вместо pxelinux.0
и получением winpe.iso
по HTTP, а не по TFTP.Установка Windows через Windows PE
После загрузки в Windows PE вы можете установить Windows с установочного носителя.
Установочным носителем может быть общий сетевой ресурс (Samba). Смотрите Samba для настройки Samba-сервера на другом устройстве в LAN. Для того, чтобы предоставить общий доступ у установочному образу /media/winimg
, добавьте следующее определение к /etc/samba/smb.conf
:
/etc/samba/smb.conf
[REMINST] browsable = true read only = no guest ok = yes path = /media/winimg
После загрузки в окружение командной строки Windows PE запустите следующую команду для инициализации сетевого интерфейса, получения IP Samba-сервера (при условии, что Windows PE загружается через PXE с устройства на котором запущены DHCP, TFTP и Samba-сервер, IP сервера будет соответствовать IP шлюза), монтирования общего ресурса и запуска графического установщика:
> wpeinit > ipconfig > net use I: \\IP.ADDRESS.OF.SAMBA.SERVER\REMINST > I:\setup.exe
Решение проблем
System error 58 has occurred. The specified server cannot perform the requested operation
Если при использовании команды net use
вы получили следующую ошибку:
System error 58 has occurred. The specified server cannot perform the requested operation.
1. Удостоверьтесь, что вы случайно не отмонтировали каталог /media/winimg
.
2. Добавьте map to guest
в /etc/samba/smb.conf
. Добавьте следующее в начало файла:
/etc/samba/smb.conf
[global] map to guest = Bad User ...
3. Перезапустите smbd.service
.
4. Укажите любой логин/пароль для команды net use
:
net use I: \\IP.ADDRESS.OF.SAMBA.SERVER\REMINST /user:user pass
Это происходит потому, что Windows 10 подключается к анонимным общедоступным ресурсам, проверяя имя пользователя и пароль для проверки возможности входа в систему, и, если оно получено, то разрешает анонимное соединение. По-видимому, часть, скрывающая это от пользователя, не вошла в сборку PE.