docs / USB Appliance

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 напрямую.

Первая загрузка#

  1. Воткните USB-флешку в любой ПК с Ethernet и проводной сетью.

  2. Загрузитесь с USB (одноразовое загрузочное меню или приоритет в BIOS).

  3. Alpine стартует, получает IP по DHCP из LAN и запускает bootimus + samba + proxyDHCP.

  4. На консоли показывается:

     ____              _   _
    | __ )  ___   ___ | |_(_)_ __ ___  _   _ ___
    |  _ \ / _ \ / _ \| __| | '_ ` _ \| | | / __|
    | |_) | (_) | (_) | |_| | | | | | | |_| \__ \
    |____/ \___/ \___/ \__|_|_| |_| |_|\__,_|___/
    
      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)
  5. Откройте admin-URL с любой другой машины в LAN. Войдите как admin с напечатанным паролем.

  6. Загружайте или сканируйте 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 вместо DHCP
    • etc/profile.d/bootimus-motd.sh — заменить login-баннер

После любого изменения — make appliance заново.

SSH-доступ#

Логин root по паролю в образе отключён (гигиена — вы удивитесь, сколько «безопасных» appliance-образов поставляются с дефолтными кредами). Чтобы включить удалённое администрирование:

  1. Загрузите аппарат один раз на консоли.
  2. Запустите passwd, чтобы задать пароль root, ИЛИ положите SSH-ключ в /root/.ssh/authorized_keys.
  3. rc-service sshd restart (SSH уже включён по умолчанию, но не принимает беспарольные логины).

Пересборка при выходе нового релиза bootimus#

Каждый запуск make appliance берёт текущее дерево исходников bootimus. Поднимите VERSION, выпустите релиз, потом пересоберите образ — встроенный бинарь bootimus покажет ту версию, против которой собран, в футере админ-UI.