Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Boosterのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Booster
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:initramfs]] [[Category:カーネル]] [[en:Booster]] {{Related articles start}} {{Related|カーネルモジュール}} {{Related|Initramfs の最小化}} {{Related|ブートデバッグ}} {{Related|Mkinitcpio}} {{Related|dracut}} {{Related articles end}} [https://github.com/anatol/booster Booster] は高速な [[initramfs]] ジェネレータで、[[mkinitcpio]] や [[dracut]] と似ています。 Booster は [https://michael.stapelberg.ch/posts/2020-01-21-initramfs-from-scratch-golang/ distri プロジェクト] に着想を得ており、小型で高速な init イメージを生成することを目指しています。 Booster は以下の2つのコンポーネントから構成されています: * Initramfs ジェネレータ {{ic|/usr/bin/booster}} ユーザー空間ツール。initramfs イメージの生成を行います。 * 生成されたイメージは通常 {{ic|/boot/}} に配置され、システムブートローダーによって Linux OS を起動するのに使われます。 == インストール == {{AUR|booster-git}} パッケージを[[インストール]]してください。パッケージのインストールフックによって initramfs イメージが生成されます (インストールされているカーネル (例: {{Pkg|linux}}, {{Pkg|linux-lts}}) ごとにひとつずつ)。イメージは {{ic|/boot}} ディレクトリに配置されます: {{hc|$ 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 ジェネレータの設定は {{ic|/etc/booster.yaml}} にあります。設定ファイルがない場合は、デフォルトの設定(ホスト固有の画像、ネットワークなし)が使用されます。 設定ファイルを使用することで、デフォルトの動作を上書きすることができます。詳しくは {{man|1|booster|CONFIG FILE}} を参照してください。 === ブースターイメージの再生成 === ブースターの設定が終わったら、{{ic|/boot}} にあるブースターイメージを更新する必要があります。イメージは {{ic|booster -output booster-foo.img}} で手動で生成するか、インストールされている全てのカーネルを繰り返し、それぞれのブースターイメージを生成する便利なスクリプト {{ic|/usr/lib/booster/regenerate_images}} を利用して生成します。 == ブートローダーの設定 == イメージを生成したら、次に[[Arch_ブートプロセス#ブートローダー|ブートローダー]]を設定します。 === rEFInd === すでに [[rEFInd# rEFInd によってカーネルが自動で検出される場合|自動検出]] に依存した設定になっている場合、追加の設定変更は必要ありません。[[rEFInd]] は [https://sourceforge.net/p/refind/code/ci/778878f7f30f68b7fa0282074e5dd8fc5894a212/ initrd files named booster*] をサポートしています。 initramfs のパスを [[rEFInd#手動でブートエントリを記述|refind.conf]] や [[rEFInd#Manual boot stanzas|manual boot stanzas]] で手動で指定する場合、正しいファイル名を使っているか確認してください。例えば {{ic|'''booster''-linux.img}} の代わりに {{ic|'''initramfs''-linux.img}} とします。 === systemd-boot === 新しい initramfs イメージを [[systemd-boot]] で使うには以下のようにブートローダーエントリを作成します: {{hc|/boot/loader/entries/booster.conf|2= title Arch Linux with booster linux /vmlinuz-linux initrd /booster-linux.img options root=UUID=08f83949-bcbb-47bb-bc17-089aaa59e17e rw }} 上記でルートファイルシステムは {{ic|1=UUID=08f83949-bcbb-47bb-bc17-089aaa59e17e}} と指定しています。{{ic|blkid /dev/''ROOTDEVICE''}} を実行して、あなたのデバイスの UUID を確認してください。 == 暗号化の有効化 == Booster は LUKS ベースの完全ディスク暗号化をサポートしています。ジェネレータは特別な設定を必要としません。initramfs には、ルートが存在する LUKS パーティションの情報を追加する必要があります。{{ic|1=rd.luks.uuid=''LUKSUUID''}} あるいは {{ic|1=rd.luks.name=''LUKSUUID''=''LUKSNAME''}} [[カーネルパラメータ]]をブートローダーの設定ファイルで指定してください。{{ic|''LUKSUUID''}} は Booster で解錠する暗号化した LUKS パーティションの [[UUID]] を示します。UUID にはクォートを含まないので注意してください。{{ic|''LUKSNAME''}} は解錠されたパーティションの名前を示します ({{ic|/dev/mapper/''NAME''}})。 イメージの再生成は必要ありません。ブートローダーの設定ができたら、コンピュータを再起動してください。その後 {{ic|Enter passphrase for ''YOURROOT'':}} プロンプトが起動時に表示されるので、暗号化したルートパーティションのパスワードを入力してください。 === Clevis 暗号化 === {{Note|Booster 固有ではない Clevis 情報用の別のページを作成する}} 暗号化された LUKS パーティションの解錠に、ユーザーによるパスワードの入力を使うというのは伝統的で広く使われる方法ですが、デメリットも存在します: * 手動で入力する必要があるため、自動的に起動したい場合には使えません (例: 巨大なサーバーファーム)。 * 普通の人間が覚えられるパスワードの長さには限界があり (エントロピーにして ~20-30 ビット)、近代的なブロック暗号に使う鍵としては弱すぎます (128/256 ビット)。 解決策としては強固な鍵を別のどこかに保持しておくという方法があります。例えば [[TPM]] チップや [[Yubikey]]、あるいは他のネットワークサービスなどが考えられます。[https://github.com/latchset/clevis/ Clevis] はこのアイデアを実現するフレームワークです。抜き差し可能な ''pin'' を使ってデータを暗号化します (clevis の用語では ''bind'')。現在 clevis には3つの pin が存在します: * TPM2 データバインディング * ネットワークサービス (別名 [https://github.com/latchset/tang Tang]) データバインディング * [[Wikipedia:Shamir's Secret Sharing|シャミア秘密分散]]で他の pin を組み合わせる Booster は上記3つの pin 全てに対応しています。 clevis を使うには {{pkg|clevis}} パッケージをインストールしてください。以下は TPM2 によるデータバインディングの例です (あなたのコンピュータに [[TPM]] チップが搭載されている場合にのみ動作します): {{hc|$ clevis encrypt tpm2 '{}' <<< 'hello, world'| eyJhbGciOiJkaXIiLCJjbGV2aXMiOnsicGluIjoidHBtMiIsInRwbTIiOnsiaGFzaCI6InNoYTI1NiIsImp3a19wcml2IjoiQU80QUlJQkxxT3FVenVDU1FmWkprNmdDN2wzMW43V3M2Y2FZd0VZS1BSR3Q0OHJEQUJBV2Z4M3pTUUNUTmtHZE9BM2FZd2RTZk9GcXZWdnVlQ3lPamFsWldCT2R4RlJKSzl5ZVRCM0pkNFktcF9HalhhNmlnLWxxNmtmMHZTWWkzOWMxVEpES1RYRVZTdnlXSlpEbGdxQ0JPMVNxeGJBd2tfSnIyRlRNY3hvNGtpSmNtMEVjbWd5dFdyME00QmcySlg4aVo3MEt1MTVjNzFORU5Ra3RjdGMtREhBVGFQcHJ2VzI2Z3d1YmUxckRfX19aV2tHaG9mX053M0M1OHlOcXF2RUpPZUwzNTZHNXJHNVVtYmUtWWV4Ujl2SEppZWlua3ZaNTJoMFVRYWVNSm9LYjJuNjlVTGZHb2J1NElTN20iLCJqd2tfcHViIjoiQUM0QUNBQUxBQUFFMGdBQUFCQUFJQ2poWDBVeTJKZVpSNU9pRU0ySktSeEtnUElYQ3dGNnRNR09NTDZ0ZnE5aiIsImtleSI6ImVjYyJ9fSwiZW5jIjoiQTI1NkdDTSJ9..1P2Emag_4k-GlhyY.MuQQYPa8QHrysZ74uA.0ddDxfZA3R-cCmaKu5yUZA }} base64 でエンコードされた長いメッセージが内部の TPM キーで暗号化されたテキストです。このテキストは現在使っているコンピュータでしか復号化できません。他のコンピュータで復号化しようとするとエラーが返ってきます。 {{hc|$ clevis decrypt tpm2 '{}' <<< 'eyJhbGciOiJkaXIiLCJjbGV2aXMiOnsicGluIjoidHBtMiIsInRwbTIiOnsiaGFzaCI6InNoYTI1NiIsImp3a19wcml2IjoiQU80QUlJQkxxT3FVenVDU1FmWkprNmdDN2wzMW43V3M2Y2FZd0VZS1BSR3Q0OHJEQUJBV2Z4M3pTUUNUTmtHZE9BM2FZd2RTZk9GcXZWdnVlQ3lPamFsWldCT2R4RlJKSzl5ZVRCM0pkNFktcF9HalhhNmlnLWxxNmtmMHZTWWkzOWMxVEpES1RYRVZTdnlXSlpEbGdxQ0JPMVNxeGJBd2tfSnIyRlRNY3hvNGtpSmNtMEVjbWd5dFdyME00QmcySlg4aVo3MEt1MTVjNzFORU5Ra3RjdGMtREhBVGFQcHJ2VzI2Z3d1YmUxckRfX19aV2tHaG9mX053M0M1OHlOcXF2RUpPZUwzNTZHNXJHNVVtYmUtWWV4Ujl2SEppZWlua3ZaNTJoMFVRYWVNSm9LYjJuNjlVTGZHb2J1NElTN20iLCJqd2tfcHViIjoiQUM0QUNBQUxBQUFFMGdBQUFCQUFJQ2poWDBVeTJKZVpSNU9pRU0ySktSeEtnUElYQ3dGNnRNR09NTDZ0ZnE5aiIsImtleSI6ImVjYyJ9fSwiZW5jIjoiQTI1NkdDTSJ9..1P2Emag_4k-GlhyY.MuQQYPa8QHrysZ74uA.0ddDxfZA3R-cCmaKu5yUZA'| hello, world }} Clevis を使って LUKS パーティションをバインドすることができます、例: # clevis luks bind -d /dev/nvme0n1p2 tpm2 '{}' TPM チップで暗号化されたパスワードを使って LUKS スロットが作成されます。以下を実行することで確認できます: {{hc|# cryptsetup luksDump /dev/nvme0n1p2| ... Tokens: 0: clevis Keyslot: 1 ... }} ひとつの ''clevis'' トークンが表示されています。LUKS はトークンを使って「どこか (例: TPM チップ) に存在する」パスワードのメタデータを保存します。詳しくは clevis のドキュメントを見てください。 Booster は LUKS トークンを読み込んで、clevis の情報をデコードして、パスワードを再構築してパーティションを自動的に解錠します。 ''tpm2'' や ''sss'' ピンにバインドされたパーティションは特に booster 側の設定を必要としません。''Tang'' (ネットワークバインド) ピンはネットワークを必要とします。詳しくは [[#設定]] セクションを見てください。 ==== YubiKey バインディング ==== Clevis では、YubiKey の challenge-response mode を使って LUKS パーティションをバインドすることができます。LUKS パーティションのバインディングを行うには、以下を実行してください。 # clevis luks bind -d /dev/sdb2 yubikey '{"slot":1}' {{Pkg|yubikey-personalization}} をインストールします。設定ファイルを編集し、以下のオプションを追加します。 {{hc|/etc/booster.yaml| extra_files: ykchalresp }} == デバッグ == Booster が上手く動かない場合、デバッグ出力を有効にすることで何が起こっているか情報を得ることができます: * ジェネレータのデバッグは {{ic|-debug}} コマンドラインフラグを使ってください: {{ic|booster -debug}}。 * init のデバッグは {{ic|1=booster.debug=1}} [[カーネルパラメータ]]が存在します。 Booster に問題があると思われる場合は https://github.com/anatol/booster/issues でチケットを作成してください。 == 注意点 == === モジュールの早期ロード === いくつかのカーネルモジュールは、initramfs の段階で早期にロードされる必要がある場合があります。 例えば、{{ic|nvidia}} モジュールをロードする必要がある場合、以下の設定を使用します。 {{hc|/etc/booster.yaml| modules_force_load: nvidia }} そして、[[Booster#ブースターイメージの再生成|ブースターイメージの再生成]] を実行します。 === Booster ジェネレータが "too many open files" エラーで失敗する === もし {{ic|strip}} と {{ic|universal}} を有効にしていて {{ic|/usr/lib/modules/glue_helper.ko: pipe2: too many open files}} というエラーが出た場合は、プロセスごとのオープンファイルの上限を上げる必要があります。[[limits.conf#nofile]] を参照してください。 == 参照 == * [https://github.com/anatol/booster/blob/develop/README.md upstream README]
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Booster
に戻る。
検索
検索
Boosterのソースを表示
話題を追加