目前,我尝试了解测量启动是如何工作的以及哪些组件在 tpm2 的哪个 pcr 中记录哪些内容。
我有一个启用了 uefi 安全启动的测试设置,并在 kvm 虚拟机中连接了 tpm2。我用 tpm 支持等编译了自己的内核,tpm2_pcrread
给出了合理的输出。现在我想查看 tpm 事件的内部。但没有/sys/kernel/security/tpm0
,因此没有binary_bios_measurement
。如果我从 ubuntu 23.10 iso 实时启动,则该文件存在并且可以由 tpm2_eventlog 读取。所以我从 ubuntu 获取内核并用它启动系统,但在这里也没有 /sys/kernel/security/tpm0
.不,我的猜测是,我错过了公开此内容的内核模块。或者 ubuntu 中的 systemd 创建此路径。我没有找到任何关于此的文档。我不知道如何找出创建此路径/文件的位置和人员。有人知道如何曝光吗 binary_bios_measurement
?附言。在我自己的 Linux 上,我使用 OpenRc 而不是 systemd。
答案1
你securityfs
安装了虚拟文件系统吗?
如果grep ^securityfs /proc/mounts
没有输出任何内容,则表明您没有安装它。手动安装:
sudo mount -t securityfs none /sys/kernel/security
如果您希望始终安装它,请将此行添加到您的/etc/fstab
文件中:
none /sys/kernel/security securityfs defaults 0 0
答案2
经过几个小时的尝试和错误以及阅读内核代码后,我意外地找到了解决方案,但并不是真正的原因。
我使用的是 GRUB 2.06。当我尝试 Ubuntu 附带的 GRUB 版本(2.12)时,目录突然tpm0
出现了。所以我也使用这个版本自己编译了 GRUB,并且缺少的目录存在。
我有点惊讶,因为我读到 GRUB 从 2.06 开始就支持测量启动。即使不是,引导加载程序与内核公开此路径有什么关系?
更新
现在我更惊讶了。我用 签署了我的 GRUBsbsign
并将我的 PK、KEK、db 安装在efivars
.突然目录又不见了。如果我清除 BIOS 中的按键,该目录会再次出现......神秘。