Настройка PXE¶
Определения¶
PXE (Preboot Execution Environment) — сетевой стандарт или протокол, созданный Intel, который определяет способ загрузки операционной системы через сеть, используя сетевую карту компьютера
Примечание
PXE-код, находящийся в ПЗУ сетевой карты или в прошивке BIOS/UEFI, получает от DHCP/BOOTP-сервера IP-адрес и параметры загрузки (адрес TFTP-сервера и имя загрузочного файла), после чего по протоколу TFTP загружает указанный файл и передаёт ему управление
BOOTP — протокол автоматической конфигурации IP-адреса (предшественник DHCP), работающий поверх UDP и позволяющий хосту получить сетевые параметры от сервера
TFTP — простой протокол передачи файлов, который позволяет клиенту получить файл с удалённого хоста или поместить файл на удалённый хост. Часто используется именно на этапе PXE-загрузки для получения первого загрузочного файла
Этапы работы PXE¶
Инициализация сети
При включении компьютера выполняется процедура POST (Power-On Self Test), после чего инициализируется сетевой интерфейс и выполняется код PXE (через BIOS/UEFI или ПЗУ сетевой карты)
DHCP-запрос
Компьютер, настроенный на загрузку через PXE, отправляет DHCP-запрос (DHCP Discover) в локальную сеть для получения IP-адреса и информации о загрузочном сервере
Примечание
Запрос может быть широковещательным
DHCP-ответ
DHCP-сервер отвечает на запрос, предоставляя:
IP-адрес
Маску подсети
Шлюз
Дополнительные DHCP-опции
Дополнительные DHCP Options (типичные):
Option 66 — адрес TFTP-сервера (или next-server)
Option 67 — имя начального загрузочного файла (например, ipxe.efi для UEFI или undionly.kpxe для BIOS). В ответе DHCP-сервер может также включать различные опции, которые помогают клиенту во время загрузки
Важно
Сервер Rudesktop использует собственный
DHCP PROXYЗагрузка загрузчика
После получения информации о TFTP-сервере и имени файла PXE-клиент загружает первичный сетевой загрузчик по протоколу TFTP
Примечание
Этот загрузчик может быть, например:
iPXE(файлы ipxe.efi, undionly.kpxe)PXELINUX(pxelinux.0)Другие сетевые загрузчики
Именно этот файл, указанный в Option 67, является первым исполняемым кодом, который приходит по сети
Загрузка операционной системы
После загрузки первичного сетевого загрузчика (например, iPXE) он:
Может предоставить меню для выбора операционной системы или сценария загрузки
Может автоматически загрузить конфигурационный файл (например, autoexec.ipxe)
Далее загружает ядро ОС, initrd или вспомогательные загрузчики
Для Windows на этом этапе обычно используется wimboot (как второй загрузчик), который:
Загружается самим iPXE
Затем через wimboot загружаются файлы Windows PE/установщика (WIM-образ и сопутствующие файлы) по TFTP/HTTP/NFS и т.п.
Для Linux через iPXE обычно загружаются:
ядро (vmlinuz)
initrd
параметры командной строки ядра (часто описаны в autoexec.ipxe или аналогичном iPXE-скрипте)
Инициализация ОС
После завершения загрузки образа операционной системы (Windows PE, инсталлятор Windows или Linux initrd+kernel), он передаётся в память, и компьютер начинает выполнение кода ОС
Как работает DHCP proxy¶
При загрузке PXE-клиента он отправляет в сеть широковещательное сообщение DHCP Discover, которое содержит список информации, которую клиент хотел бы получить от DHCP-сервера, а также сведения, идентифицирующие его как устройство с поддержкой PXE (через Option 60: PXEClient)
Обычный DHCP-сервер отвечает предложением (DHCP Offer), которое содержит возможные значения для сетевых настроек, запрашиваемых клиентом. Обычно это IP-адрес, маска подсети, адрес маршрутизатора (шлюза), адрес DNS-серверов и т.д.
Поскольку клиент идентифицировал себя как PXE-клиент, ProxyDHCP-сервер (в данном случае — RuDesktop) также отвечает предложением (DHCP Offer), но без информации об IP-адресе. Он оставляет выдачу IP-адреса обычному DHCP-серверу. ProxyDHCP-сервер предоставляет:
Адрес TFTP/загрузочного сервера (Option 66)
Имя загрузочного файла (Option 67), которые используются клиентом при последующей транзакции TFTP
Клиент PXE отвечает на выбранное предложение DHCP запросом (DHCP Request), в котором он официально запрашивает информацию о конфигурации IP-адреса у обычного DHCP-сервера
Обычный DHCP-сервер отвечает подтверждением (DHCP ACK), сообщая клиенту, что он может использовать выданные параметры конфигурации IP
Теперь клиент имеет:
Информацию о конфигурации 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-клиент:
Получил IP и параметры через обычный DHCP + DHCP-proxy
Загрузил по TFTP начальный загрузчик (например, ipxe.efi / undionly.kpxe)
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¶
Создать конфиг-файл answers_uefi.xml
Добавить его в директорию по пути:
/var/lib/rudesktop/user/pxe/overlay/answers_uefi.xmlОпубликовать образ повторно в веб-интерфейсе на странице Установка OS
Важно
Аналогичным способом можно осуществлять изменения любых файлов в /var/lib/rudesktop/pxe