PXE — сетевая установка ОС
Зачем нужен этот раздел¶
Разворачивать ОС на новых машинах вручную — это час работы администратора на каждый АРМ: носитель, установка, ввод в домен, агент. Вкладка «PXE» автоматизирует весь цикл: машина включается, загружается по сети, получает операционную систему с нужными настройками, агента LSUS и (опционально) место в домене — без установочного диска и присутствия человека. Поддерживаются РЕД ОС, Astra Linux (включая Special Edition), Альт и Windows 10/11.
Что получается на выходе:
- Новое «голое» железо ставится с нуля: LSUS замечает незнакомую машину в сети, администратор подтверждает — и она получает готовый образ.
- Уже известные хосты можно переустановить удалённо из карточки хоста или списком.
- После установки машина сама появляется в LSUS: агент регистрируется, дальше работают обычные Конфигурации — домен, политики, пакеты, обновления.
Практическое развёртывание
Пошаговый пример для корпоративной среды — с настройкой DHCP и образами Astra Linux 1.8, РЕД ОС 8 и Альт p11 — в руководстве PXE: развёртывание в корпоративной инфраструктуре.
Кратко
- Где смотреть: вкладка «PXE», только на Master.
- Что нужно: отдельный хост с ролью
pxe, лицензияos_deploymentи правоosdeploy.view. - Поддерживаемые ОС: РЕД ОС (Anaconda/kickstart), Astra Linux 1.7/1.8 (debian-installer/preseed), Альт 10/11 (alterator).
- Secure Boot на целевых машинах должен быть выключен (загрузчик iPXE не подписан ключами Microsoft).
Как это устроено¶
В установке участвуют три стороны:
| Компонент | Роль | Где живёт |
|---|---|---|
| Master | Метаданные: носители, образы, задания, права. Сам ISO не хранит | Основной сервер LSUS |
| PXE-точка | Файлы: ISO, распакованное дерево, загрузчик по HTTP, proxyDHCP/TFTP | Отдельный хост с пакетом lsus-pxe |
| Устанавливаемая машина | Загружается по сети, ставит ОС, регистрирует агента | VLAN установки |
Роль `pxe` — отдельный хост
Точка PXE не сочетается с ролями Master/Site/Edge и всегда разворачивается на своём сервере. Ей не нужна своя PostgreSQL, но нужен диск от 100 ГБ: каждый дистрибутив занимает место дважды (ISO + распакованное дерево, 4–8 ГБ каждое). Установка роли — в Развёртывании серверов.
Жизненный цикл установки — пять шагов, их видно в колонке «Прогресс» задания:
pxe_wait → installing → installed → enrolled → joined
| Шаг | Что происходит |
|---|---|
pxe_wait |
Задание создано. Пока инсталлятор не дошёл до %pre, здесь же видны шаги ipxe (скрипт выдан), boot (ядро и initrd в памяти), ks (kickstart скачан) |
installing |
Инсталлятор ОС работает: разметка диска, пакеты, настройка |
installed |
Инсталлятор завершил работу (post-скрипты отработали): цель завершена, задание переводится в finished. Статусы агента (enrolled, joined) могут догнать позже, когда машина загрузится и зарегистрируется |
enrolled |
Агент LSUS зарегистрировался на Master — машина появилась в списке хостов |
joined |
Машина введена в домен (шаблон domain-join отработал, если домен задан) |
Шаги — это не проценты: LSUS отражает реальные события (загрузка, прогресс инсталлятора, регистрация агента), а не угадывает ход установки.
Подключение PXE-точки¶
Роль pxe устанавливается на отдельный хост так же, как остальные серверные роли LSUS — пакетами ОС. Порядок:
- На Master откройте PXE → PXE-точки → «Подключить точку» и нажмите «Выпустить ключ». Регистрационный ключ действует 24 часа.
- Установите пакеты роли на хосте точки (пошагово — Установка PXE).
- В
.envточки укажитеLSUS_MASTER_URLи полученныйLSUS_PXE_REGISTRATION_KEY. Сертификат Master точка подтянет сама при регистрации — путь к сертификату в настройках заполнять не нужно. Если Master в момент старта ещё не готов, точка повторит регистрацию сама, без перезапуска. - После старта контейнеров точка появится на вкладке PXE-точки со статусом online.
Порты и переменные роли — в Справочнике портов и переменных.
Подвкладка «Носители»¶

