前一段时间写了一篇关于如何在带有tpm芯片的pc机上安装tpm软件栈的博文,最近为了学习方便,又在自己的笔记本电脑上安装了一个模拟器,方便自己开发使用。现将安装手册陈列如下:
1.准备工作:需要安装cmake, gmp库,此处不详述,各个版本的Linux都有在线安装方式,如Ubuntu使用apt-get,redhat使用yum,OpenSUSE使用yast,直接在线安装就好。
注意事项:安装过程中,可能会提示缺少某些库,则读者自行分析缺少的开发库,并下载安装。此处不一一陈述,本文假设读者已经有一定的Linux开发经验。
2. 安装tpm_emulator:
下载安装包:https://developer.berlios.de/project/showfiles.php?group_id=2491
解压后README文件为安装和使用的说明
# tar -xvzf tpm_emulator-X.Y.tar.gz
# cd tpm_emulator-X.Y
# mkdir build
# cd build
# cmake ../
# make
# make install
注意事项:若编译过程中报错 /lib/modules/***/build不存在,证明内核不支持模块开发,需要自己动手编译内核。好消息是有另外的方法跳过内核编译,Ubuntu下需要安装(apt-get方式):build-essential,linux-kernel-headers,我使用的是openSUSE,此发行版使用yast安装kernel-devel即可。
初始化 (以下的命令可能需要权限,若不成功,请自行尝试sudo模式)
#tpmd deactivated
#killall tpmd
#tpmd clear
#rm /var/run/tpm/tpmd_socket:0 (出现failed:address already in use 时执行它)
启动软TPM
#modprobe tpmd_dev (如果出现FATAL: Module tpmd_dev not found,则先运行depmod -a)
#tpmd -f -d (tpmd -h查看启动参数。这一步可能需要权限)
当观察到Debug: waiting for connections...就证明运行成功了。
3.安装trousers。
下载:
重定向tddl
由于使用TPM模拟器,在编译trousers前需要将其以来的tddl库改为TPM模拟器提供的tddl。
修改 ./src/tcsd/Makefile.am :
tcsd_LDADD=../tcs/libtcs.a ../tddl/libtddl.a –lpthread
为:
tcsd_LDADD=../tcs/libtcs.a /usr/lib/libtddl.so –lpthread
注意事项:不同发行版,libtddl.so的位置不同,像我的openSUSE,libtddl保存在/usr/local/lib/中,所以建议安装前查看自己的libtddl.so位置再修改
修改 ./src/tcsd/Makefile.in :
tcsd_DEPENDENCIES = ../tcs/libtcs.a ../tddl/libtddl.a
为:
tcsd_DEPENDENCIES = ../tcs/libtcs.a /usr/lib/libtddl.so
注意事项同上。
To build trousers after you have the device driver installed:
$ sh bootstrap.sh
$ ./configure [--enable-debug] [--enable-gprof] [--enable-gcov]
$ make
# make install
若出现奇怪的问题,比如bootstrap不存在,可从老版本的trousers中拷贝一个过来。其他错误可以参见我的另一篇博文《TPM笔记(2)--TPM安装手册》
启动TCSD
#tcsd -e -f
注意事项:我运行时出现错误信息:/usr/local/sbin/tcsd: error while loading shared libraries: libtddl.so.1.2: cannot open shared object file: No such file or directory
查看后发现文件是存在的,这时一般是 动态链接库的路径没设置正确,我的库路径为/usr/local/lib,则在 /etc/ld.so.conf 添加一行“/usr/local/lib”,然后运行ldconfig.此时发现运行成功!
4. 安装tpm-tools, tpmmanager等,过程不详述,参见我的另一篇TPM安装博文。当出现tpmmanager的熟悉画面时,系统就搭建成功啦!这中间可能会出现若干小问题,若我的文章中没有提到,请仔细思考原因,逐个解决。