首先要有一台带有TPM 1.2芯片,装有linux系统的计算机。
$ ls -la /lib/modules/`uname -r`/kernel/drivers/char/tpm
总计 100
drwxr-xr-x 2 root root 4096 02-03 21:47 .
drwxr-xr-x 7 root root 4096 02-03 21:47 ..
-rwxr--r-- 1 root root 9812 01-21 15:27 tpm_atmel.ko
-rwxr--r-- 1 root root 11128 01-21 15:27 tpm_bios.ko
-rwxr--r-- 1 root root 15860 01-21 15:27 tpm_infineon.ko
-rwxr--r-- 1 root root 19184 01-21 15:27 tpm.ko
-rwxr--r-- 1 root root 10796 01-21 15:27 tpm_nsc.ko
-rwxr--r-- 1 root root 16516 01-21 15:27 tpm_tis.ko
tpm_tis模块可以完全使用TPM1.2。需要这个模块,没的话可能需要重新编译新的内核。
接下来可以这几条命令加载TPM驱动:
$ sudo modprobe tpm_bios
$ sudo modprobe tpm
$ sudo modprobe tpm_tis force=1 interrupts=0
$ dmesg
...
[xxx.yyy] tpm_tis tpm_tis: 1.2 TPM (device-id 0x4A10, rev-id 78)
如果显示有类似以上信息,说明设置成功。
需要安装TrouSerst和tpm-tools来管理TPM。
$ sudo /etc/init.d/tcsd start
用上面这条命令来起动这个管理工具
然后检查下tpm是不是可用了。
$ sudo tpm_version
TPM Version:01010000
Manufacturer Info:53544d20
好了。现在让我们来初始化TPM芯片
$ sudo tpm_takeownership
Enter owner password: xxxxxx
Confirm password: xxxxxx
Enter SRK password: yyyyyyyy
Confirm password: yyyyyyyy
记住! 这条命令只能执行一次!之后不能再常识!
如果出现下面这个错误:
Tspi_TPM_GetPubEndorsementKey failed: 0x00000023 - layer=tpm, code=0023 (35), No EK
则说明Endorsement Key不存在,需要下面这条命令创建。
$ sudo tpm_createek
ok! 之后我们就可以得到Public Endorsement Key
$sudo tpm_getpubek
期间需要输入owner password。
接下来需要安装TrustedGRUB,然后对其中一些文件做修改。
还有很重要的一处!
在内核源代码文件中的 drivers/char/tpm/tpm_tis.c
view plaincopy to clipboardprint?
[...]
static struct pnp_device_id tpm_pnp_tbl __devinitdata = {
{"PNP0C31", 0}, /* TPM */
{"ATM1200", 0}, /* Atmel */
{"IFX0102", 0}, /* Infineon */
{"BCM0101", 0}, /* Broadcom */
{"NSC1200", 0}, /* National */
/* Add new here */
{"", 0},/* User Specified */
{"", 0} /* Terminator */
}
[...]
/* User Specified */这里我们可以加入我们自己的TPMUID(如果里面已经有了的话就不用了),这可以让内核支持我们需要的TPM型号。
关于如何得到TPM的具体信息,可以使用 iasl 这个软件来获得,具体的不在这里说明了。
以上是可信起动的bios──>bootloader部分的简单尝试。
其实这个trustedgrub也有不安全的bug,比如没有做从cd引导时的HASH等等,不过是开源,如果需要或想改进,可以自己动手,也不是什么难事。
折腾……装个bin版的吧。bin版多几个功能的。另外,如果没有 root 权限,那么安装程序最好是去找管理员给你装。
有的函数库。会通过 pkgconfig 命令实现定位的。这个命令好像是按照 PKG_CONFIG_DIR 变量寻找,你可以安装完函数库后,自己 export 这个变量开始增加新的目录就行了。注意有的函数可能就算 --prefix=/sandbox 后,程序还是找不到 so,这个时候可以 LD_PRELOAD=/xxxxx/xxxx.so 的方式预先载入 so 函数库提供功能。不过具体是否好用不清楚。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)