Носитель — это исходный ISO-дистрибутив, загруженный на PXE-точку. Из носителей собираются образы.
Как попадает ISO на точку:
- «Загрузить ISO» — файл с диска браузера идёт через Master на точку (по частям; Master ISO не хранит) либо с пограничного сервера (Edge): Master скачивает ISO с Edge и сразу заливает на точку, как при импорте репозитория из ISO. После успешного скана окно закрывается, семейство/версия/архитектура и подсказка «распакуйте носитель» появляются в статусе вкладки. Пока идёт загрузка, кнопки «Загрузить» и «Скачать и сканировать» недоступны.
- «Подхватить с диска точки» — для закрытых контуров: файл заранее копируется на диск точки (каталог incoming), а Master регистрирует его и сразу сканирует.
Столбец «Семейство» — это пресет из справочника «Пресеты ОС» (Astra Linux 1.7.*, РЕД ОС / Red OS 8.*, ALT Linux 11.* / p11), а не сырая строка astra 1.7. Сопоставление — по семейству и версии из ISO (и имени файла). Фильтр носителей строится из того же справочника.
Дальше носитель проходит стадии:
| Статус | Значение |
|---|---|
incoming |
Файл загружен, ещё не распознан |
scanning |
Точка определяет семейство, версию, архитектуру, группы пакетов |
ready |
Можно создавать образы |
error |
Ошибка разбора — текст виден в карточке носителя |
Действия над носителем:
- Пересканировать — повторно определить метаданные (после замены файла вручную).
- Extract — распаковать ISO в дерево на точке: из него инсталлятор берёт пакеты, ядро и initrd. ISO при этом можно оставить (понадобится для remaster) или удалить ради места.
- Собрать носитель (remaster) — собрать из образа офлайн-носитель: облегчённый iPXE-ISO с URL точки или полный ISO с зашитым автоответом для машин вовсе без сети.
Колонка Shim показывает, есть ли в дистрибутиве подписанный загрузчик — это заготовка под Secure Boot (см. Secure Boot).
Удалить носитель нельзя, пока на него ссылаются образы, — сначала удалите образы.
Подвкладка «Образы»¶

