ubuntu下构建Tpm模拟器
 
在Ubuntu下构建模拟TPM环境,步骤如下:
环境:虚拟机Virtubox+ ubuntu 12 ,以下为root用户登录
1.安装CMake
下载网址:/
我下载的版本是cmake-2.8.
解压:#tar -zxf cmake-2.8.
安装:(1)#cd cmake-2.8.8
     (2)#./bootstrap
     (3)#make
      (4)#makeinstall
参考其中的文件
这一步在(1)的时候可能会遇到没有C++编译器之类的问题,可以敲入命令apt-get install g++解决,也可以直接apt-get install build-essential。
2.安装GNU MPlibrary
下载网址:
我下载的版本是gmp-5.0.5.tar.bz2
解压:#tar -jxf gmp-5.0.5.tar.bz2
安装:(1)#./configure
      (2)#make
      (3)#make check
       (4)#makeinstall
参考其中的INSTALL文件
若出现提示缺少m4,则敲入命令apt-get install m4
3.安装GTK
参考:www.linuxidc/Linux/2008-09/15955.htm
#apt-get install build-essential #这将安装gcc/g++/gdb/make等基本编程工具
#apt-get install gnome-core-devel #这将安装 libgtk2.0-devlibglib2.0-dev 等开发相关的库文件
#apt-get install pkg-config #用于在编译GTK程序时自动出头文件及库文件位置
#apt-get install devhelp #这将安装 devhelp GTK文档查看程序
#apt-get install libglib2.0-doc libgtk2.0-doc #这将安装 gtk/glib的API参考手册及其它帮助文档
#apt-get install glade libglade2-dev#这将安装基于GTK的界面GTK是开发Gnome窗口的c/c
++语言图形库
#apt-get install libgtk2.0*, gtk+2.0所需的所有文件统通下载安装完毕
4.安装Tpm_emulator
下载:developer.berlios.de/project/showfiles.php?group_id=2491
我下载的版本tpm_emulator-0.7.
解压:#tar -xzf tpm_emulator-0.7.
安装:(1) #cd tpm_emulator-X.Y
     (2) #mkdir build
     (3) #cd build
     (4) #cmake ../
      (5)#make
      (6)#make install
参考其中的README文件
初始化
#tpmd deactivated
#killall tpmd
#tpmd clear
启动软TPM
#modprobe tpmd_dev
#tpmd -f-d       (tpmd -h查看启动参数)
若出现Module tpmd_dev not found,则先运行命令depmod -a
若出现failed: address already in use,则运行命令rm/var/run/tpm/tpmd_socket:0
若成功,会不断出现如下提示:
tpmd.c:310: Debug: waiting
5.TSS协议栈安装
下载网址:sourceforge/project/showfiles.php?group_id=126012
我下载的协议栈包如下:
testsuite-0., grub-0.97-13-ima-1.1.,tpm_keyring2-0., tpm-tools-1.3.,openssl_tpm_engine-0.4., trousers-0.3.
实际上我只安装了tpm-tools-1.3.和trousers-0.3.两个包。步骤如下:
首先安装trousers-0.3.
解压:#tar -zxf trousers-0.3.
安装:参考其中的README文件
(1)在编译前,我们首先对其中的几个文件进行修改
修改./src/tcsd/Makefile.am第4行如下:
4 tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a${top_builddir}/src/tcs/libtddl.so -lpthread @
CRYPTOLIB@
注意:上面为一行
tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a/usr/local/lib/libtddl.so -lpthread @CRYPTOLIB@
 
修改./src/tcsd/Makefile.in第55, 56行如下:
 55 tcsd_DEPENDENCIES =${top_builddir}/src/tcs/libtcs.a \
 56        ${top_builddir}/src/tcs/libtddl.so
为:
 55 tcsd_DEPENDENCIES =${top_builddir}/src/tcs/libtcs.a \
 56        /usr/local/lib/libtddl.so
注:上面修改中的/usr/local/lib/有时可能会是/usr/lib,可查看libtddl.so的位置来确定是哪个目录。
(2)该版本文件夹中没有bootstrap,因此,sh bootstrap.sh步骤省去
(3)#./configure
(4)#make
(5)#make install
启动TCSD
#tcsd -e -f
在启动TCSD之前,必须先启动tpm-emulator,否则会提示不到设备.
在make中,可能会出现将警告当做错误的情况,使得make无法继续下去,有以下几种解决办法:
- add -Wno-error=unused-but-set-variable to CFLAGS to turn itinto a
  warning; or
- remove -Werror from CFLAGS (or append -Wno-error) tocontinue
  compiling despite warnings; or
- use -Wno-unused-but-set-variable to disable that particularwarning
  entirely.
我使用了第三种,即将命令(3)改为env CFLAGS="-Wno-unused-but-set-variable"./configure
一切正常。
然后安装tpm-tools-1.3.
解压缩:#tar -zxf tpm-tools-1.3.
安装过程参考其中的README文件
 (1) # sh./bootstrap.sh  因为没有bootstrap.s件,所以该步省掉
 (2) # ./configure
 (3) # make
 (4) # make install
若出现ld returned 1 exit status,error, undefinedreference的情况,可将(2)命令改为
./configure --prefix=/usr
参考自sourceforge/mailarchive/forum.php?thread_name=8EC9AB6E66453948A332E1C0D268369D09FF82@IMCMBX03.MITRE.ORG&forum_name=trousers-users
原话为:
what may be happening here is that when you rebuildtrousers
from source it gets installed in /usr/local by default, then whenyou
build tpm-tools it can only find your distro's libtspi.so in/usr/lib.
 ./configure --prefix=/usr should fix this.
成功解决。
6.检测是否成功安装:
tpm-tools-1.3.8/src/tpm_mgmt/目录下查看以下三个信息:
#./tpm_version      #查看版本号
#./tpm_getpubek   #查看ek公钥
#./tpm_takeownership   #获取owner
注:如果都成功表明TPM模拟环境已经完全构建成功了。
如果 tpm_version 出现tpm_version: error while loading sharedlibraries: libtspi.so.1: cannot open shared object file: No suchfile or directory,  则使用命令apt-get installlibtspi-dev
若出现Tspi_Context_Connect failed: 0x00003011 - layer=tsp,code=0011 (17), Communic
ation failure
,则开启tpmd和tcsd即可。
另外,
在tpm_emulator-0.7.4/tddl文件夹下有测试事例:
../tpm_emulator-0.7.4/tddl# gcc -o test_tddl test_tddl.c -ltddl//-ltddl 为链接tddl的动态链接库
../tpm_emulator-0.7.4/tddl#LD_LIBRARY_PATH=/usr/local/lib ./test_tddl//运行结果
因为$PATH中没有路径/usr/local/lib,因此,需要加上LD_LIBRARY_PATH=/usr/local/lib,不然会报错
 
php编程手册

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。