这段时间在学习可信计算相关的东西,随笔记点儿学习过程。
tpm emulator功能很是强大,可以满足学习研究使用了。trouSerS是IBM的一帮牛人搞的TSS软件栈,提供了与TPM交互的API,从而可以让我们方便地编写应用程序。关于安装过程,可以参考这篇blog:tpm emulator环境搭建。
本人学习过程中,由于要自己编写一些与take ownership相关的程序,所以没有安装tpm tools。
全部安装完成后,
启动过程:
#tpmd -df save(若是第一次启动,运行tpmd -df clear)
#modprobe tpmd_dev
#tcsd -f
停止过程:
#tpmd deactivated
#killall tpmd
#killall tcsd
#rmmod tpmd_dev.
在启动过程中遇到一些问题,将解决办法及可能的原因罗列一下:
1. 重启系统后,运行tpm(tpmd -df save),若提示下面错误:
#tpmd.c:341: Error: bind(/var/run/tpm/tpmd_socket:0) failed: No such file or directory
是由于系统重启时将/var/run/下的tpm目录清空了,
#mkdir /var/run/tpm
#tpmd -df save
即可成功启动tpm emulator.
2. 运行tcsd(tcsd -f),若提示有错误,可能是由于没有加载tpmd_dev模块(通过lsmod |grep tpmd查看)。
3. 在代码中调用trousers提供的TSS接口时(包含了相关头文件),编译时若提示下面的错误:
undefined reference to `....'
example.c:(.text+0x41): undefined reference to `...'
collect2: ld returned 1 exit status
需要加参数-ltspi:
# gcc -o example -ltspi example.c