v1.x · apache 2.0 go · iPXE · sqlite/postgres

PXE-загрузка,
без боли.

Автономный PXE- и HTTP-сервер загрузки. Один бинарник. Ноль настроек. Встроенный proxyDHCP — роутер трогать не придётся. 50+ дистрибутивов распознаются автоматически.

pts/0
bootimus — быстрый старт
# Pull, run, PXE boots. Thirty seconds.
$ docker run -d --name bootimus \
    --cap-add NET_BIND_SERVICE \
    -p 67:67/udp -p 69:69/udp \
    -p 8080:8080/tcp -p 8081:8081/tcp \
    -v $(pwd)/data:/data \
    garybowers/bootimus:latest

$ docker logs bootimus | grep Password
admin: Password: 7f3a-plum-swift-echo

$ open http://localhost:8081
50+
дистрибутивов распознано
1
бинарник, ноль зависимостей
0
переконфигов DHCP
2
архитектуры: amd64 · arm64
// возможности

Современный netboot должен выглядеть так.

Не форк Perl-скриптов пятнадцатилетней давности. Не обёртка вокруг dnsmasq. Полноценный сервер на Go, со всем нужным внутри.

[01]

Один бинарник

Go-бинарник с встроенным iPXE, веб-интерфейсом, SQLite и всеми ассетами. Никаких рантайм-зависимостей. scp и запускай.

[02]

Встроенный proxyDHCP

Отвечает на PXE через UDP/67, не задевая ваш существующий DHCP. Ноль изменений в роутере. Подключается к любой LAN.

[03]

50+ дистрибутивов

Автоматическое извлечение kernel/initrd для Ubuntu, Debian, Arch, Fedora, NixOS, Alpine, FreeBSD, Windows (wimboot) и других.

[04]

ACL по MAC-адресу

Назначайте конкретный образ на конкретный MAC. Новые клиенты автоматически обнаруживаются при первом PXE. Лизы повышаются до статических по готовности.

[05]

Инструменты в один клик

GParted, Clonezilla, Memtest86+, SystemRescue, ShredOS, netboot.xyz. Включаете в UI — они появляются в меню.

[06]

JWT + LDAP

Токен-аутентификация с bcrypt. Опциональный бэкенд LDAP/AD с админ-доступом по группам. Локальные учётки остаются как резерв.

[07]

REST API

Всё, что делает UI, — это вызовы API. Скриптуйте назначения загрузки, сканирования, WoL. Поток логов в реальном времени через SSE.

[08]

Работает где угодно

Multi-arch Docker (amd64/arm64), статический бинарник или 2-ГБ Alpine-образ, который можно прошить на USB.

[09]

Автоматическая установка

Бросьте сюда autounattend.xml, kickstart, preseed или cloud-init. Привязывайте к образу как дефолт, переопределяйте на уровне клиента. Bootimus подсунет файл при загрузке — никаких кликов, никаких мастеров.

// как это работает

Жизненный цикл PXE-загрузки.

Клиент шлёт DHCPDISCOVER. Bootimus отвечает PXE-параметрами через proxyDHCP, пока ваш обычный DHCP продолжает раздавать IP. iPXE грузится по TFTP, переходит на HTTP, тянет меню. Пользователь выбирает образ. Kernel и initrd стримятся с сервера. Готово.

pts/0
pxe boot trace — ubuntu-24.04
# Client boots, sends DHCPDISCOVER broadcast
[dhcp]   DHCPDISCOVER from b4:2e:99:01:5f:a3 (no PXE options from primary DHCP)
[proxy]  DHCPOFFER-PXE: next-server=bootimus, filename=ipxe.efi
[tftp]   RRQ ipxe.efi  (198 KiB, 14 ms)

# iPXE loads, chains to HTTP menu
[http]   GET /menu.ipxe  200  2.1 KiB
[menu]  17 images · 3 groups · 6 tools
[menu]  user selected: ubuntu-24.04-live-server

# Kernel + initrd stream over HTTP
[http]   GET /iso/ubuntu-24.04/vmlinuz  200  14 MiB · 612 MB/s
[http]   GET /iso/ubuntu-24.04/initrd   200  76 MiB · 598 MB/s
[boot]  handoff ok · client booting
// прозрачность