Образ — это не новый ISO, а сохранённый состав установки поверх носителя: разметка диска, локаль, учётные записи, пакеты, файлы, скрипты, агент, целевой домен. Один носитель — много образов («рабочая станция», «касса», «АРМ разработчика»).
Версии образа проходят жизненный цикл:
draft → published → archived
Черновик правится сколько угодно; published-версия неизменяема и именно её получает машина; старую опубликованную версию можно архивировать при выпуске новой. В списке видно, какая версия опубликована и когда.
- «Создать образ» — из носителя в статусе
ready; в модалке можно выбрать пресет состава (встроенный или свой) или пустой черновик. Сразу открывается редактор. - Над таблицей образов — каталог пресетов (семейство, id, роль, версии носителя, описание, источник). Это не шестая подвкладка и не справочник линеек ОС (
os_version_pattern_presets): только состав установки. Встроенные (redos_8_workstation,astra_1_7_workstation/ ALSE 1.7,astra_1_8_workstation/ ALSE 1.8,alt_11_workstation) можно редактировать (перекрытие в БД) или скопировать в свой id; «Сбросить» возвращает встроенный состав. Импорт/экспорт JSON — перенос пресетов между стендами. Пароли в пресет не входят, пока их не зададут в редакторе. Retry цели и клон образа пресетом не являются. Пресет ALSE 1.8 (live YAML) не подходит к носителю ALSE 1.7 (debian-installer). - Импорт/экспорт JSON образа — перенос образов между стендами (dev → prod) без ручного повторения настроек.
- Флаг «По умолчанию» — образ, который получает незнакомое железо в режиме
default_image(см. Очередь PXE).
Редактор образов¶
Полноэкранная модалка в стиле конструктора политик: слева дерево разделов, справа форма.
| Раздел | Что настраивается |
|---|---|
| Основное | Имя, описание, теги; режим исходника (форма собирает файл автоответов или берётся текст с вкладки «Исходник») |
| Диск | Разметка, целевой диск и размеры: Root ГБ, Swap МБ, Home ГБ (0 = остаток), при LVM — неразмеченное место в VG под снапшоты |
| Локаль | Язык — из списка; часовой пояс — полный IANA со смещением GMT; раскладки и NTP — списком |
| Учётные записи | Root и первый пользователь: в состав уходит только хеш. Кнопка «Из пароля» строит SHA-512 ($6$) на Master; пароль не сохраняется. На Astra группа sudo — sudo (не wheel) |
| Сеть | Настройки сети первого старта |
| Пакеты | Для Astra — компоненты штатного установщика (tasksel: базовые, Fly, SSH, офис, интернет…); для РЕД ОС / Альт — группы носителя. Плюс отдельные пакеты и исключения |
| Файлы | Файлы, которые кладутся в систему (тела файлов лежат на точке) |
| Скрипты | Post-скрипты (в chroot), порядок и таймауты |
| Агент LSUS | Установка агента: репозиторий, ключи |
| Домен | Цель ввода после установки; тип каталога как у LDAP-коннектора (MS AD / SAMBA, REDADM, FreeIPA, ALD Pro) |
| Windows | Только для Windows-образов: издание (имя в WIM, например Windows 11 Pro), image index, ключ продукта (необязательно) |
Для Astra Special Edition добавляется раздел Astra SE: уровень защищённости Орёл / Воронеж / Смоленск (как в preseed os-check и YAML mode) и дополнительные опции, которые допускает выбранный уровень (МКЦ, мандатное разграничение, ЗПС, запрет ptrace). Уровень должен соответствовать лицензии.
Образ Windows¶
Windows 10/11 (x86_64, UEFI) ставится как отдельное семейство:
- Разметка — только «весь диск» (GPT: EFI, MSR и раздел Windows); LVM и отдельный
/homeдля Windows недоступны. - Часовой пояс — идентификаторы Windows (
Russian Standard Time), не IANA. - Издание задаётся именем из WIM носителя (
Windows 11 Proи т.п.) или порядковым индексом; ключ продукта — необязательно. - Пароль локального администратора задаётся на каждую цель при выдаче задания (вместе с одноразовым кодом), а не в составе образа — в редакторе он не хранится.
- Загрузка: WinPE стартует по сети (iPXE + wimboot по HTTP), установщик берёт файлы с точки по SMB.
- Ввод в домен — шаблон
lsus.win.domain-join(после установки, как у Linux). - Удалённо перезагрузить Windows-машину в PXE нельзя (
BOOT_PXEдля Windows не выполняется) — нужен человек с выбором сетевой загрузки в меню UEFI.

Разметка диска¶
Новый образ по умолчанию: отдельный /home, корень 100 ГБ, swap 8192 МБ. Для LVM дополнительно 50 ГБ свободных экстентов VG под снапшоты агента (не отдельный том и не заглушка). Уже сохранённые образы со своими root_gb / swap_mb не переписываются.
| Разметка | Что получается |
|---|---|
| Отдельный /home | EFI, /boot, swap, фиксированный /, /home на остаток. Если остаток меньше ≈10 ГБ, /home не создаётся |
| LVM | То же в группе томов; неразмеченное в VG — резерв под снапшоты. На Альт все LV фиксированные (без firstboot-сжатия) |
| Весь диск | Без отдельного /home: swap и корень (корень растёт на остаток) |
Для схемы LVM с дефолтами нужен диск примерно 160 ГБ. На меньшем (демо-VM 40–60 ГБ) генератор ужмёт корень и резерв, установку не роняет. Astra 1.8 (live YAML) принимает только шаблон storage.template (minimal / default); точные размеры разделов инсталлятор не читает.
Кнопки тулбара:
- Сохранить черновик, Валидировать — проверка состава без публикации.
- Применить пресет — в меню «три точки» черновика: подставить состав из каталога (пустые хеши пресета не затирают уже заданные пароли).
- Редактор пресета — тот же каркас, без публикации: сохранение пишет в каталог (перекрытие встроенного или свой пресет).
- Превью — итоговый файл автоответов «глазами инсталлятора»: kickstart для РЕД ОС, preseed/YAML для Astra,
autoinstall.scm+vm-profile.scmдля Альт. Обновляется на лету при правке формы. - Опубликовать — зафиксировать версию для выдачи машинам.
- Клонировать, Diff — копия образа и сравнение версий.
- Собрать носитель — remaster офлайн-ISO.
Один рендерер на Master и точке
Файл автоответов для превью и для реальной установки считает один и тот же рендерер (диск, sudo на Astra, хеши). Если версия lsus-pxe на точке несовместима с Master, строка точки покажет предупреждение, а задания на неё публиковаться не будут.
Подвкладка «Задания»¶

