Windows PE (Русский) - ArchWiki

Jump to content
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.

## См. также

- Microsoft's documentation for Windows PE
- Another article about making Windows PE images on Linux
- A guide with scripts for unattended installation of Windows 7 from Linux using Windows PE
- Windows 10 PE Unable to map network drive anonymously

Category:

- System administration (Русский)