
高速で安全なinitramfsジェネレーター

Boosterは、初期ブートをより軽く、速く、信頼性の高いものにします。最小限の手間と強力な暗号化ブートサポートで、Linuxシステムをファームウェアから実際のルートファイルシステムへ移行するコンパクトなinitramfsイメージを構築します。
大きな汎用の初期ユーザースペースを詰め込む代わりに、Boosterはマシンが実際に必要とするものを検出し、それに焦点を当てたイメージを構築します。その結果、ホストが必要とするドライバ、アンロックツール、ファイルシステムサポート、リカバリパスを備えた、無駄のないブートイメージが得られ、毎回の再起動に余計なものを詰め込む必要はありません。
Boosterはシンプルな約束に基づいて構築されています:初期ブートは迅速、明確、安全、そして操作が快適であるべきです。
ハイライト:
systemd-cryptenroll TPM2およびFIDO2トークンをサポートし、BoosterのプラグインパスによるネイティブFIDO2サポートも含みます。Boosterは、暗号化されたラップトップ、開発者ワークステーション、リモートリカバリが必要なサーバ、ミニマルなLinuxシステム、そして設定から数年後も理解可能なブートセットアップに最適です。
Boosterは、フルディスク暗号化をアドオンではなく第一級のワークフローとして扱います。カーネルパラメータ、/etc/crypttab、GPT自動検出、LUKSコンテナへの直接のroot=参照、キーファイル、デタッチドヘッダ、ハードウェアバックアップトークンからLUKSデバイスをアンロックできます。
サポートされるアンロックスタイルは次のとおりです:
systemd-cryptenroll TPM2およびFIDO2トークン。Boosterのトークンオーケストレーションは、暗号化ブートを洗練されたものにするよう設計されています。非対話型トークンはバックグラウンドで競合でき、PINベースのトークンは決定論的な順序でプロンプト表示され、通常のパスフレーズプロンプトはブート全体を永久にブロックする代わりにフォールバックとして表示されます。
最近のFIDO2の改善により、エクスペリエンスがさらにスムーズになりました:
enable_fido2: trueで有効にできます。fido2-device=を含むcrypttabエントリにより、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
パッケージは/boot/にBoosterイメージを作成します:
$ 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 manpageを参照してください。
ホスト固有のイメージを作成:
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
ディストリビューションがsystemd-ukifyを提供する場合、Unified Kernel Imageを生成:
/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 manpageにあります。これには以下が含まれます:
/etc/booster.yamlオプション。/etc/crypttab統合。Boosterは、mkinitcpioやdracutと同じ問題空間に存在します。その焦点は、強力な暗号化ブートの人間工学と自動ホスト検出を備えた、高速でコンパクトなGoベースのinitramfsジェネレータです。
プロジェクトには3つの主要な部分があります:
init - ブート中に実行される初期ユーザースペースプログラム。generator - initramfsイメージを構築するツール。tests - 生成されたイメージのQEMUベースの統合テスト。標準のGoツールでビルド:
go build ./...
単体テストを実行:
go test ./generator ./init
完全なテストスイートを実行:
go test ./...
./testsパッケージにはQEMU統合テストが含まれており、ホストに必要なブートおよび仮想化ツールがインストールされている必要があります。
このプロジェクトの作業はTwitterのハックウィーク中に始まりました。オープンソース開発を支援してくれたTwitterに多大な感謝を、そして特にIan Brownに感謝します。
BoosterのアーキテクチャはMichael Stapelbergのdistriに触発され、初期バージョンはdistriのinitramfsジェネレータから多くのアイデアを借用しました。
LICENSEを参照してください。