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

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

LUKSボリュームのパスワードなしの復号化のために、TPM 2.0モジュールと一緒にClevisを使用したいと思います。モジュールは Debian テストで承認されています(イブニングの中心/dev/tpm0/dev/tpmrm0

しかし、clevis initramfsスクリプトは失敗します。シェルでこれを調べた後、上記のデバイスがinit=premountinitramfsにあることがわかりました。/dev/tpm*存在しない。これをどのように変更できますか? Debianを使用しながらinitramfs-tools

ベストアンサー1

TPMを駆動するカーネルモジュールがにリストされ、initramfsにロードされていることを確認してください/etc/initramfs-tools/modules。その後、initramfsはudevデバイスを作成する必要があります。

まず、lsmod | grep tpmTPMドライバモジュールの検索を実行してください。私にとって、出力は次のようになります。

# 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_tisx86ハードウェアで最も一般的なTPM実装用のドライバです。出力は他のモジュール(tpm_tis_coretpmおよび)に依存することがわかりますrng_core。リストはlsmod下から上に作成されるため、最適なロード順序は最初にロードすることです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*デバイスが作成されたことを確認することです。

おすすめ記事