100% открыто. Аудит от и до.

Никаких проприетарных блобов. Никакой телеметрии. Никакой втихую вшитой бинарной прошивки. Весь стек лежит на GitHub под Apache 2.0 — клонируйте, проверяйте, форкайте, поднимайте у себя.

  • Один Go-бинарник · статически слинкован, ldd возвращает "not a dynamic executable". Воспроизводимые сборки через make release.
  • Никаких проприетарных блобов · встроенный iPXE — upstream FOSS (GPL-2.0). Закрытой прошивки в комплекте нет.
  • Никакой телеметрии. Никогда. · ноль call-home. Ноль аналитики. Ноль "анонимной статистики". Подходит для air-gap-сетей.
  • Apache 2.0 · разрешительная лицензия. Используйте в коммерции, разворачивайте внутри компании, форкайте без оговорок.
  • Vendored-зависимости, всё FOSS · каждая транзитивная Go-зависимость — open source. go mod why для любого пакета.
  • Свой загрузчик · не доверяете встроенному iPXE? Положите свои подписанные бинарники. Подробности ниже.
pts/0
bootimus version --verbose
$ bootimus version --verbose
bootimus      1.0.0
commit       8e87824 (clean)
go           1.23.4 linux/amd64
build        static · reproducible
licence      Apache-2.0

embedded
  ipxe        1.21.1+upstream  GPL-2.0
  proprietary 0 blobs
  telemetry   disabled (compile-time)

$ ldd ./bootimus
not a dynamic executable

$ sha256sum ./bootimus
7f3a9b0c…  bootimus
// загрузчики

Замените iPXE на то, что нужно вам.

Bootimus поставляется со встроенным iPXE под все распространённые архитектуры. Нужны Microsoft-подписанные бинарники для Secure Boot, кастомно оформленный iPXE, GRUB, syslinux или собственный загрузчик, подписанный внутренним CA? Положите папку в data/bootloaders/, выберите в UI — и готово. Отсутствующие файлы прозрачно откатываются на встроенный набор — загрузка не сломается никогда.

iPXE · UEFI x86_64

ipxe.efi · по умолчанию. Собран из upstream master, встроен в бинарник.

встроено · резерв

iPXE · UEFI ARM64

ipxe-arm64.efi · для Raspberry Pi 4/5, машин на Apple Silicon, ARM-серверов.

встроено · резерв

iPXE · Legacy BIOS

undionly.kpxe · для старого железа без UEFI. В 2026-м всё ещё актуально.

встроено · резерв

Microsoft-подписанный shim

Положите подписанные shimx64.efi + grubx64.efi — для парка с принудительным Secure Boot. Регистрация MOK в прошивке не нужна.

свой · BYO

Кастомно оформленный iPXE

Соберите свой iPXE с брендингом, цветами меню, встроенными скриптами. Положите .efi — и всё.

свой · BYO

GRUB / syslinux / pxelinux

Не iPXE? Не проблема. Всё, что говорит по TFTP и HTTP, работает. Bootimus просто отдаёт байты.

свой · BYO
pts/0
наборы загрузчиков — отказоустойчивость файлов
$ tree /var/lib/bootimus/bootloaders
data/bootloaders
├── ipxe-builtin/          # embedded — always available
│   ├── ipxe.efi
│   ├── ipxe-arm64.efi
│   └── undionly.kpxe
├── ipxe-secureboot/       # your custom set
│   ├── shimx64.efi             (signed by Microsoft)
│   ├── grubx64.efi             (signed by Microsoft)
│   └── ipxe.efi                (signed by your CA)
└── ipxe-themed/
    └── ipxe.efi                (custom branding)

$ bootimus bootloaders use ipxe-secureboot
 active set: ipxe-secureboot
 falls back to ipxe-builtin for: ipxe-arm64.efi, undionly.kpxe

# PXE boot trace, Secure Boot client
[tftp] RRQ shimx64.efi      → ipxe-secureboot/shimx64.efi
[tftp] RRQ ipxe-arm64.efi   → ipxe-builtin/ipxe-arm64.efi (fallback)

Надоело нянчиться с tftpd?

Docker, голое железо или прошиваемая флешка. Выбирайте по вкусу.