USB Appliance
Flashable Alpine + bootimus image for portable PXE servers.
Auf GitHub bearbeiten ↗Bootimus USB-Appliance#
Ein flashbares, eigenständiges Alpine-Linux-Image, das in einen einsatzbereiten Bootimus-PXE-Server bootet. In einen Switch stecken, Strom dran — und jede Maschine in derselben Broadcast-Domäne kann per PXE dagegen booten. Keine DHCP-Umkonfiguration, keine OS-Installation, kein Setup.
Was drin ist#
- Alpine Linux (minimal, ~100 MB Basis)
- bootimus mit standardmäßig aktiviertem proxyDHCP
- Samba stellt
/var/lib/bootimus/isosschreibgeschützt als\\BOOTIMUS\isosbereit — für Windows-Installer, die während Setup SMB-Zugriff wollen - dnsmasq-Paket verfügbar, aber deaktiviert (das eingebaute proxyDHCP von bootimus deckt das standardmäßig ab)
- SSH-Server für Remote-Admin
Image bauen#
Voraussetzungen auf dem Build-Host:
- Docker (mit verfügbarem
--privileged) - Go 1.24+ für das Cross-Kompilieren von bootimus
- ~3 GB freier Speicherplatz
Der Build läuft komplett innerhalb eines privilegierten Alpine-Containers — keine Host-Kernel-Module werden geladen, keine Tools auf deiner Maschine installiert.
make appliance
Erzeugt appliance/build/bootimus-appliance.img — ein einfaches Disk-Image, bereit zum Flashen mit Etcher, Rufus oder dd.
Auf einen USB-Stick flashen#
Identifiziere dein Zielgerät sorgfältig — dd überschreibt ohne Nachfrage.
lsblk # finde deinen USB-Stick, z.B. /dev/sdb
sudo dd if=appliance/build/bootimus-appliance.img \
of=/dev/sdX bs=4M conv=fsync status=progress
sync
Unter macOS/Windows funktionieren Etcher oder Rufus direkt mit der .img-Datei.
Erster Boot#
-
Stecke den USB-Stick in einen beliebigen PC mit Ethernet und kabelgebundenem Netzwerk.
-
Boote vom USB (einmaliges Boot-Menü oder BIOS-Priorität ändern).
-
Alpine bootet, holt sich per DHCP eine IP aus dem LAN und startet bootimus + samba + proxyDHCP.
-
Die Konsole zeigt:
____ _ _ | __ ) ___ ___ | |_(_)_ __ ___ _ _ ___ | _ \ / _ \ / _ \| __| | '_ ` _ \| | | / __| | |_) | (_) | (_) | |_| | | | | | | |_| \__ \ |____/ \___/ \___/ \__|_|_| |_| |_|\__,_|___/ Appliance: bootimus Admin UI: http://10.0.0.42:8081 PXE HTTP: http://10.0.0.42:8080 SMB share: //10.0.0.42/isos (read-only, guest) Initial admin password: <printed once> (delete /var/lib/bootimus/admin-password.txt after you've saved it) -
Öffne die Admin-URL von einer anderen Maschine im LAN. Melde dich als
adminmit dem ausgegebenen Passwort an. -
Lade ISOs über das Admin-UI hoch oder scanne sie ein — sie landen in
/var/lib/bootimus/isosund werden sofort über HTTP und die SMB-Freigabe ausgeliefert.
Vorbehalte und Tradeoffs#
- Nur kabelgebundenes Netzwerk. Keine WiFi-Treiber-Firmware ist gebündelt. PXE über WiFi auszuliefern ist sowieso eine furchtbare Idee (Broadcast-Flooding + Latenz).
- Kein UEFI Secure Boot — das mitgelieferte iPXE ist unsigniert (genau wie die reguläre bootimus-Installation, seit die Secure-Boot-Shim-Chain in v0.2.x entfernt wurde). Zielmaschinen mit aktiviertem Secure Boot müssen es deaktivieren oder die iPXE-Binary per MOK enrolen.
- Eine einzige Partition. ISOs liegen auf derselben Root-Partition wie Alpine. Ein 32-GB-Stick gibt dir ~29 GB für ISOs. Für eine größere Library erweitere die Root-Partition manuell nach dem ersten Boot (
resize2fs /dev/sda1) oder baue mitIMAGE_SIZE=16G make applianceneu. - proxyDHCP-Koexistenz. Wenn das LAN, in das du dich einklinkst, schon einen dnsmasq/ISC-proxyDHCP hat, der PXE ausspielt, prügeln sich zwei Proxies. Schalte einen ab: entweder setze
BOOTIMUS_PROXY_DHCP_ENABLED=falsein/etc/conf.d/bootimusoder schalte den anderen aus. - Die Appliance ist zustandsbehaftet. Der USB-Stick IST der Server. ISOs, Clients, Pläne und Einstellungen liegen dauerhaft auf ihm. Wenn der Stick mitten im Deploy abraucht, willst du ein Backup haben (
make applianceerzeugt deterministische Builds, aber deine Daten liegen auf dem Stick — nutze regelmäßig den “Download Backup”-Button in den Einstellungen).
Anpassen#
Der Build wird von drei Teilen gesteuert:
appliance/build.sh— Orchestrator. StelleIMAGE_SIZEundALPINE_BRANCHals Env-Vars um, ohne Code zu editieren.appliance/setup.sh— läuft beim Build innerhalb des Image-chroot. Füge hierapk add-Zeilen ein, um zusätzliches Tooling zu bündeln.appliance/overlay/— jede Datei, die hier abgelegt wird, kommt unverändert ins Rootfs. Übliche Anpassungen:etc/conf.d/bootimus— proxyDHCP abschalten, Ports ändern, eine bestimmte Server-IP festnagelnetc/samba/smb.conf— SMB-Freigabe öffnen, Windows-spezifische Tweaks hinzufügenetc/network/interfaces— statische IP statt DHCPetc/profile.d/bootimus-motd.sh— Login-Banner austauschen
Nach jeder Änderung make appliance erneut ausführen.
SSH-Zugriff#
Root-Login per Passwort ist im Image deaktiviert (Security-Hygiene — du wärst schockiert, wie viele “sichere” Appliance-Images mit Default-Credentials ausgeliefert werden). Um Remote-Admin zu aktivieren:
- Starte die Appliance einmal an der Konsole.
- Führe
passwdaus, um ein Root-Passwort zu setzen, ODER legge einen SSH-Key in/root/.ssh/authorized_keysab. rc-service sshd restart(SSH ist bereits standardmäßig aktiviert, akzeptiert aber keine passwortlosen Logins).
Rebuild bei neuem bootimus-Release#
Jedes make appliance zieht den aktuellen bootimus-Source-Tree. VERSION hochziehen, ein Release schneiden, dann das Image neu bauen — die mitgelieferte bootimus-Binary meldet die Version, gegen die du gebaut hast, im Footer des Admin-UI.