web-dev-qa-db-ja.com

initramfsで/ dev / tpm *を取得する方法は?

LUKSボリュームのパスワードなしの復号化のために、TPM2.0モジュールでクレビスを使用したいと思います。このモジュールはDebianテスト(bullseye)で認識されます:/dev/tpm0/dev/tpmrm0が存在します(Debianで必要なクレビスコマンドを実行できるようにするため)。

ただし、クレビスのinitramfsスクリプトは失敗します。 init=premountシェルでこれを調査したところ、initramfsで上記の/dev/tpm*デバイス存在しないであることがわかりました。どうすればこれを変更できますか? Debianを使用して、initramfs-toolsでinitramfsを生成します。

1
edfrank

TPMを駆動するカーネルモジュールが/etc/initramfs-tools/modulesにリストされていることを確認して、initramfs内にロードされるようにします。次に、initramfs udevがデバイスを作成します。

まず、lsmod | grep tpmを実行して、TPMドライバーモジュールを見つけます。私にとって、出力は次のようになります。

# lsmod |grep tpm
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
tpm                    61440  2 tpm_tis,tpm_tis_core
rng_core               16384  2 tpm

tpm_tisは、x86ハードウェアでの最も一般的なTPM実装のドライバーです。出力から、他のモジュールに依存していることがわかります:tpm_tis_coretpm、およびrng_corelsmodリストはボトムアップで構築されるため、最適なロード順序はrng_coreを最初にロードすることです。

したがって、これらのモジュールがinitramfsに確実にロードされるようにするには、/etc/initramfs-tools/modulesファイルに4行を追加します。

rng_core
tpm
tpm_tis_core
tpm_tis

(これはおそらくやり過ぎです。initramfs-toolsがモジュールの依存関係を自動的に処理できるようになったと思うので、tpm_tisだけに言及するだけで十分でしょう。しかし、再試行の必要性を最小限に抑えるために、モジュールを明示的に指定したいと思います。 ..)

/etc/initramfs-tools/modulesファイルを編集したら、initramfsファイルを再作成する必要があります。 Debianでは、これはupdate-initramfs -uで行うのが最も簡単です。

次のステップは、再起動してinit=premountシェルを再度使用し、/dev/tpm*デバイスが作成されたことを確認することです。

1
telcoM