对于 LUKS 卷的无密码解密,我想将 U 形夹与我的 TPM 2.0 模块结合使用。该模块在 Debian 测试(牛眼)中得到认可:/dev/tpm0
并且/dev/tpmrm0
存在(以便我能够在 Debian 中运行必要的 U 形命令)。
但是,U 形夹 initramfs 脚本失败。在 shell 中对此进行了调查后init=premount
,我发现 initramfs 中的/dev/tpm*
上述设备不存在。我怎样才能改变这个?使用 Debian,我使用initramfs-tools
.
答案1
确保驱动 TPM 的内核模块已加载到 initramfs 中,方法是将它们列在/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*
现在已为您创建设备。