부티무스(Bootimus): 복잡한 설정 없는 단일 바이너리 PXE 부트 서버
부티무스(Bootimus)는 복잡한 설정이나 기존 라우터 변경 없이도 네트워크를 통한 OS 설치(PXE 부팅)를 가능하게 해주는 오픈소스 서버 소프트웨어입니다. 단일 실행 파일 하나만으로 구동되며 내장 proxyDHCP를 통해 50여 종의 리눅스 및 운영체제 이미지를 자동으로 인식하고 네트워크 부팅 메뉴를 제공합니다. 시스템 관리자와 IT 실무자들이 대규모 PC나 서버에 OS를 빠르고 손쉽게 배포할 수 있도록 도와주는 매우 유용한 도구입니다.
원문 제목: 부티무스(Bootimus) - 자체完結型 PXE 및 HTTP 부트 서버 소스: 해커뉴스(hackernews) 본문: v1.x · apache 2.0 go · iPXE · sqlite/postgres
더 이상의 골칫거리 없는 PXE 부팅. 자체完結型 PXE 및 HTTP 부트 서버. 단일 바이너리(실행 파일). 설정 제로(Zero config). 공유기(라우터) 설정을 건드릴 필요가 없는 내장 proxyDHCP 지원. 50개 이상의 배포판 자동 인식.
$ get bootimus 소스 보기 →
pts/0 bootimus — 빠른 시작
다운로드하고 실행하면 바로 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
[0] bash * 1:vim 2:htop "bootimus" 14:11 50+개 배포판 인식됨 1개 바이너리, 의존성 0 0번의 DHCP 재설정 2개 아키텍처: amd64 · arm64
[01] 단일 바이너리 iPXE, 웹 UI, SQLite 및 모든 자산이 내장된 Go 바이너리입니다. 런타임 의존성이 없습니다. SCP로 복사해서 실행하기만 하면 됩니다.
[02] 내장 proxyDHCP 기존 DHCP 설정을 건드리지 않고 UDP/67에서 PXE 요청에 응답합니다. 공유기 재설정이 필요 없습니다. 어떤 근거리 통신망(LAN)에도 즉시 투입할 수 있습니다.
[03] 50개 이상의 배포판 Ubuntu, Debian, Arch, Fedora, NixOS, Alpine, FreeBSD, Windows(wimboot) 등에 대한 커널 및 initrd(초기 램 디스크)를 자동으로 추출합니다.
[04] MAC 기반 접근 제어(ACL) MAC 주소별로 특정 이미지를 할당합니다. 첫 PXE 부팅 시 새 클라이언트를 자동으로 검색합니다. 준비가 되면 할당된 임대 IP를 고정(static)으로 승격시킵니다.
[05] 원클릭 도구 GParted, Clonezilla, Memtest86+, SystemRescue, ShredOS, netboot.xyz를 지원합니다. UI에서 활성화하면 부팅 메뉴에 바로 나타납니다.
[06] JWT + LDAP bcrypt 기반 토큰 인증을 지원합니다. 그룹 기반 관리자 권한을 위해 LDAP/AD 백엔드를 선택적으로 사용할 수 있습니다. 로컬 계정은 폴백(대체 수단)으로 유지됩니다.
[07] REST API UI에서 수행하는 모든 작업은 API 호출로 이루어집니다. 부팅 할당, 스캔, WOL(네트워크 켜기) 트리거 등을 스크립팅할 수 있습니다. SSE를 통한 실시간 로그 스트리밍을 지원합니다.
[08] 어디서나 실행 가능 멀티 아키텍처 Docker(amd64/arm64), 정적 바이너리, 또는 USB에 플래시(굽기)할 수 있는 2GB 크기의 Alpine 기반 어플라이언스 이미지 형태로 실행할 수 있습니다.
[09] 무인 설치 autounattend.xml, kickstart, preseed 또는 cloud-init 파일을 넣기만 하면 됩니다. 이미지의 기본값으로 연결하거나 클라이언트마다 개별적으로 재정의할 수 있습니다. 부티무스가 부팅 시 해당 설정을 적용하므로 클릭이나 설치 마법사가 필요 없습니다.
pts/0 pxe 부팅 추적 — ubuntu-24.04
클라이언트가 부팅되어 DHCPDISCOVER 브로드캐스트를 전송합니다.
[dhcp] → b4:2e:99:01:5f:a3에서 오는 DHCPDISCOVER (기본 DHCP에는 PXE 옵션이 없음) [proxy] ← DHCPOFFER-PXE: 다음 서버=bootimus, 파일명=ipxe.efi [tftp] → RRQ ipxe.efi (198 KiB, 14 ms)
iPXE가 로드되고 HTTP 메뉴로 연결됩니다.
[http] → GET /menu.ipxe 200 2.1 KiB [menu] ↳ 17개 이미지 · 3개 그룹 · 6개 도구 [menu] ↳ 사용자 선택: ubuntu-24.04-live-server
커널 및 initrd가 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) · 클라이언트 부팅 중
[0] bash * 1:vim 2:htop "bootimus" 14:11 ✓ 단일 Go 바이너리 · 정적으로 링크됨, ldd 명령어 실행 시 "not a dynamic executable" 반환. make release를 통해 재현 가능한 빌드 제공. ✓ 독점 바이너리 블롭(blobs) 없음 · 내장된 iPXE는 업스트림 FOSS(GPL-2.0)입니다. 폐쇄형 소스 펌웨어가 포함되어 있지 않습니다. ✓ 텔레메트리 전면 불가 · 콜홈(데이터 전송) 없음. 분석 데이터 수집 없음. "익명 사용 통계" 수집 없음. 폐쇄망(Air-gapped LAN)에서 안전하게 사용 가능. ✓ Apache 2.0 · 허용적 라이선스. 상업 환경에서 사용, 내부 배포, 조건 없는 포크(fork)가 가능합니다. ✓ 종속성 포함, 모든 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 [0] bash * 1:vim 2:htop "bootimus" 14:11 iPXE · UEFI x86_64 ipxe.efi · 기본값. 업스트림 마스터에서 빌드되어 바이너리에 포함됨. 내장됨 · 대체용 iPXE · UEFI ARM64 ipxe-arm64.efi · 라즈베리 파이 4/5, 애플 실리콘 호스트, ARM 서버용. 내장됨 · 대체용 iPXE · 레거시 BIOS undionly.kpxe · UEFI를 지원하지 않는 구형 기기용. 2026년에도 여전히 쓸모가 있습니다. 내장됨 · 대체용 마이크로소프트 서명 shim 서명된 shimx64를 넣어서 사용하세요.