
Быстрый и безопасный генератор initramfs

Booster делает раннюю загрузку более лёгкой, быстрой и надёжной. Он создаёт компактные образы initramfs, которые переводят вашу Linux-систему от прошивки к настоящей корневой файловой системе с минимальными усилиями и мощной поддержкой зашифрованной загрузки.
Вместо того чтобы упаковывать большое универсальное раннее пользовательское пространство, Booster определяет, что реально нужно вашей машине, и строит целенаправленный образ вокруг этого. Результат — компактный загрузочный образ с драйверами, инструментами для разблокировки, поддержкой файловых систем и путями восстановления, необходимыми вашему хосту, без протаскивания «кухонной раковины» в каждую перезагрузку.
Booster построен на простом обещании: ранняя загрузка должна быть быстрой, понятной, безопасной и приятной в использовании.
Основные преимущества:
systemd-cryptenroll TPM2 и FIDO2-токенов, включая нативную поддержку FIDO2 через плагинный путь Booster.Booster отлично подходит для зашифрованных ноутбуков, рабочих станций разработчиков, серверов с возможностью удалённого восстановления, минимальных Linux-систем и загрузочных конфигураций, которые должны оставаться понятными через годы после настройки.
Booster рассматривает полнодисковое шифрование как первоклассный рабочий процесс, а не дополнение.
Он может разблокировать LUKS-устройства из параметров ядра, /etc/crypttab, GPT-автообнаружения, прямых ссылок root= на LUKS-контейнеры, файлов ключей, отделённых заголовков и аппаратно-поддерживаемых токенов.
Поддерживаемые стили разблокировки включают:
systemd-cryptenroll TPM2 и FIDO2.Оркестровка токенов Booster спроектирована так, чтобы зашифрованная загрузка ощущалась продуманной. Неинтерактивные токены могут работать в фоне, PIN-токены запрашиваются в детерминированном порядке, а обычный запрос пароля появляется как запасной вариант, а не блокирует загрузку навсегда.
Недавние улучшения FIDO2 делают работу ещё более плавной:
enable_fido2: true.crypttab с fido2-device= может заставить Booster автоматически включить плагин FIDO2.По умолчанию Booster создаёт образ, специфичный для хоста. Он смотрит на текущую систему, включает модули и инструменты, необходимые для её загрузки, и оставляет ненужные части. Это делает образ проще для аудита, быстрее генерируется и быстрее выполняется во время загрузки.
Когда требуется более широкий образ, --universal включает расширенный набор модулей для сценариев восстановления, переносных носителей или систем, где оборудование может меняться.
Booster поддерживает практичные реальные конфигурации загрузки, включая:
UUID=, LABEL=, PARTUUID=, PARTLABEL=, HWPATH=, WWID= или /dev/..../etc/crypttab.Когда что-то идёт не так, Booster даёт полезные способы увидеть, что произошло.
Используйте booster.log=debug,console для подробных логов загрузки, добавьте busybox для аварийной оболочки или включите поддержку сети, чтобы получить логи с незагружаемой машины.
Booster также включает команды для проверки образа, так что вы можете убедиться, что было построено, до перезагрузки:
booster ls /boot/booster-linux.img
booster cat /boot/booster-linux.img /init
booster unpack /boot/booster-linux.img /tmp/booster-image
Установите официальный пакет:
pacman -S booster
Пакет создаёт образы Booster в /boot/:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
Установите Booster с помощью:
xbps-install -S booster
Затем пересоздайте initramfs для уже установленного ядра:
xbps-reconfigure -f linux
Установите Booster с помощью:
apk add booster
Затем прочитайте /usr/share/doc/booster/README.alpine для инструкций по настройке загрузчика, специфичных для этой системы.
Вы также можете построить образ напрямую:
booster build /boot/booster-linux.img
Для более портативного образа с более широким набором оборудования:
booster build --universal /boot/booster-linux.img
После создания образа укажите на него в вашем загрузчике. Полные сведения о конфигурации см. в странице руководства Booster.
Создайте образ, специфичный для хоста:
booster build booster.img
Создайте образ для конкретного ядра:
booster build --kernel-version 6.8.9-arch1-1 /boot/booster-linux.img
Просмотрите сгенерированный образ:
booster ls /boot/booster-linux.img
Пересоздайте образы из пакетов после изменения /etc/booster.yaml:
/usr/lib/booster/regenerate_images
Сгенерируйте Unified Kernel Image, если ваш дистрибутив предоставляет systemd-ukify:
/usr/lib/booster/regenerate_uki build /boot/EFI/Linux
Booster настроен намеренно минималистично. Для простого зашифрованного ноутбука часто не требуется никакого большого конфигурационного файла. Добавьте только те функции, которые нужны вашему загрузочному пути:
compression: zstd
vconsole: true
enable_fido2: true
enable_lvm: true
enable_mdraid: true
Для удалённой разблокировки через SSH:
network:
dhcp: on
ssh_host_key: /etc/booster/ssh_host_ed25519_key
ssh_authorized_keys: /etc/booster/authorized_keys
ssh_listen: :22
Для более плавного порядка токенов, когда включено несколько аппаратных методов разблокировки:
serialize_tokens:
enabled: true
clevis_timeout: 45s
tpm2_timeout: 15s
fido2_timeout: 30s
Для поддержки заставки Plymouth:
enable_plymouth: true
modules_force_load: amdgpu
Используйте quiet splash в командной строке ядра и избегайте booster.log=console, если хотите графическую заставку.
Полная документация пользователя находится в странице руководства Booster. Она охватывает:
/etc/booster.yaml./etc/crypttab.Booster находится в той же области, что и mkinitcpio и dracut. Его фокус — быстрый, компактный генератор initramfs на Go с сильной эргономикой зашифрованной загрузки и автоматическим обнаружением хоста.
Проект состоит из трёх основных частей:
init — программа раннего пользовательского пространства, запускаемая во время загрузки.generator — инструмент, создающий образ initramfs.tests — QEMU-интеграционные тесты для сгенерированных образов.Сборка стандартными инструментами Go:
go build ./...
Запуск модульных тестов:
go test ./generator ./init
Запуск полного набора тестов:
go test ./...
Пакет ./tests содержит QEMU-интеграционные тесты и требует, чтобы на хосте были установлены необходимые загрузочные и виртуализационные инструменты.
Работа над этим проектом началась во время хакатона Twitter. Огромное спасибо Twitter за поддержку разработки открытого ПО, и особая благодарность Ian Brown.
Архитектура Booster была вдохновлена distri Михаэля Штапельберга, и начальная версия заимствовала многие идеи из генератора initramfs distri.
См. LICENSE.