如何在 initramfs 中獲取 /dev/tpm*?
對於 LUKS 卷的無密碼解密,我想將 clevis 與我的 TPM 2.0 模組一起使用。該模組在 Debian 測試 (bullseye) 中被辨識:
/dev/tpm0
並且/dev/tpmrm0
存在(以便我能夠在 Debian 中執行必要的 clevis 命令)。但是,U 形夾 initramfs 腳本失敗。在
init=premount
shell 中對此進行了調查後,我發現在 initramfs/dev/tpm*
中上述設備不存在。我怎樣才能改變這個?使用 Debian,我用initramfs-tools
.
確保驅動 TPM 的核心模組通過在
/etc/initramfs-tools/modules
. 然後 initramfsudev
應該為您創建設備。首先,執行
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
:rng_core tpm tpm_tis_core tpm_tis
(這可能有點矯枉過正。我認為
initramfs-tools
現在可以自動處理模組依賴關係,因此僅提及tpm_tis
可能就足夠了。但我喜歡明確指定模組以盡量減少重試的需要……)編輯完
/etc/initramfs-tools/modules
文件後,您需要重新創建 initramfs 文件。在 Debian 中,使用update-initramfs -u
.下一步是重新啟動並
init=premount
再次使用 shell 來確認/dev/tpm*
現在為您創建了設備。