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、Web UI、SQLite 和全部资源。无运行时依赖。scp 上去就能跑。

[02]

内建 proxyDHCP

在 UDP/67 上应答 PXE,完全不干扰你现有的 DHCP。路由器零改动。任意局域网即插即用。

[03]

50+ 发行版

自动提取 Ubuntu、Debian、Arch、Fedora、NixOS、Alpine、FreeBSD、Windows (wimboot) 等系统的 kernel/initrd。

[04]

按 MAC 地址 ACL

为每个 MAC 指派专属镜像。首次 PXE 请求自动发现新客户端。准备就绪后将租约提升为静态。

[05]

工具一键启用

GParted、Clonezilla、Memtest86+、SystemRescue、ShredOS、netboot.xyz。UI 里勾选,菜单立即出现。

[06]

JWT + LDAP

bcrypt 加密的 token 认证。可选 LDAP/AD 后端,基于组的管理员权限。本地账号始终作为兜底。

[07]

REST API

UI 能做的事,API 全都能做。脚本化引导分配、扫描、WoL 触发。通过 SSE 实时推送日志流。

[08]

到处都能跑

多架构 Docker (amd64/arm64)、静态二进制,或可烧录到 U 盘的 2GB 基于 Alpine 的设备镜像。

[09]

无人值守安装

把 autounattend.xml、kickstart、preseed 或 cloud-init 文件丢进去。挂到镜像做默认,按客户端覆盖。Bootimus 在引导时自动投放 — 无需点击,无需向导。

// 工作原理

一次 PXE 引导的全生命周期。

客户端发出 DHCPDISCOVER。Bootimus 通过 proxyDHCP 回应 PXE 详情,你原本的 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% 开源。端到端可审计。

没有专有 blob。没有遥测。没有偷偷塞进来的固件二进制。整套技术栈在 GitHub 上以 Apache 2.0 发布 — 克隆、审计、分叉、自部署随你便。

  • 单一 Go 二进制 · 静态链接,ldd 返回 "not a dynamic executable"。make release 产出可复现构建。
  • 没有专有 blob · 内嵌的 iPXE 是上游 FOSS (GPL-2.0)。不附带任何闭源固件。
  • 永远没有遥测 · 零回家上报。零分析统计。零所谓"匿名使用数据"。物理隔离网络可用。
  • Apache 2.0 · 宽松许可证。可商用、可内部部署、可分叉,无附加条款。
  • 依赖全部 vendored,全部 FOSS · 每一个传递性 Go 依赖都是开源的。任何包都可以 go mod why 查到。
  • 自带 bootloader · 不信任内嵌的 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
// bootloaders

把 iPXE 换成你需要的任何东西。

Bootimus 为每种常见架构内嵌了 iPXE。需要 Secure Boot 用的微软签名二进制、定制主题的 iPXE、GRUB、syslinux,或你自家内部 CA 签名的 loader?把文件夹丢到 data/bootloaders/,UI 里勾选,搞定。缺失文件会透明地回退到内嵌套件 — 永远不会引导失败。

iPXE · UEFI x86_64

ipxe.efi · 默认。从上游 master 构建,内嵌进二进制。

内嵌 · 兜底

iPXE · UEFI ARM64

ipxe-arm64.efi · 适用于 Raspberry Pi 4/5、Apple Silicon 主机、ARM 服务器。

内嵌 · 兜底

iPXE · 传统 BIOS

undionly.kpxe · 给那些不会 UEFI 的老设备。2026 年依然有市场。

内嵌 · 兜底

微软签名 shim

把签名的 shimx64.efi + grubx64.efi 丢进去 — 适用于强制 Secure Boot 的集群。无需固件 MOK 注册。

自定义 · BYO

定制主题 iPXE

编译你自己的 iPXE,带品牌标识、定制菜单配色、内嵌脚本。把 .efi 放进去即可。

自定义 · BYO

GRUB / syslinux / pxelinux

不用 iPXE?没问题。任何会 TFTP 和 HTTP 的东西都行。Bootimus 只负责吐字节。

自定义 · BYO
pts/0
bootloader 套件 — 文件回退
$ 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、裸金属,或可烧录的 U 盘。挑一个顺手的。