Windows PE (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Windows PE. Дата последней синхронизации: 09 мая 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Windows PE — это легковесная версия Windows, предназначенная для установки Windows Vista и более поздних версий, а также для обслуживания системы. Она запускается полностью в оперативной памяти и может быть загружена по сети. Эта страница описывает создание настроенного образа Windows PE и, опционально, публикацию его в сети с использованием только свободного программного обеспечения на компьютере с Arch Linux вместе с Microsoft Windows Automated Installation Kit (WAIK). WAIK может быть загружена бесплатно и требуется только для извлечения файла boot.wim, который содержит исходную копию Windows PE вместе с некоторыми загрузочными файлами.

Важно: Загружая Windows Automated Installation Kit, вы попадаете под ограничения лицензии, которая не позволяет, среди прочего, использовать 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.
Важно: Удостоверьтесь, что вы выбрали правильную целевую архитектуру: либо x86 (32-bit), либо x64 (64-bit). Совместимость программ для 32-bit на Windows x64 в основном хорошая, но ваш опыт использования может отличаться.

Различные версии установочных образов Windows содержат различные версии Windows PE. Для соотнесения версий Windows и Windows PE обратитесь к Википедии.

Совет: Возможно использовать httpfs, чтобы избежать загрузки всего образа. Windows PE занимает примерно 118MB от него.

Подготовка загрузочного 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-файлы.

Важно: Удостоверьтесь, что вы выбрали соответствующую архитектуру вашего ISO-образа Windows. Это руководство было протестировано только с x64, т.е. он загружается с использованием /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 по сети.

Примечание: С приведённым фалом конфигурации PXELINUX Windows PE будет запускаться по умолчанию через пять секунд.
Совет: TFTP не рассчитан на передачу больших файлов, таких как 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.

См. также