我正在配置一台需要完全驱动器加密的服务器,我想使用主板上可用的 TPM2 模块自动执行启动时解密驱动器的过程,但我无法让系统这样做。我有一个全新安装的 CentOS 9 Stream,它是使用唯一可用驱动器的自动 LVM 分区创建的,并且已加密为 LUKSv2。
安装操作系统后,我确保clevis
、clevis-luks
和dracut
已安装。我还安装了clevis-systemd
和clevis-udisks2
以防万一。
在此阶段,运行tpm2_pcrread
报告了预期的寄存器。
然后我使用以下命令将驱动器绑定到 U 形夹:
sudo clevis luks bind -d /dev/<drive> tmp2 '{"pcr_bank":"sha256","pcr_ids":"0,1,7"}'
到目前为止没有问题。
然后我创建了一个名为 dracuttpm2.conf
配置/etc/dracut.config.d/
:
add_dracutmodules+=" clevis clevis-pin-tpm2 crypt tpm2-tss "
install_items+=" /usr/bin/clevis "
hostonly="yes"
然后跑:
sudo dracut -f
在这个阶段,我认为这就是我所需要的一切,但似乎还不够。
然后我尝试使用 grub 选项进行启动rd.luks.options=<luks-UUID>=tpm2-device=auto
,但没有任何反应。
知道可能是什么问题吗?
谢谢
答案1
根据文档,/etc/dracut.config.d/ 中不需要任何文件。尝试删除您创建的文件并使用 重新生成 initramfs dracut -f --regenerate-all
。
如果执行此操作并重新启动后,它仍然无法自动解密容器(有时您需要有点耐心,等待一段时间再输入密码),那么请发布 lsblk 和绑定到 tpm2 芯片的 clevis luks list -d /dev/yourblockdevice 的输出。