0%

Ubuntu下Tpm_emulator的安装

  写在前面的话:老师布置任务安装Tpm模拟器,坑了好久,总算给装上了,写篇教程给还未安装好的老哥及健忘的自己。
  环境:ubuntu 12.04 32位(vmware workstation pro 12)
  PS:由于用到的好多库环境为32位,之前尝试了开启i386架构配置编译环境仍然编译出问题,故放弃了64位ubuntu转而采用32位系统。


一、安装cmake

sudo apt-get install cmake

二、安装m4(第三步要用)

sudo apt-get install m4

三、安装GNU MPlibrary

下载源码:**点击进入官网**(我下载的是最新版本gmp-6.1.2.tar.bz2)

解压解包后进入目录gmp-6.1.2
安装过程如下:

tar -jxf gmp-6.1.2.tar.bz2
cd gmp-6.1.2
./configure
make
make check
sudo make install

四、安装GTK

sudo apt-get install build-essential
sudo apt-get install gnome-core-devel
sudo apt-get install pkg-config
sudo apt-get install devhelp
sudo apt-get install libglib2.0-doc libgtk2.0-doc
sudo apt-get install glade libglade2-dev
sudo apt-get install libgtk2.0*

五、安装Tpm emulator

下载源码,两个网址任选:**github** or sourceforge

这里选择的版本是tpm_emulator-0.7.4.tar.gz
解压后进入目录:

tar -xzf tpm_emulator-0.7.4.tar.gz
cd tpm_emulator-0.7.4
mkdir build
cd build
cmake ../
make
sudo make install

安装完成

初始化

sudo tpmd deactivated
sudo killall tpmd
sudo tpmd clear

启动软TPM

sudo modprobe tpmd_dev
sudo tpmd -f -d

PS:第一次运行可能有以下情况:

若出现Module tpmd_dev not found,则先运行命令depmod -a
若出现failed: address already in use,则运行命令rm /var/run/tpm/tpmd_socket:0
若成功,则会不断出现tpmd.c:310: Debug: waiting for connections…

六、TSS协议栈安装

下载trousers及tpm-tools:**点击进入下载页面**

实际只安装了tpm-tools-1.3.8.tar.gz和trousers-0.3.8.tar.gz两个包

    这两个包版本并非最新,但教程以此为范本,以防后面配置出错,故仍套用这两个版本,有时间再折腾。

安装trousers-0.3.8.tar.gz

解压解包不再详述,完成后进入文件夹
注意:先查看库地址

whereis libtddl.so

此处此系统显示为:

libtddl: /usr/lib/libtddl.a /usr/local/lib/libtddl.so /usr/local/lib/libtddl.a

故后面加红色代码处为/usr/lib/lib/libtddl.so,否则根据情况更改。
1、编译前,首先对其中的几个文件进行修改
修改./src/tcsd/Makefile.am第4行

tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a${top_builddir}/src/tcs/libtddl.a -lpthread @CRYPTOLIB@

为:

tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a/usr/local/lib/libtddl.so -lpthread @CRYPTOLIB@

修改./src/tcsd/Makefile.in第55, 56行:

tcsd_DEPENDENCIES =${top_builddir}/src/tcs/libtcs.a \
    ${top_builddir}/src/tcs/libtddl.so

为:

tcsd_DEPENDENCIES =${top_builddir}/src/tcs/libtcs.a \
    /usr/local/lib/libtddl.so

修改后进行编译安装
直接执行./configure而后make会由于将警告当作错误而出现一些错误信息,简单的解决办法是执行:

env CFLAGS="-Wno-unused-but-set-variable" ./configure

接着安装的老套路:

make
sudo make install

安装完成后启动TCSD(在启动TCSD之前,必须先启动tpm-emulator(参考第五步),否则会提示找不到设备)

sudo tcsd -e -f

可能会出现下面报错信息:

TCSD TCS ERROR: TCS GetCapability failed with result = 0x1c

这是由于上次启动TPM没有正常退出,并且这次以默认的SAVE方式启动,进而自检不通过造成的,只需执行:

sudo tpmd -f -d clear

之后再次执行:

sudo tcsd -e -f

安装tpm-tools-1.3.8.tar.gz

解压解包后进入目录

./configure
make
sudo make install

检测是否成功安装:进入tpm-tools-1.3.8/src/tpm_mgmt/目录下查看以下三个信息:

./tpm_version                 #查看版本号
./tpm_getpubek                #查看ek公钥

注意:
如果./tpm_version 出现tpm_version: error while loading sharedlibraries: libtspi.so.1: cannot open shared object file: No suchfile or directory, 则执行命令:

sudo apt-get installlibtspi-dev

若出现Tspi_Context_Connect failed: 0x00003011 - layer=tsp,code=0011 (17), Communication 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,不然会报错
目前并未尝试

七、TPMmanager安装

tpmmanager可装可不装,主要是它提供QT界面可以直观查看和管理TPM。
需要QT支持,需要安装qt4-qmake和libqt4-dev库

sudo apt-get install qt4-make
sudo apt-get install libqt4-dev

源码下载地址:点击下载

解压后:

cd tpmmanager-0.8.1
qmake-v
make
sudo install bin/tpmmanager /usr/local/bin
tpmmanager            #运行tpmmanager,注意必须先启动tpm模拟器

至此,所有安装完成
具体怎么去使用,再研究。