USB Appliance
Flashable Alpine + bootimus image for portable PXE servers.
Éditer sur GitHub ↗Appliance USB Bootimus#
Une image Alpine Linux flashable et autonome qui boote sur un serveur PXE Bootimus prêt à l’emploi. Branche-la sur un switch, allume, et chaque machine du même broadcast domain peut booter en PXE dessus — pas de reconfiguration DHCP, pas d’install OS, pas de setup.
Ce qu’il y a dedans#
- Alpine Linux (minimal, ~100 Mo de base)
- bootimus avec proxyDHCP activé par défaut
- Samba servant
/var/lib/bootimus/isosen lecture seule sous\\BOOTIMUS\isospour les installeurs Windows qui veulent un accès SMB pendant le setup - dnsmasq disponible en paquet mais désactivé (le proxyDHCP intégré de bootimus s’en charge par défaut)
- Serveur SSH pour l’administration à distance
Builder l’image#
Prérequis sur l’hôte de build :
- Docker (avec
--privilegeddisponible) - Go 1.24+ pour cross-compiler bootimus
- ~3 Go d’espace disque libre
Le build tourne entièrement dans un conteneur Alpine privilégié — aucun module noyau hôte n’est chargé, aucun outil installé sur ta machine.
make appliance
Produit appliance/build/bootimus-appliance.img — une image disque brute prête à flasher avec Etcher, Rufus, ou dd.
Flasher sur une clé USB#
Identifie ton périphérique cible avec soin — dd écrasera sans demander.
lsblk # find your USB stick, e.g. /dev/sdb
sudo dd if=appliance/build/bootimus-appliance.img \
of=/dev/sdX bs=4M conv=fsync status=progress
sync
Sur macOS/Windows, Etcher ou Rufus fonctionnent directement avec le fichier .img.
Premier boot#
-
Branche la clé USB sur n’importe quel PC avec Ethernet et un réseau filaire.
-
Boote sur USB (menu one-time boot ou changement de priorité dans le BIOS).
-
Alpine boote, récupère son IP par DHCP depuis le LAN, et démarre bootimus + samba + proxyDHCP.
-
La console affiche :
____ _ _ | __ ) ___ ___ | |_(_)_ __ ___ _ _ ___ | _ \ / _ \ / _ \| __| | '_ ` _ \| | | / __| | |_) | (_) | (_) | |_| | | | | | | |_| \__ \ |____/ \___/ \___/ \__|_|_| |_| |_|\__,_|___/ 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) -
Ouvre l’URL admin depuis n’importe quelle autre machine du LAN. Connecte-toi en tant que
adminavec le mot de passe affiché. -
Upload ou scanne des ISOs via l’UI admin — ils atterrissent dans
/var/lib/bootimus/isoset sont immédiatement servis en HTTP et via le partage SMB.
Limitations et compromis#
- Réseau filaire uniquement. Aucun firmware de driver WiFi n’est embarqué. Servir du PXE en WiFi est une idée pourrie de toute façon (broadcast-flooding + latence).
- Pas d’UEFI Secure Boot — l’iPXE embarqué n’est pas signé (comme l’install bootimus standard, vu que la chaîne shim Secure Boot a été retirée en v0.2.x). Les machines cibles avec Secure Boot actif ont besoin de le désactiver, ou d’enrôler le binaire iPXE via MOK.
- Une seule partition. Les ISOs vivent sur la même partition root qu’Alpine. Une clé de 32 Go te laisse ~29 Go pour les ISOs. Pour une bibliothèque plus grosse, étends la partition root manuellement après le premier boot (
resize2fs /dev/sda1) ou rebuild avecIMAGE_SIZE=16G make appliance. - Coexistence proxyDHCP. Si le LAN sur lequel tu te branches a déjà un proxyDHCP dnsmasq/ISC qui annonce du PXE, les deux proxies vont s’engueuler. Désactive l’un : soit
BOOTIMUS_PROXY_DHCP_ENABLED=falsedans/etc/conf.d/bootimus, soit éteins l’autre. - L’appliance est stateful. La clé USB EST le serveur. ISOs, clients, plannings et settings persistent dessus. Si la clé claque en plein milieu d’un déploiement, tu voudras un backup (
make applianceproduit des builds déterministes mais tes données vivent sur la clé — utilise le bouton « Download Backup » dans Settings régulièrement).
Personnaliser#
Le build repose sur trois éléments :
appliance/build.sh— l’orchestrateur. Ajuste les variables d’envIMAGE_SIZEetALPINE_BRANCHsans éditer de code.appliance/setup.sh— tourne dans le chroot de l’image pendant le build. Ajoute des lignesapk addici pour embarquer du tooling supplémentaire.appliance/overlay/— tout fichier déposé ici est copié tel quel dans le rootfs. Éditions courantes :etc/conf.d/bootimus— désactive proxyDHCP, change les ports, fige une IP serveuretc/samba/smb.conf— élargis le partage SMB, ajoute des tweaks spécifiques Windowsetc/network/interfaces— IP statique au lieu du DHCPetc/profile.d/bootimus-motd.sh— remplace la bannière de login
Après chaque modif, relance make appliance.
Accès SSH#
Le login root par mot de passe est désactivé dans l’image (hygiène sécurité — tu serais choqué de voir combien d’images appliance « sécurisées » sortent avec des identifiants par défaut). Pour activer l’admin à distance :
- Boote l’appliance une fois sur la console.
- Lance
passwdpour définir un mot de passe root, OU dépose une clé SSH dans/root/.ssh/authorized_keys. rc-service sshd restart(SSH est déjà activé par défaut mais n’accepte pas les logins sans mot de passe).
Rebuilder sur une nouvelle release bootimus#
Chaque make appliance reprend l’arbre source bootimus actuel. Bump VERSION, fais une release, puis rebuild l’image — le binaire bootimus embarqué affiche la version contre laquelle tu as buildé dans le footer de l’UI admin.