Настройка PXE

Определения

PXE (Preboot Execution Environment) — сетевой стандарт или протокол, созданный Intel, который определяет способ загрузки операционной системы через сеть, используя сетевую карту компьютера

Примечание

PXE-код, находящийся в ПЗУ сетевой карты или в прошивке BIOS/UEFI, получает от DHCP/BOOTP-сервера IP-адрес и параметры загрузки (адрес TFTP-сервера и имя загрузочного файла), после чего по протоколу TFTP загружает указанный файл и передаёт ему управление

BOOTP — протокол автоматической конфигурации IP-адреса (предшественник DHCP), работающий поверх UDP и позволяющий хосту получить сетевые параметры от сервера

TFTP — простой протокол передачи файлов, который позволяет клиенту получить файл с удалённого хоста или поместить файл на удалённый хост. Часто используется именно на этапе PXE-загрузки для получения первого загрузочного файла

Этапы работы PXE

  1. Инициализация сети

    При включении компьютера выполняется процедура POST (Power-On Self Test), после чего инициализируется сетевой интерфейс и выполняется код PXE (через BIOS/UEFI или ПЗУ сетевой карты)

  2. DHCP-запрос

    Компьютер, настроенный на загрузку через PXE, отправляет DHCP-запрос (DHCP Discover) в локальную сеть для получения IP-адреса и информации о загрузочном сервере

    Примечание

    Запрос может быть широковещательным

  3. DHCP-ответ

    DHCP-сервер отвечает на запрос, предоставляя:

    • IP-адрес

    • Маску подсети

    • Шлюз

    • Дополнительные DHCP-опции

    Дополнительные DHCP Options (типичные):

    • Option 66 — адрес TFTP-сервера (или next-server)

    • Option 67 — имя начального загрузочного файла (например, ipxe.efi для UEFI или undionly.kpxe для BIOS). В ответе DHCP-сервер может также включать различные опции, которые помогают клиенту во время загрузки

    Важно

    Сервер Rudesktop использует собственный DHCP PROXY

  4. Загрузка загрузчика

    После получения информации о TFTP-сервере и имени файла PXE-клиент загружает первичный сетевой загрузчик по протоколу TFTP

    Примечание

    Этот загрузчик может быть, например:

    • iPXE (файлы ipxe.efi, undionly.kpxe)

    • PXELINUX (pxelinux.0)

    • Другие сетевые загрузчики

    Именно этот файл, указанный в Option 67, является первым исполняемым кодом, который приходит по сети

  5. Загрузка операционной системы

    После загрузки первичного сетевого загрузчика (например, iPXE) он:

    • Может предоставить меню для выбора операционной системы или сценария загрузки

    • Может автоматически загрузить конфигурационный файл (например, autoexec.ipxe)

    • Далее загружает ядро ОС, initrd или вспомогательные загрузчики

    Для Windows на этом этапе обычно используется wimboot (как второй загрузчик), который:

    • Загружается самим iPXE

    • Затем через wimboot загружаются файлы Windows PE/установщика (WIM-образ и сопутствующие файлы) по TFTP/HTTP/NFS и т.п.

    Для Linux через iPXE обычно загружаются:

    • ядро (vmlinuz)

    • initrd

    • параметры командной строки ядра (часто описаны в autoexec.ipxe или аналогичном iPXE-скрипте)

  6. Инициализация ОС

    После завершения загрузки образа операционной системы (Windows PE, инсталлятор Windows или Linux initrd+kernel), он передаётся в память, и компьютер начинает выполнение кода ОС

