Коротко. Чтобы узел поднялся в live-среду по сети, нужны три независимые вещи: ProxyDHCP с TFTP, HTTP-раздача ISO и правильный режим загрузки BMC (UEFI, сетевой порт первым). Любая из трёх ломается молча: узел висит около минуты и уходит в ребут. Проверять по порядку: что отдаёт HTTP, что отдаёт /pxe/, что стоит в BMC, и только потом трогать BIOS.
1. Два штатных способа попасть в live
| Способ | Когда применяется | Что нужно |
|---|---|---|
| PXE по сети | несколько узлов, повторяемая установка | DHCP/TFTP/HTTP-хост, bootmode=PXE в модели |
| BMC virtual media или USB | один узел, отладка, нет PXE-инфраструктуры | ISO, доступ к BMC |
Оба способа штатные. PXE удобнее для серии, virtual media — когда инфраструктуры нет или она под вопросом. Дальше речь про PXE: именно он даёт больше всего «молчаливых» отказов.
2. Зачем ProxyDHCP, если DHCP уже есть
Основной DHCP (роутер или сервер площадки) выдаёт адрес, шлюз и DNS. Про загрузку он не знает
ничего. Поэтому рядом поднимается ProxyDHCP: он отвечает только клиентам, пришедшим с опцией
60 = PXEClient, и говорит, где взять загрузчик.
На DHCP площадки нужны опции: 66 — адрес TFTP-хоста (next-server), 67 — имя файла
загрузчика, 60 — класс PXEClient, по которому выбирается набор опций. На самом PXE-хосте в
dnsmasq нужны оба объявления:
dhcp-boot=amur.efi,,<ADMIN_NODE>
pxe-service=x86-64_EFI,Boot AMUR,amur.efi
pxe-service важнее: UEFI-стек сначала спрашивает именно ProxyDHCP, и без этого ответа клиент
получает только адрес. Firewall/NAT на шлюзе трогать не нужно — ProxyDHCP не конфликтует с
основным DHCP, пока next-server не меняется.
3. HTTP-раздача ISO и требование к url=
Live-среда грузится не целиком по TFTP: по сети уходит только ядро и initrd, а корневая ФС подтягивается по HTTP. Раздача поднимается на admin-узле:
cd /srv/http && sudo ln -sfn <ISO_PATH> /srv/http/<IMAGE>.iso
sudo python3 -m http.server 8080 --bind <BIND_ADDR> --directory /srv/http &
<BIND_ADDR> — адрес, на котором слушает раздача; в наших прогонах это «все интерфейсы», чтобы
узел мог забрать образ по mgmt-сети.
Ключевое требование — аргумент url= в загрузчике обязан оканчиваться на .iso. В сценарии
casper матчится шаблон url=*.iso; любое другое расширение молча игнорируется: NETBOOT пуст,
дальше 60 секунд сканирования локальных дисков, паника и ребут. Подсунуть squashfs напрямую
(url=...squashfs) нельзя — это не работает.
Второе требование — сам эндпоинт /pxe/. Он должен отдавать реальный файл (порядка нескольких
сотен байт), а не строку LOCALBOOT: LOCALBOOT означает «грузи с диска», и узел честно уйдёт в
ребут.
⚠️ И python3 -m http.server, и dnsmasq в этой схеме — не systemd-юниты. После ребута
admin-узла их нужно поднимать вручную теми же командами. Это самая частая причина «вчера работало,
сегодня нет».
4. Загрузчик и меню AMUR
Загрузчик (amur.efi) собирается заранее, конфиг GRUB вшивается в образ на этапе сборки
(grub-mkimage -c). Поэтому стоковый EFI-grub меню не покажет — это ожидаемо, DHCP при этом
работает штатно. Модули GRUB при этом тянутся по HTTP: каталог grub/x86_64-efi/ на раздаче
должен быть непустым (порядка двух сотен .mod и нескольких .lst), иначе на экране будет
error: file not found.
После загрузки появляется меню live-среды:
1) Start AMUR S3 installation (ActiveScale iso_installer)
2) Check Hardware
3) Drop to shell
Пункт 1 ведёт в установщик ОС, пункт 2 — проверка железа без установки, пункт 3 — шелл (через него
удобно снимать ip -br link и MAC до установки). Вход в live — по учётной записи sysadmin.
5. UEFI против Legacy: где переключается и что ломается
Есть два разных места, и путать их нельзя.
До загрузки (BIOS/BMC). На стоковом BIOS Redfish BootOverride=Pxe может не сработать:
BMC рапортует «Force PXE», а машина грузится с диска (видно по BootCurrent). Лечение — вручную
через KVM включить Network Stack/PXE и поставить сетевой порт первым в BootOrder. Делается на
каждом новом узле; на узле, который уже однажды грузился в live, галки сохраняются.
После stage-1. Установщик делает жёсткий ребут. Дисковая ОС ставит UEFI-grub, поэтому BMC к этому моменту должен смотреть на диск в режиме UEFI:
curl -sk -u <BMC_USER>:<BMC_PASS> -X PATCH -H 'Content-Type: application/json' \
-d '{"Boot":{"BootSourceOverrideTarget":"Hdd","BootSourceOverrideEnabled":"Once","BootSourceOverrideMode":"UEFI"}}' \
https://<BMC_IP>/redfish/v1/Systems/system/
BootSourceOverrideMode обязателен. Если его не задать, OpenBMC подставляет Legacy, и UEFI-grub
с диска не загрузится: узел «молчит» и не появляется в сети. Это же и ответ на вопрос «почему
после установки нода не пингуется».
6. Сеть: mgmt-адрес должен появиться раньше storage
На узле два рабочих порта: management (публичная сеть) и storage (приватная). Если storage-порт поднимается первым и DHCP отвечает в приватной сети, PXE и загрузка уходят не туда. Правило: сначала mgmt-адрес, потом storage; привязка адресов — по MAC, а не по именам интерфейсов.
Снимать факты надо с каждой машины отдельно: в одной и той же модели имена различаются
(enp3s0 на первой, enp3s0f0 на остальных). Копировать строку из machine.json соседнего узла
нельзя.
ip -br link | sort # имена и состояние
cat /sys/class/net/<if>/address # MAC конкретного порта
7. Что проверить на первом узле (до серии)
curl -sI http://<ADMIN_NODE>:8080/<IMAGE>.iso→200и размер образа.curl -s http://<ADMIN_NODE>/pxe/ | head -c 200→ реальный файл, неLOCALBOOT.tftp <ADMIN_NODE> -c get grub-net-efi64-marvin /tmp/x && ls -l /tmp/x→ файл ненулевого размера, совпадающий по размеру с эталоном сборки.curl -sk -u <BMC_USER>:<BMC_PASS> https://<BMC_IP>/redfish/v1/Systems/system/ | jq '.Boot'→BootSourceOverrideTarget: Pxe,BootSourceOverrideMode: UEFI.bootmode=PXEвmachine.jsonи в модели. Приbootmode=DISKустановщик вообще не заходит в веткуosinstallи молча пропускает установку ОС.
Только после этого запускать серию. Проверять PXE на первом узле дешевле, чем разбирать «полустановленный» кластер.
8. Типовые отказы и что они означают
| Что видно | Что это значит |
|---|---|
| висит ~минуту и ребутится | url= без .iso, либо NETBOOT пуст |
| PXE прошёл, меню нет | загрузчик/модули GRUB не отдаются по HTTP |
error: file not found на экране |
пустой каталог grub/x86_64-efi/ |
| BMC пишет «Force PXE», грузится с диска | BIOS игнорирует one-time boot; нужен KVM |
| после установки узел не в сети | Boot остался Legacy, UEFI-grub не стартовал |
| «вчера работало, сегодня нет» | admin-узел ребутнулся, dnsmasq/http.server не юниты |
9. Источники
- X200 Getting Started Guide (дата доступа 2026-11-07)
- Software Documentation Center (дата доступа 2026-11-07)
- Наша практика (обезличено): подъём PXE-инфраструктуры и загрузка узлов в live на 3-нодных стендах.
- Обновлено: 2026-11-07.