Задание — это «поставить такую-то published-версию образа на такие-то машины через такую-то точку». Создаётся двумя путями:
- со вкладки Задания → «Создать задание» — кнопка «Выбрать хосты…» открывает дерево каталога (как в кампаниях). В таблице видны имя, MAC и можно ли уйти в PXE удалённо;
- из карточки хоста → «Установить ОС» — вкладка открывается с уже выбранным хостом.
Это хосты, уже известные LSUS (есть агент и инвентарь). Числовой id вводить не нужно. MAC голого железа без агента сюда не вставляют — такие машины на вкладке «Очередь PXE».
Поля мастера задания:
| Поле | Что задаёт |
|---|---|
| Хосты | Цели из каталога: имя, MAC, готовность к удалённому PXE |
| Published-версия образа | Что ставить |
| PXE-точка | Через какую точку грузить |
| TTL boot-token | Сколько минут действует разрешение на загрузку (по умолчанию 120) |
| Прежняя учётка компьютера | Что сделать с объектом компьютера в AD / Samba / FreeIPA / ALD после установки: сбросить пароль и ввести заново; переиспользовать как есть; удалить и создать новый. На машину без доменного объекта не влияет |
| Перезагрузить в PXE сейчас | Отправить хосту команду BOOT_PXE — см. ниже |
После создания задания (и после одобрения неизвестного MAC) Master выдаёт одноразовый код формата XXXX-XXXX. Его нужно ввести в консоли iPXE — без кода ядро не отдаётся. Код виден в журнале задания (столбец «Код») и в меню «Одноразовые коды». После шага boot код помечается использованным; «Повторить» или «Выдать новый код» выпускает другой.
По каждой цели отслеживается статус (см. жизненный цикл), неудачную цель можно повторить, задание — отменить.
Повтор выдаёт новый boot-token и снимает на точке маркер install-started. Сам маркер one-shot пишется только после шага post (успешный %post / laststate), а не после %pre / early_command: иначе любой сбой инсталлятора оставлял пустой диск и запрещал вторую загрузку по PXE (exit 1 / localboot).
UEFI / OVMF: когда вешать NVRAM
Цепочка до ядра — iPXE HTTP (boot.ipxe), свой UEFI-загрузчик LSUS не нужен. На гипервизоре не подключайте NVRAM-диск (efidisk в Proxmox/OVMF) так, чтобы BootOrder ставил диск первым до появления ОС: пустой efidisk часто перехватывает сеть. Для Anaconda (РЕД ОС) NVRAM нужна, чтобы efibootmgr записал GRUB: вешайте efidisk, но оставьте сеть первой (boot: order=net0;scsi0) на время установки. Когда ОС уже на диске и GRUB в ESP — BootOrder с диска первым (сеть не первой). Без NVRAM OVMF забывает BootEntry GRUB, iPXE exit 1 (localboot) не загружает диск, и машина снова уходит в PXE.
«Перезагрузить в PXE сейчас» работает не везде
Команда BOOT_PXE ставит сетевую загрузку на один раз (--bootnext) и перезагружает хост. Это требует UEFI и наличия сетевой BootEntry в BootOrder — агент собирает эти данные в инвентарь (раздел firmware). Если сетевой записи нет, команда завершится ошибкой с подсказкой, а машине нужен «человек с F12»: вручную выбрать загрузку по сети в меню загрузки.
Подвкладка «Очередь PXE»¶