Как работает DHCP proxy

  1. При загрузке PXE-клиента он отправляет в сеть широковещательное сообщение DHCP Discover, которое содержит список информации, которую клиент хотел бы получить от DHCP-сервера, а также сведения, идентифицирующие его как устройство с поддержкой PXE (через Option 60: PXEClient)

  2. Обычный DHCP-сервер отвечает предложением (DHCP Offer), которое содержит возможные значения для сетевых настроек, запрашиваемых клиентом. Обычно это IP-адрес, маска подсети, адрес маршрутизатора (шлюза), адрес DNS-серверов и т.д.

  3. Поскольку клиент идентифицировал себя как PXE-клиент, ProxyDHCP-сервер (в данном случае — RuDesktop) также отвечает предложением (DHCP Offer), но без информации об IP-адресе. Он оставляет выдачу IP-адреса обычному DHCP-серверу. ProxyDHCP-сервер предоставляет:

    • Адрес TFTP/загрузочного сервера (Option 66)

    • Имя загрузочного файла (Option 67), которые используются клиентом при последующей транзакции TFTP

  4. Клиент PXE отвечает на выбранное предложение DHCP запросом (DHCP Request), в котором он официально запрашивает информацию о конфигурации IP-адреса у обычного DHCP-сервера

  5. Обычный DHCP-сервер отвечает подтверждением (DHCP ACK), сообщая клиенту, что он может использовать выданные параметры конфигурации IP

  6. Теперь клиент имеет:

    • Информацию о конфигурации IP-адреса

    • Имя сервера TFTP/загрузочного сервера

    • Имя начального загрузочного файла (например, undionly.kpxe или ipxe.efi), и инициирует транзакцию TFTP для загрузки этого загрузочного файла

Загрузочные файлы и конфигурация находятся по пути:

/var/lib/rudesktop/pxe/tftp/

Подсказка

В этом каталоге, как правило, расположены:

  • ipxe.efi / undionly.kpxe — первичные PXE-загрузчики, которые указываются в DHCP Option 67

  • autoexec.ipxe — основной iPXE-скрипт, который описывает, что и как загружать (ядра Linux, initrd, запуск wimboot и т.п.)

Пример установки ОС с PXE для Windows

После того как PXE-клиент:

  1. Получил IP и параметры через обычный DHCP + DHCP-proxy

  2. Загрузил по TFTP начальный загрузчик (например, ipxe.efi / undionly.kpxe)

  3. iPXE выполнил скрипт (autoexec.ipxe) и через него загрузил wimboot, через wimboot на устройство загружается Windows PE/установочная среда

Далее ОС устанавливается по правилам, которые описаны в файле answers_mbr.xml /answers_uefi.xml

Основные шаги установки:

  • Форматирование дисков и разделов

  • Создание системного раздела и раздела C:\

  • Создание пользователя

    Подсказка

    Пользователь, создаваемый в системе, указывается при создании образа в веб-интерфейсе на странице Установка OS

Далее выполняется:

  • Установка приложения RuDesktop

  • Подключение приложения RuDesktop к серверу, с которого раздавался образ

Изменение конфигурации PXE

Переопределение конфигурации PXE возможно через добавление файла-конфигурации в пользовательскую директорию

  • Основная директория (конфигурация по умолчанию):

    /var/lib/rudesktop/pxe
    
  • Пользовательская директория (override-конфиги):

    /var/lib/rudesktop/user/pxe
    

    Важно

    • Приоритет выше у пользовательского конфига /var/lib/rudesktop/user/

    • Директория /var/lib/rudesktop/user/ используется для переопределения конфигов, таким образом можно изменить практически любой конфиг, не трогая системные файлы в /var/lib/rudesktop/pxe

Работа в разных подсетях

Для установки ОС на устройство с использованием PXE в разных подсетях требуется:

Настроить маршрутизацию между подсетями:

  • ProxyDHCP сервер, находящийся в подсети 1, должен иметь доступ к подсети 2, где находится устройство

  • Устройство из подсети 2 должно иметь доступ до ProxyDHCP сервера

Важно

Конфигурировать необходимо ту подсеть, где находится устройство, на которое устанавливается операционная система через PXE

DHCP-сервер должен быть настроен для этой клиентской подсети, чтобы устройство получало IP-адрес и параметры загрузки, даже если сам PXE-/ProxyDHCP-сервер находится в другой сети

Примеры конфигурации MikroTik или DHCPD:

Пример по изменению ответов для Windows

  1. Создать конфиг-файл answers_uefi.xml

  2. Добавить его в директорию по пути:

    /var/lib/rudesktop/user/pxe/overlay/answers_uefi.xml
    
  3. Опубликовать образ повторно в веб-интерфейсе на странице Установка OS

Важно

Аналогичным способом можно осуществлять изменения любых файлов в /var/lib/rudesktop/pxe