
Gerador de initramfs rápido e seguro

O Booster torna a inicialização inicial mais leve, rápida e confiável. Ele constrói imagens initramfs compactas que movem seu sistema Linux do firmware para o sistema de arquivos raiz real com o mínimo de complicação e forte suporte a boot criptografado.
Em vez de empacotar um grande espaço de usuário inicial genérico, o Booster descobre o que sua máquina realmente precisa e constrói uma imagem focada nisso. O resultado é uma imagem de boot enxuta com os drivers, ferramentas de desbloqueio, suporte a sistemas de arquivos e caminhos de recuperação que seu host precisa, sem carregar um caminhão de coisas em cada reinicialização.
O Booster é construído em torno de uma promessa simples: a inicialização inicial deve ser rápida, clara, segura e agradável de operar.
Destaques:
systemd-cryptenroll, incluindo suporte nativo a FIDO2 através do caminho de plugin do Booster.O Booster é uma ótima escolha para laptops criptografados, workstations de desenvolvedores, servidores com necessidades de recuperação remota, sistemas Linux mínimos e configurações de boot que devem permanecer compreensíveis anos após você configurá-las.
O Booster trata a criptografia de disco completo como um fluxo de trabalho de primeira classe, não como um complemento.
Ele pode desbloquear dispositivos LUKS a partir de parâmetros do kernel, /etc/crypttab, autodescoberta GPT, referências diretas root= para contêineres LUKS, keyfiles, cabeçalhos destacados e tokens com suporte de hardware.
Os estilos de desbloqueio suportados incluem:
systemd-cryptenroll.A orquestração de tokens do Booster foi projetada para tornar o boot criptografado polido. Tokens não interativos podem competir em segundo plano, tokens baseados em PIN são solicitados em uma ordem determinística, e o prompt de passphrase regular aparece como fallback em vez de bloquear todo o boot para sempre.
Melhorias recentes no FIDO2 tornam a experiência mais suave:
enable_fido2: true.crypttab com fido2-device= pode fazer o Booster empacotar o plugin FIDO2 automaticamente.Por padrão, o Booster constrói uma imagem específica do host. Ele examina o sistema atual, inclui os módulos e ferramentas necessários para inicializá-lo e deixa de fora peças desnecessárias. Isso mantém a imagem mais fácil de auditar, mais rápida de gerar e mais rápida de executar durante o boot.
Quando você precisa de uma imagem mais ampla, --universal inclui um conjunto mais amplo de módulos para cenários de resgate, mídia portátil ou sistemas onde o hardware pode mudar.
O Booster suporta layouts de boot práticos do mundo real, incluindo:
UUID=, LABEL=, PARTUUID=, PARTLABEL=, HWPATH=, WWID= ou /dev/..../etc/crypttab.Quando algo dá errado, o Booster oferece maneiras úteis de ver o que aconteceu.
Use booster.log=debug,console para logs de boot detalhados, adicione busybox para um shell de emergência ou habilite o suporte de rede para recuperar logs de uma máquina que não inicializa.
O Booster também inclui comandos de inspeção de imagem para que você possa verificar o que foi construído antes de reiniciar:
booster ls /boot/booster-linux.img
booster cat /boot/booster-linux.img /init
booster unpack /boot/booster-linux.img /tmp/booster-image
Instale o pacote oficial:
pacman -S booster
O pacote cria imagens do Booster em /boot/:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
Instale o Booster com:
xbps-install -S booster
Em seguida, regenere o initramfs para um kernel já instalado:
xbps-reconfigure -f linux
Instale o Booster com:
apk add booster
Em seguida, leia /usr/share/doc/booster/README.alpine para instruções de bootloader específicas da configuração.
O Booster não está nos repositórios do Fedora. Construa o RPM a partir de um checkout:
dnf install rpm-build golang gcc git-core libfido2-devel rubygem-ronn-ng systemd-rpm-macros
./packaging/fedora/createpkg.sh
dnf install ~/rpmbuild/RPMS/x86_64/booster-*.rpm
Em seguida, selecione o Booster como o gerador em /etc/kernel/install.conf, para que as imagens sejam reconstruídas em atualizações do kernel:
initrd_generator=booster
Você também pode construir uma imagem diretamente:
booster build /boot/booster-linux.img
Para uma imagem mais portátil com um conjunto de hardware mais amplo:
booster build --universal /boot/booster-linux.img
Após criar a imagem, aponte seu bootloader para ela. Para detalhes completos de configuração, consulte a página de manual do Booster.
Crie uma imagem específica do host:
booster build booster.img
Crie uma imagem para um kernel específico:
booster build --kernel-version 6.8.9-arch1-1 /boot/booster-linux.img
Inspecione a imagem gerada:
booster ls /boot/booster-linux.img
Regenere imagens empacotadas após alterar /etc/booster.yaml:
/usr/lib/booster/regenerate_images
Gere uma Unified Kernel Image quando sua distribuição fornecer systemd-ukify:
/usr/lib/booster/regenerate_uki build /boot/EFI/Linux
O Booster é intencionalmente pequeno para configurar. Um laptop criptografado simples muitas vezes não precisa de nenhum arquivo de configuração grande. Adicione apenas os recursos que seu caminho de boot precisa:
compression: zstd
vconsole: true
enable_fido2: true
enable_lvm: true
enable_mdraid: true
Para desbloqueio remoto via SSH:
network:
dhcp: on
ssh_host_key: /etc/booster/ssh_host_ed25519_key
ssh_authorized_keys: /etc/booster/authorized_keys
ssh_listen: :22
Para ordenação mais suave de tokens quando vários métodos de desbloqueio por hardware estão inscritos:
serialize_tokens:
enabled: true
clevis_timeout: 45s
tpm2_timeout: 15s
fido2_timeout: 30s
Para suporte a splash do Plymouth:
enable_plymouth: true
modules_force_load: amdgpu
Use quiet splash na linha de comando do seu kernel e evite booster.log=console quando quiser o splash gráfico.
A documentação completa do usuário está na página de manual do Booster. Ela cobre:
/etc/booster.yaml./etc/crypttab.O Booster vive no mesmo espaço de problemas que mkinitcpio e dracut. Seu foco é um gerador de initramfs rápido, compacto e baseado em Go, com forte ergonomia de boot criptografado e descoberta automática de host.
O projeto tem três partes principais:
init - o programa do espaço de usuário inicial que é executado durante o boot.generator - a ferramenta que constrói a imagem initramfs.tests - testes de integração baseados em QEMU para imagens geradas.Compile com as ferramentas padrão do Go:
go build ./...
Execute os testes unitários:
go test ./generator ./init
Execute a suíte de testes completa:
go test ./...
O pacote ./tests contém testes de integração QEMU e requer que o host tenha as ferramentas de boot e virtualização necessárias instaladas, incluindo qemu-img, que algumas distribuições empacotam separadamente do emulador.
Construa os ativos de teste e liste as ferramentas necessárias:
go test ./tests -bootstrap -timeout=0
Pede-se que novos testes chamem t.Parallel() onde puderem. Uma execução simples ainda é
um teste por vez, mas -parallel N inicializa várias VMs ao mesmo tempo, e um teste que
não pode participar silenciosamente custa tempo de relógio em vez de falhar, então uma nota dizendo
o porquê é mais útil do que a chamada ausente.
Quantas VMs realmente são executadas ao mesmo tempo é limitado pelo que o host pode servir, derivado
de sua memória e núcleos. -vm.smp, -vm.mem e -vm.max substituem o tamanho do guest
e esse limite.
O trabalho neste projeto começou durante a hack week do Twitter. Agradecimentos enormes ao Twitter por apoiar o desenvolvimento de código aberto, e agradecimentos especiais a Ian Brown.
A arquitetura do Booster foi inspirada no distri de Michael Stapelberg, e a versão inicial emprestou muitas ideias do gerador de initramfs do distri.
Veja LICENSE.