我尝试在 Debian 8 上使用我的笔记本电脑中内置的 tpm(可信平台模块)。大多数 tpm_* 程序都会返回答案:
root@debian:~# tpm_takeownership
Enter owner password:
Confirm password:
Enter SRK password:
Confirm password:
Tspi_TPM_TakeOwnership failed: 0x00000008 - layer=tpm, code=0008 (8), The TPM target command has been disabled
tcsd 回馈:
root@debian:~# tcsd -f
TCSD TDDL ERROR: Could not find a device to open!
模块已加载:
root@debian:~# lsmod | grep tpm
tpm_tis 17231 0
tpm 31511 2 tpm_tis
最后,dmesg 回复:
root@debian:~# dmesg | grep tpm
[ 6.743307] tpm_tis 00:05: 1.2 TPM (device-id 0x0, rev-id 78)
TPM 在 BIOS 中打开。有什么线索吗?
答案1
我正在使用 Atmel 可信平台模块在 BeagleBone Black 上进行安全启动。如果您没有找到解决方案,这就是我所做的。
我使用 Buildroot 为 BeagleBone Black(BBB) 创建一个简单的嵌入式 Linux。我添加了tpm 工具和 tpm-tss与构建根。
我添加了以下选项作为模块:
- 硬件随机数生成器核心支持
- TPM 硬件支持
- TPM 接口规范 1.2 接口 / TPM 2.0 FIFO 接口
- TPM 接口规范 1.2 接口(I2C – Atmel)
我还修改了 BBB 的设备树并添加以下修改:
&i2c2 {
tpm29:tpm@29 {
compatible = "atmel,at97sc3204t";
reg = <0x29>;
};
};
当我在 BBB 上启动嵌入式 Linux 时,我会加载以下驱动程序,如下所示:
# modprobe tpm_i2c_atmel
# modprobe tpm_tis
# modprobe tpm_tis_core
# modprobe tpm
然后我像这样启动 tcsd 守护进程:
# /usr/sbin/tcsd
你可以确保你/usr/sbin/tcsd
在top
/htop
命令中看到了。
完成这些步骤后,我就可以与我的 TPM 交谈了。
答案2
在 BIOS 中启用 TPM 可能需要电源周期才能有效。 BIOS 菜单中可能有 2 个不同的项目需要配置。
我有一个额外的模块:tpm_bios
.
Adevice-id
听起来0x0
不对。例如,对于 Atmel TPM,它应该是0x3204
。
第一个要尝试的有用命令是tpm_version
, thentpm_getpubek
和tpm_selftest
, before tpm_takeownership
。