USB Appliance
Flashable Alpine + bootimus image for portable PXE servers.
Править на GitHub ↗USB-аппарат Bootimus#
Прошиваемый, автономный образ Alpine Linux, который загружается прямо в готовый PXE-сервер Bootimus. Воткните в коммутатор, включите питание — и каждая машина в том же широковещательном домене может грузиться по PXE. Никакой перенастройки DHCP, никакой установки ОС, никакой настройки.
Что внутри#
- Alpine Linux (минимальный, ~100 МБ базы)
- bootimus со включённым по умолчанию proxyDHCP
- Samba раздаёт
/var/lib/bootimus/isosтолько на чтение как\\BOOTIMUS\isos— для установщиков Windows, которым нужен SMB-доступ во время установки - dnsmasq установлен, но отключён (встроенный proxyDHCP bootimus покрывает это по умолчанию)
- SSH-сервер для удалённого администрирования
Сборка образа#
Требования на хосте сборки:
- Docker (с поддержкой
--privileged) - Go 1.24+ для кросс-компиляции bootimus
- ~3 ГБ свободного места
Сборка полностью идёт внутри привилегированного Alpine-контейнера — никакие модули ядра хоста не загружаются, никакие инструменты на вашу машину не ставятся.
make appliance
На выходе appliance/build/bootimus-appliance.img — обычный disk image, готовый к прошивке через Etcher, Rufus или dd.
Прошивка на USB-флешку#
Внимательно определите целевое устройство — dd перепишет всё без вопросов.
lsblk # найдите вашу USB-флешку, например /dev/sdb
sudo dd if=appliance/build/bootimus-appliance.img \
of=/dev/sdX bs=4M conv=fsync status=progress
sync
На macOS/Windows Etcher или Rufus работают с .img напрямую.
Первая загрузка#
-
Воткните USB-флешку в любой ПК с Ethernet и проводной сетью.
-
Загрузитесь с USB (одноразовое загрузочное меню или приоритет в BIOS).
-
Alpine стартует, получает IP по DHCP из LAN и запускает bootimus + samba + proxyDHCP.
-
На консоли показывается:
____ _ _ | __ ) ___ ___ | |_(_)_ __ ___ _ _ ___ | _ \ / _ \ / _ \| __| | '_ ` _ \| | | / __| | |_) | (_) | (_) | |_| | | | | | | |_| \__ \ |____/ \___/ \___/ \__|_|_| |_| |_|\__,_|___/ 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) -
Откройте admin-URL с любой другой машины в LAN. Войдите как
adminс напечатанным паролем. -
Загружайте или сканируйте ISO через админ-UI — они попадут в
/var/lib/bootimus/isosи сразу станут доступны по HTTP и через SMB-шару.
Оговорки и компромиссы#
- Только проводная сеть. Прошивки для WiFi-драйверов не включены. Раздавать PXE по WiFi — идея в любом случае ужасная (флуд бродкастами + латентность).
- Без UEFI Secure Boot — встроенный iPXE не подписан (как и в обычной установке bootimus, поскольку цепочка Secure Boot shim была убрана в v0.2.x). На целевых машинах с включённым Secure Boot его придётся выключить или зарегистрировать iPXE-бинарь через MOK.
- Один раздел. ISO лежат на том же корневом разделе, что и Alpine. На 32 ГБ-флешке остаётся ~29 ГБ под ISO. Для большой библиотеки расширьте корневой раздел вручную после первой загрузки (
resize2fs /dev/sda1) или пересоберите сIMAGE_SIZE=16G make appliance. - Сосуществование proxyDHCP. Если в LAN, куда вы подключаетесь, уже работает dnsmasq/ISC proxyDHCP с PXE — два прокси будут драться. Отключите один: либо
BOOTIMUS_PROXY_DHCP_ENABLED=falseв/etc/conf.d/bootimus, либо выключите второго. - Аппарат — это состояние. USB-флешка ЭТО сервер. ISO, клиенты, расписания и настройки живут на ней. Если флешка умрёт посреди развёртывания — нужен бэкап (
make applianceдаёт детерминированные сборки, но данные живут на флешке — регулярно нажимайте «Download Backup» в настройках).
Кастомизация#
Сборка управляется тремя вещами:
appliance/build.sh— оркестратор. МеняйтеIMAGE_SIZEиALPINE_BRANCHчерез env vars, не трогая код.appliance/setup.sh— выполняется внутри chroot образа во время сборки. Добавьте сюдаapk add, чтобы включить нужные инструменты.appliance/overlay/— любой файл отсюда копируется в rootfs как есть. Типичные правки:etc/conf.d/bootimus— выключить proxyDHCP, поменять порты, прибить статический IP сервераetc/samba/smb.conf— расширить SMB-шару, добавить Windows-специфичные тюнингиetc/network/interfaces— статический IP вместо DHCPetc/profile.d/bootimus-motd.sh— заменить login-баннер
После любого изменения — make appliance заново.
SSH-доступ#
Логин root по паролю в образе отключён (гигиена — вы удивитесь, сколько «безопасных» appliance-образов поставляются с дефолтными кредами). Чтобы включить удалённое администрирование:
- Загрузите аппарат один раз на консоли.
- Запустите
passwd, чтобы задать пароль root, ИЛИ положите SSH-ключ в/root/.ssh/authorized_keys. rc-service sshd restart(SSH уже включён по умолчанию, но не принимает беспарольные логины).
Пересборка при выходе нового релиза bootimus#
Каждый запуск make appliance берёт текущее дерево исходников bootimus. Поднимите VERSION, выпустите релиз, потом пересоберите образ — встроенный бинарь bootimus покажет ту версию, против которой собран, в футере админ-UI.