Bootimus – 독립형 PXE 및 HTTP 부트 서버
요약
Bootimus는 iPXE, 웹 UI, SQLite가 내장된 단일 Go 바이너리 형태의 독립형 PXE 및 HTTP 부트 서버입니다. 별도의 설정 없이 proxyDHCP를 통해 라우터 수정 없이도 다양한 배포판의 네트워크 부팅을 지원합니다.
핵심 포인트
- 단일 바이너리로 구성되어 별도의 런타임 의존성 없이 즉시 실행 가능
- proxyDHCP 지원으로 기존 라우터 설정 변경 없이 LAN 환경에 투입 가능
- 50개 이상의 배포판 자동 감지 및 커널/initrd 자동 추출 기능 제공
- API 기반의 UI 제어 및 스크립트 작성을 통한 자동화 지원
- Docker, 정적 바이너리, Alpine 기반 어플라이언스 등 다양한 배포 방식 제공
단일 바이너리 (Single binary)
iPXE, 웹 UI (Web UI), SQLite 및 모든 에셋이 내장된 Go 바이너리입니다. 별도의 런타임 의존성(runtime deps)이 없습니다. Scp로 전송하고 바로 실행하세요.
독립형(Self-contained) PXE 및 HTTP 부트 서버입니다. 단 하나의 바이너리, 설정 제로(Zero config). 내장된 proxyDHCP 덕분에 라우터를 건드릴 필요가 없습니다. 50개 이상의 배포판(distros)을 자동으로 감지합니다.
Pull, 실행, PXE 부트. 30초면 충분합니다. $ 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
iPXE, 웹 UI (Web UI), SQLite 및 모든 에셋이 내장된 Go 바이너리입니다. 별도의 런타임 의존성(runtime deps)이 없습니다. Scp로 전송하고 바로 실행하세요.
기존 DHCP를 건드리지 않고 UDP/67 포트로 PXE에 응답합니다. 라우터 재설정이 필요 없습니다. 어떤 LAN 환경에도 바로 투입할 수 있습니다.
Ubuntu, Debian, Arch, Fedora, NixOS, Alpine, FreeBSD, Windows (wimboot) 등을 위한 커널/initrd 자동 추출 기능을 제공합니다.
MAC 주소별로 특정 이미지를 할당합니다. 첫 PXE 시 새로운 클라이언트를 자동 감지합니다. 준비가 되면 임대(leases)를 정적(static)으로 승격시킵니다.
GParted, Clonezilla, Memtest86+, SystemRescue, ShredOS, netboot.xyz를 지원합니다. UI에서 활성화하면 메뉴에 나타납니다.
bcrypt를 사용한 토큰 인증(Token auth)을 지원합니다. 그룹 기반 관리 기능을 갖춘 선택적 LDAP/AD 백엔드를 사용할 수 있습니다. 로컬 계정은 폴백(fallback)용으로 유지됩니다.
UI에서 수행하는 모든 작업은 API 호출입니다. 부트 할당, 스캔, WOL 트리거를 스크립트로 작성하세요. SSE를 통해 실시간 로그 스트림을 제공합니다.
멀티 아키텍처 Docker (amd64/arm64), 정적 바이너리(static binary), 또는 USB에 플래싱할 수 있는 2GB 규모의 Alpine 기반 어플라이언스(appliance) 이미지를 제공합니다.
autounattend.xml, kickstart, preseed 또는 cloud-init 파일을 넣으세요. 이미지를 기본값으로 연결하거나 클라이언트별로 재정의할 수 있습니다. Bootimus는 부팅 시 이를 스테이징(stages)합니다 — 클릭도, 설정 마법사도 필요 없습니다.
클라이언트 부팅, DHCPDISCOVER 브로드캐스트 송신 [dhcp] → b4:2e:99:01:5f:a3로부터의 DHCPDISCOVER (기본 DHCP로부터 PXE 옵션 없음) [proxy] ← DHCPOFFER-PXE: next-server=bootimus, filename=ipxe.efi [tftp] → RRQ ipxe.efi (198 KiB, 14 ms) # iPXE 로드, HTTP 메뉴로 체이닝 (chaining) [http] → GET /menu.ipxe 200 2.1 KiB [menu] ↳ 17개 이미지 · 3개 그룹 · 6개 도구 [menu] ↳ 사용자 선택: ubuntu-24.04-live-server # HTTP를 통해 커널 (Kernel) + initrd 스트리밍 [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) 성공 · 클라이언트 부팅 중
$ 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.efi · 기본값. 업스트림 (upstream) 마스터에서 빌드되었으며, 바이너리에 내장되어 있습니다.
embedded · fallbackipxe-arm64.efi · Raspberry Pi 4/5, Apple Silicon 호스트, ARM 서버용.
embedded · fallbackundionly.kpxe · UEFI를 지원하지 않는 구형 장비용. 2026년에도 여전히 유효합니다.
embedded · fallback서명된 shimx64.efi + grubx64.efi를 넣어 Secure-Boot가 강제되는 환경에 사용하세요. 펌웨어 MOK 등록이 필요하지 않습니다.
custom · BYO브랜딩, 사용자 정의 메뉴 색상, 내장 스크립트를 포함하여 자신만의 iPXE를 컴파일하세요. .efi 파일을 넣기만 하면 됩니다.
custom · BYO iPXE가 아니어도 괜찮습니다? 문제없습니다. TFTP와 HTTP를 지원하는 것이라면 무엇이든 작동합니다. Bootimus는 그저 바이트 (bytes)를 제공할 뿐입니다.
custom · BYO$ tree /var/lib/bootimus/bootloaders
data/bootloaders
├── ipxe-builtin/ # 내장형 (embedded) — 항상 사용 가능
│ ├── ipxe.efi
│ ├── ipxe-arm64.efi
│ └── undionly.kpxe
├── ipxe-secureboot/ # 사용자 정의 세트 (your custom set)
│ ├── shimx64.efi (Microsoft에 의해 서명됨)
│ ├── grubx64.efi (Microsoft에 의해 서명됨)
│ └── ipxe.efi (사용자의 CA에 의해 서명됨)
└── ipxe-themed/
└── ipxe.efi (커스텀 브랜딩)
$ bootimus bootloaders use ipxe-secureboot
✓ 활성 세트 (active set): ipxe-secureboot
✓ 다음 항목에 대해 ipxe-builtin으로 폴백 (falls back): ipxe-arm64.efi, undionly.kpxe
PXE 부트 트레이스 (PXE boot trace), Secure Boot 클라이언트
[tftp] RRQ shimx64.efi → ipxe-secureboot/shimx64.efi
[tftp] RRQ ipxe-arm64.efi → ipxe-builtin/ipxe-arm64.efi (폴백)
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기