Bootimus — 一个自包含的PXE和HTTP启动服务器
摘要
Bootimus是一个自包含的PXE和HTTP启动服务器,使用Go语言编写,提供零配置、嵌入式iPXE,并支持超过50种发行版。它完全开源,基于Apache 2.0许可,无遥测功能。
暂无内容
查看缓存全文
缓存时间: 2026/06/20 14:23
# Bootimus — 现代 PXE/HTTP 启动服务器
来源:https://bootimus.com/
v1.x · Apache 2.0 · Go · iPXE · SQLite/PostgreSQL
## PXE 启动,从此告别繁琐。
自包含的 PXE 和 HTTP 启动服务器。单一二进制文件。零配置。内置 proxyDHCP,无需触碰路由器。自动识别 50 多种发行版。
pts/0
bootimus — 快速开始
``
$ 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
``
// 功能特性## 现代网络启动方案应有的样子。
不是对 15 年前 Perl 脚本的复刻,也不是 dnsmasq 的包装器。一个用 Go 编写、功能完备的真正服务器。
内嵌 iPXE、Web UI、SQLite 及所有资源文件的 Go 二进制文件。无需运行时依赖。直接 scp 即可运行。
在 UDP/67 端口响应 PXE 请求,不影响现有 DHCP。无需任何路由器配置。可直接部署在任何局域网。
自动提取 Ubuntu、Debian、Arch、Fedora、NixOS、Alpine、FreeBSD、Windows(wimboot)及更多系统的内核/initrd。
可按 MAC 地址分配特定镜像。首次 PXE 时自动发现新客户端。随时将租约提升为静态。
GParted、Clonezilla、Memtest86+、SystemRescue、ShredOS、netboot.xyz。从 UI 启用,即可出现在菜单中。
采用 bcrypt 令牌认证。可选 LDAP/AD 后端,支持基于用户组的权限控制。本地账户作为后备方案。
UI 的所有操作均可通过 API 调用。脚本化启动分配、扫描、WOL 触发。支持 SSE 实时日志流。
多架构 Docker(amd64/arm64)、静态二进制,或可刷写到 USB 的 2GB Alpine 设备镜像。
放入 autounattend.xml、kickstart、preseed 或 cloud-init。作为镜像的默认配置附加,或按客户端覆盖。Bootimus 在启动时自动加载——无需点击,无需设置向导。
// 工作原理## PXE 启动的完整生命周期。
客户端发送 DHCPDISCOVER。Bootimus 通过 proxyDHCP 响应 PXE 细节,而你的正常 DHCP 仍然分配 IP。iPXE 通过 TFTP 加载,链式跳转到 HTTP,获取菜单。用户选择镜像。内核和 initrd 从服务器流式传输。完成。
pts/0
pxe 启动追踪 —— ubuntu-24.04
``
[dhcp] → DHCPDISCOVER from b4:2e:99:01:5f:a3 (主 DHCP 未提供 PXE 选项)
[proxy] ← DHCPOFFER-PXE: next-server=bootimus, filename=ipxe.efi
[tftp] → RRQ ipxe.efi (198 KiB, 14 ms)
[http] → GET /menu.ipxe 200 2.1 KiB
[menu] ↳ 17 个镜像 · 3 个分组 · 6 个工具
[menu] ↳ 用户选择: ubuntu-24.04-live-server
[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 · 客户端正在启动
``
// 透明度## 100% 开源。全程可审计。
无专有 blob。无遥测。无偷偷捆绑的二进制固件。整个栈在 GitHub 上采用 Apache 2.0 许可证——克隆、审计、复刻、自行部署均可。
- ✓ **单一 Go 二进制文件** · 静态链接,`ldd` 返回 "not a dynamic executable"。通过 `make release` 实现可重现构建。
- ✓ **无专有 blob** · 内嵌的 iPXE 是上游 FOSS(GPL-2.0)。未附带任何闭源固件。
- ✓ **永远无遥测** · 零回传。零分析。零“匿名使用统计”。安全适用于气隙局域网。
- ✓ **Apache 2.0** · 宽松许可。可在商业环境中使用,内部部署,自由复刻。
- ✓ **所有依赖均为 FOSS** · 每个传递性 Go 依赖都是开源的。`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 签名的二进制文件用于安全启动、自定义主题的 iPXE、GRUB、syslinux,或你自己的内部 CA 签名加载器?在 `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 年仍有用途。
内嵌 · 回退
### Microsoft 签名的 shim
放入已签名的 shimx64.efi + grubx64.efi,用于安全启动强制部署的机器。无需固件 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/
│ ├── ipxe.efi
│ ├── ipxe-arm64.efi
│ └── undionly.kpxe
├── ipxe-secureboot/
│ ├── shimx64.efi (由 Microsoft 签名)
│ ├── grubx64.efi (由 Microsoft 签名)
│ └── ipxe.efi (由你的 CA 签名)
└── ipxe-themed/
└── ipxe.efi (自定义品牌)
$ bootimus bootloaders use ipxe-secureboot
✓ 激活集合: ipxe-secureboot
✓ 缺失文件回退到 ipxe-builtin: ipxe-arm64.efi, undionly.kpxe
[tftp] RRQ shimx64.efi → ipxe-secureboot/shimx64.efi
[tftp] RRQ ipxe-arm64.efi → ipxe-builtin/ipxe-arm64.efi (回退)
``
## 准备好告别繁琐的 tftpd 管理了吗?
支持 Docker、裸金属或可刷写 USB。任你选择。
相似文章
Knoppix
KNOPPIX是一个可启动的Live Linux系统,位于CD、DVD或USB上,提供自动硬件检测以及无需安装即可使用的完整桌面环境。可用于日常工作、教育或作为救援系统。
QEMU/OVMF环境下UEFI HTTP(s)启动介绍
本文提供使用QEMU和OVMF设置UEFI HTTP和HTTPS启动的教程,强调需要随机数生成器设备,并展示最小配置。
裸启动Linux
本文介绍如何创建一个运行单进程的最小化Linux启动,精简通常的initramfs,使启动时间小于一秒。
Jinx:用于引导操作系统发行版的元构建系统
Jinx是一个用于引导操作系统发行版的元构建系统,其设计灵感来源于xbstrap以及Void Linux和Arch Linux的包构建系统。
Lanzaboote – NixOS 安全启动
本文介绍了 Lanzaboote,这是一个用 Rust 编写的 UEFI UKI 存根,可为 NixOS 提供安全启动支持。它将签名检查推迟到 UEFI 阶段执行,同时保持内核和 initrd 与 UKI 二进制文件分离,从而解决了 NixOS 特有的启动挑战。