Очередь MAC, которые загрузились по PXE без активного задания установки. Сюда попадает и новое железо без агента, и уже известный хост, если его загрузили по сети вхолостую. В таблице: MAC, хост из инвентаря (если MAC совпал), архитектура, загрузчик, вендор NIC, когда впервые и последний раз замечены.
Поведение точки задаётся режимом очереди (поле «MAC без задания» в карточке точки):
| Режим | Что происходит |
|---|---|
approve |
Машина ждёт решения администратора: Одобрить (с выбором образа) или Отклонить. После одобрения выдаётся одноразовый код для консоли iPXE |
default_image |
Образ с флагом «По умолчанию» подставляется в очередь предварительно выбранным, но установка всё равно ждёт одобрения администратора: ядро без одноразового кода не выдаётся. Режим экономит выбор образа при массовом развёртывании |
После успешной установки машина проходит enrolled и появляется в списке хостов как обычный управляемый хост.
Подвкладка «PXE-точки»¶

Таблица точек показывает: статус online (по heartbeat), URL, версию lsus-pxe и совместимость с Master, свободное место store, число активных установок и лимит параллельных, подсети обслуживания, режим очереди (колонка «Очередь»).
- Подключить точку — выпустить регистрационный ключ (см. выше).
- Подсети — список сетей, которым точка отвечает как proxyDHCP. Попадают в конфиг dnsmasq как
dhcp-range=<сеть>,proxy. Relay из подсети без записи точка игнорирует. - Диагностика DHCP — журнал DHCP-обмена по MAC: что запросил клиент и что ответила точка. Первый инструмент при «не грузится по сети».
Ввод в домен¶
Ввод в домен выполняется после установки, когда агент уже зарегистрировался. Для Linux раскатывается шаблон lsus.linux.domain-join, для Windows — lsus.win.domain-join (модуль Конфигурации):
- Инсталлятор готовит почву: FQDN, DNS на контроллер домена, NTP, корпоративный CA, репозиторий агента.
- Машина регистрируется в LSUS как новая установка.
- Шаблон выполняет join:
realm join/net ads join(AD, Samba DC, RedADM) илиipa-client-install(FreeIPA, ALD Pro), настраивает sssd и krb5. - Критерий успеха — не код возврата команды, а признак
is_domain_joinedв heartbeat машины.
Учётные данные для join хранятся в ConfigCredential (domain_join_user, domain_join_password) — в файле автоответов и на точке PXE их нет. Политику прежней computer-учётки (сбросить/переиспользовать/удалить) задаёт задание установки.
Свежеустановленные машины собираются в коллекцию по критерию installed_within_days — удобно для пост-настройки после массовой раскатки.
Настройка сети для установки¶
Точка работает рядом с корпоративным DHCP, а не вместо него: адреса машинам по-прежнему выдаёт штатный DHCP, а точка только добавляет PXE-ответы.
Вариант A — IP-helper (предпочтительно)¶
Клиенты и точка могут быть в разных L2. На маршрутизаторе VLAN установки relay-адресами указываются и корпоративный DHCP, и IP точки:
! Cisco IOS
interface Vlan100
ip helper-address <dhcp-server>
ip helper-address <pxe-point>
# Huawei / аналог
dhcp relay server-group 1 ip <dhcp-server>
dhcp relay server-group 1 ip <pxe-point>
Вторая фаза PXE идёт на UDP 4011 — убедитесь, что она тоже прокидывается.
Вариант B — options 66/67¶
Если proxyDHCP в сети нельзя (вариант A недоступен), на DHCP-сервере для VLAN установки задаются опции:
| Опция | Значение |
|---|---|
| 66 next-server | IP точки PXE |
| 67 filename | Если клиент уже iPXE (Proxmox/QEMU с сетевым ROM): http://<ip-точки>/pxe/boot.ipxe. Иначе BIOS: undionly.kpxe; UEFI: snponly.efi (или TFTP-скрипт lsus.ipxe для встроенного iPXE). |
Не указывайте snponly.efi / undionly.kpxe машине, которая уже загрузилась в iPXE: она снова скачает тот же бинарник по TFTP и уйдёт в цикл — в «Очереди PXE» MAC не появится. TFTP-сервер точки (UDP 69) нужен только для первичного chainload на «голом» UEFI/BIOS; дальше всё идёт по HTTP с порта 80.
Что открыть и проверить¶
- Firewall хоста точки: TCP 80/443, UDP 67/69/4011.
- SELinux (РЕД ОС): метки на каталоге store и доступ dnsmasq к TFTP-корню.
- Подсеть установки должна быть прописана в карточке точки — иначе relay с
giaddrигнорируется. - Часть UEFI игнорирует proxyDHCP, если штатный DHCP отвечает быстрее, — тогда options 66/67 или helper на 4011.
Secure Boot и удалённая переустановка¶
iPXE не подписан ключами Microsoft, поэтому при включённом Secure Boot цепочка не стартует — на целевых машинах его отключают. Заложен и подписной путь: shim/GRUB из ISO самого дистрибутива (grub.cfg-01-<mac> в TFTP) — он свой у каждого дистрибутива и включается по мере поддержки.
В карточке задания видно, каким путём загрузилась машина (ipxe / shim_grub).
Про удалённую переустановку: BOOT_PXE сработает, только если в UEFI есть сетевая BootEntry — агент собирает раздел инвентаря firmware (efibootmgr), и в задании цель помечается: «переустановка удалённо возможна» или «нужен человек с F12». Legacy BIOS загрузку по сети удалённо не переключить — только вручную через меню загрузки.
Безопасность¶
- Загрузочная плоскость — HTTP без TLS: доступ ограничен одноразовым кодом (ввод в iPXE), boot-token (служебный, с TTL), привязкой к MAC и ACL по подсетям из карточки точки. TTL проверяется на точке: просроченный токен не отдаёт ядро — машина снова ждёт одобрения.
- Случайная переустановка при постоянно включённом PXE: ядро только у MAC из задания в статусе
pxe_wait/installing. После%postточка помнит MAC (install-done) и отдаёт localboot (exit 1), даже если задание уже не вjobs.json. Статусыinstalled/enrolled/joinedтоже только localboot. Отклонённые MAC (denied) ядра не получают. Повтор цели в журнале задания выдаёт новый boot-token и снимает one-shot (маркер токена и запись MAC) — без Retry повторная установка с того же MAC не начнётся. - Режим unknown «approve» — единственная защита для машин без задания: iPXE ждёт решения администратора. «Образ по умолчанию» в этой версии ОС сам не ставит.
- В файле автоответов — только хеш пароля root; post-скрипты удаляют следы (
anaconda-ks.cfgи аналоги). - Пароль join-учётки домена не покидает ConfigCredential на Master.
- Загрузка ISO на точку — по одноразовому билету Master (Bearer-токен, CORS на origin Master, не cookie).
- Все ключевые действия пишутся в аудит: выпуск ключа точки, создание носителя, создание образа, публикация версии, создание задания.
Права доступа¶
Готовая системная роль PXE-админ (pxe_admin) выдаёт все четыре права ниже плюс просмотр дашборда, кабинета, отчётов и списка хостов. Администратор (admin) получает их автоматически. Администратор ИБ (security_auditor) — только osdeploy.view. Роли можно назначить и по отдельности в пользовательской роли.
| Право | Что даёт |
|---|---|
osdeploy.view |
Просмотр носителей, образов, заданий, очереди и точек |
osdeploy.images.operate |
Загрузка ISO-образов, редактор образов, публикация версий, пересборка носителя |
osdeploy.deploy.operate |
Создание и отмена заданий установки, одобрение очереди |
osdeploy.points.operate |
Регистрация точек, подсети, режим очереди, проверка связи |
Ограничения текущей версии¶
- Secure Boot на целевых машинах должен быть выключен (ограничение iPXE).
- Поддерживаются семейства РЕД ОС, Astra Linux, Альт и Windows 10/11 (x86_64, UEFI; удалённый старт в PXE для Windows-хостов недоступен — сетевую загрузку выбирают вручную).
- Точка PXE — всегда отдельный хост, совмещение с другими ролями не поддерживается.
- Откат установки не предусмотрен: PXE ставит систему заново (для отката перед обновлениями используйте LVM-снапшоты).
Связанные страницы¶
- PXE: развёртывание в корпоративной инфраструктуре — практическое руководство
- Развёртывание роли PXE
- Порты и переменные
- Конфигурации — шаблон
lsus.linux.domain-join - Хосты — действие «Установить ОС»
- Снапшоты — откат обновлений, не переустановка
- RBAC