← Назад к «Интерфейсы (UI)»

PXE — сетевая установка ОС

Зачем нужен этот раздел

Разворачивать ОС на новых машинах вручную — это час работы администратора на каждый АРМ: носитель, установка, ввод в домен, агент. Вкладка «PXE» автоматизирует весь цикл: машина включается, загружается по сети, получает операционную систему с нужными настройками, агента LSUS и (опционально) место в домене — без установочного диска и присутствия человека. Поддерживаются РЕД ОС, Astra Linux (включая Special Edition), Альт и Windows 10/11.

Что получается на выходе:

  • Новое «голое» железо ставится с нуля: LSUS замечает незнакомую машину в сети, администратор подтверждает — и она получает готовый образ.
  • Уже известные хосты можно переустановить удалённо из карточки хоста или списком.
  • После установки машина сама появляется в LSUS: агент регистрируется, дальше работают обычные Конфигурации — домен, политики, пакеты, обновления.

lightbulbПрактическое развёртывание

Пошаговый пример для корпоративной среды — с настройкой DHCP и образами Astra Linux 1.8, РЕД ОС 8 и Альт p11 — в руководстве PXE: развёртывание в корпоративной инфраструктуре.

infoКратко

  • Где смотреть: вкладка «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 установки

warningРоль `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 — пакетами ОС. Порядок:

  1. На Master откройте PXE → PXE-точки → «Подключить точку» и нажмите «Выпустить ключ». Регистрационный ключ действует 24 часа.
  2. Установите пакеты роли на хосте точки (пошагово — Установка PXE).
  3. В .env точки укажите LSUS_MASTER_URL и полученный LSUS_PXE_REGISTRATION_KEY. Сертификат Master точка подтянет сама при регистрации — путь к сертификату в настройках заполнять не нужно. Если Master в момент старта ещё не готов, точка повторит регистрацию сама, без перезапуска.
  4. После старта контейнеров точка появится на вкладке 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.

Редактор: раздел Windows

Разметка диска

Новый образ по умолчанию: отдельный /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.

infoОдин рендерер на 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).

warningUEFI / 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.

warning«Перезагрузить в PXE сейчас» работает не везде

Команда BOOT_PXE ставит сетевую загрузку на один раз (--bootnext) и перезагружает хост. Это требует UEFI и наличия сетевой BootEntry в BootOrder — агент собирает эти данные в инвентарь (раздел firmware). Если сетевой записи нет, команда завершится ошибкой с подсказкой, а машине нужен «человек с F12»: вручную выбрать загрузку по сети в меню загрузки.

Подвкладка «Очередь PXE»

Очередь PXE

Очередь MAC, которые загрузились по PXE без активного задания установки. Сюда попадает и новое железо без агента, и уже известный хост, если его загрузили по сети вхолостую. В таблице: MAC, хост из инвентаря (если MAC совпал), архитектура, загрузчик, вендор NIC, когда впервые и последний раз замечены.

Поведение точки задаётся режимом очереди (поле «MAC без задания» в карточке точки):

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

После успешной установки машина проходит enrolled и появляется в списке хостов как обычный управляемый хост.

Подвкладка «PXE-точки»

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 (модуль Конфигурации):

  1. Инсталлятор готовит почву: FQDN, DNS на контроллер домена, NTP, корпоративный CA, репозиторий агента.
  2. Машина регистрируется в LSUS как новая установка.
  3. Шаблон выполняет join: realm join / net ads join (AD, Samba DC, RedADM) или ipa-client-install (FreeIPA, ALD Pro), настраивает sssd и krb5.
  4. Критерий успеха — не код возврата команды, а признак 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-снапшоты).

Связанные страницы