Booster

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

Booster は高速な initramfs ジェネレータで、mkinitcpiodracut と似ています。 Booster は distri プロジェクト に着想を得ており、小型で高速な init イメージを生成することを目指しています。

Booster は以下の2つのコンポーネントから構成されています:

  • Initramfs ジェネレータ /usr/bin/booster ユーザー空間ツール。initramfs イメージの生成を行います。
  • 生成されたイメージは通常 /boot/ に配置され、システムブートローダーによって Linux OS を起動するのに使われます。

インストール

booster-gitAUR パッケージをインストールしてください。パッケージのインストールフックによって initramfs イメージが生成されます (インストールされているカーネル (例: linux, linux-lts) ごとにひとつずつ)。イメージは /boot ディレクトリに配置されます:

$ ls -lh /boot/booster*
-rwxr-xr-x 1 root root 4.0M Dec 16 16:20 /boot/booster-linux.img

また、イメージは手動で生成することもできます:

$ booster -output mybooster.img

設定

Booster ジェネレータの設定は /etc/booster.yaml にあります。設定ファイルがない場合は、デフォルトの設定(ホスト固有の画像、ネットワークなし)が使用されます。

設定ファイルを使用することで、デフォルトの動作を上書きすることができます。詳しくは booster(1) § CONFIG FILE を参照してください。

booster イメージの再生成

Booster の設定が完了したら、/boot にある Booster images を更新する必要があります。イメージは、booster build booster-foo.img を使用して手動で生成するか、インストールされているすべてのカーネルを反復処理してカーネルごとに Booster イメージを生成する便利なスクリプト /usr/lib/booster/regenerate_images もあります。

ブートローダーの設定

イメージを生成したら、次にブートローダーを設定します。

rEFInd

すでに 自動検出 に依存した設定になっている場合、追加の設定変更は必要ありません。rEFIndinitrd files named booster* をサポートしています。

initramfs のパスを refind.confmanual boot stanzas で手動で指定する場合、正しいファイル名を使っているか確認してください。例えば booster-linux.img の代わりに initramfs-linux.img とします。

systemd-boot

新しい initramfs イメージを systemd-boot で使うには以下のようにブートローダーエントリを作成します:

/boot/loader/entries/booster.conf
title Arch Linux with booster
linux /vmlinuz-linux
initrd /booster-linux.img
options root=UUID=08f83949-bcbb-47bb-bc17-089aaa59e17e rw

上記でルートファイルシステムは UUID=08f83949-bcbb-47bb-bc17-089aaa59e17e と指定しています。blkid /dev/ROOTDEVICE を実行して、あなたのデバイスの UUID を確認してください。

暗号化の有効化

Booster は LUKS ベースの完全ディスク暗号化をサポートしています。ジェネレータは特別な設定を必要としません。initramfs には、ルートが存在する LUKS パーティションの情報を追加する必要があります。rd.luks.uuid=LUKSUUID あるいは rd.luks.name=LUKSUUID=LUKSNAME カーネルパラメータをブートローダーの設定ファイルで指定してください。LUKSUUID は Booster で解錠する暗号化した LUKS パーティションの UUID を示します。UUID にはクォートを含まないので注意してください。LUKSNAME は解錠されたパーティションの名前を示します (/dev/mapper/NAME)。

イメージの再生成は必要ありません。ブートローダーの設定ができたら、コンピュータを再起動してください。その後 Enter passphrase for YOURROOT: プロンプトが起動時に表示されるので、暗号化したルートパーティションのパスワードを入力してください。

Systemd スタイル バインディング

Booster は systemd-fido2systemd-tpm2 などのパーティションが systemd にバインドされていても 対応しています。

'systemd-fido2' を利用する場合は、libfido2 パッケージをインストールし、以下の設定で fido2-assert をイメージに追加してください。

/etc/booster.yaml
extra_files: fido2-assert

booster イメージの再生成 Booster は起動時にこの設定を検出し、現在の YubiKey を使ってドライブのロックを解除します。

ノート: コミット 1b65577 より前の、Booster が FIDO2 キーを使用して暗号化されたパーティションのロックを解除するのに十分な早さで必要なカーネルモジュールの一部をロードできない可能性があることが報告されています。この場合、強制的にロードされる以下のモジュールを追加します。:
/etc/booster.yaml
modules_force_load: usbhid,hid_sensor_hub
extra_files: fido2-assert

デバッグ

Booster が上手く動かない場合、デバッグ出力を有効にすることで何が起こっているか情報を得ることができます:

  • ジェネレータのデバッグは -debug コマンドラインフラグを使ってください: booster -debug
  • init のデバッグは booster.debug=1 カーネルパラメータ が存在します。

Booster 自体に問題があると思われる場合は、GitHub でチケットを作成してください

注意点

モジュールの早期ロード

いくつかのカーネルモジュールは、initramfs の段階で早期にロードされる必要がある場合があります。

例えば、nvidia モジュールをロードする必要がある場合、以下の設定を使用します:

/etc/booster.yaml
modules_force_load: nvidia

そして、booster イメージの再生成 を実行します。

Booster ジェネレータが "too many open files" エラーで失敗する

もし stripuniversal を有効にしていて /usr/lib/modules/glue_helper.ko: pipe2: too many open files というエラーが出た場合は、プロセスごとのオープンファイルの上限を上げる必要があります。limits.conf#nofile を参照してください。

参照