LUKSボリュームのパスワードなしの復号化のために、TPM2.0モジュールでクレビスを使用したいと思います。このモジュールはDebianテスト(bullseye)で認識されます:/dev/tpm0
と/dev/tpmrm0
が存在します(Debianで必要なクレビスコマンドを実行できるようにするため)。
ただし、クレビスのinitramfsスクリプトは失敗します。 init=premount
シェルでこれを調査したところ、initramfsで上記の/dev/tpm*
デバイス存在しないであることがわかりました。どうすればこれを変更できますか? Debianを使用して、initramfs-tools
でinitramfsを生成します。
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_core
、tpm
、および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*
デバイスが作成されたことを確認することです。