1. 环境准备与依赖安装
在开始部署TPM模拟器之前,我们需要确保Ubuntu系统具备所有必要的编译工具和依赖库。我建议使用Ubuntu 20.04或22.04 LTS版本,这两个版本对TPM软件栈的兼容性最好。打开终端后,首先更新软件包列表:
sudo apt update
接下来安装核心开发工具链。这里需要注意,某些依赖包在Ubuntu默认仓库中可能有版本冲突,特别是libgcrypt和libcurl的版本:
sudo apt install -y autoconf automake libtool pkg-config gcc g++ make cmake
然后安装TPM模拟器和TSS栈所需的特定依赖。我建议分两组安装,避免某些库的版本冲突:
# 基础编译依赖
sudo apt install -y lcov pandoc autoconf-archive liburiparser-dev
# 通信与安全库
sudo apt install -y libdbus-1-dev libglib2.0-dev dbus-x11 libssl-dev
# 加密相关库
sudo apt install -y libcurl4-gnutls-dev libgcrypt20-dev libcmocka-dev uthash-dev
在实际安装过程中,我发现libgcrypt20-dev有时会与新版TSS栈存在兼容性问题。如果后续编译出错,可以尝试从源码编译安装libgcrypt的最新版本。另外,建议安装git以便从代码仓库获取最新源码:
sudo apt install -y git
完成依赖安装后,最好重启系统一次确保所有库文件正确加载:
sudo reboot
系统重启后,可以通过运行gcc --version和autoconf --version验证基础工具链是否正常。理想情况下,GCC版本应在9.0以上,autoconf版本在2.69以上。如果遇到依赖包冲突,可以尝试使用apt-cache policy [包名]查看可用版本,然后选择特定版本安装。
2. IBM TPM模拟器部署
TPM模拟器是软件环境的核心组件,它模拟了物理TPM芯片的功能。我推荐使用IBM的开源实现,这是目前最稳定且功能完整的TPM 2.0模拟器。首先创建专门的工作目录,避免与系统文件混淆:
mkdir -p ~/tpm-dev/ibmtpm
cd ~/tpm-dev/ibmtpm
从SourceForge下载最新版本的IBM TPM模拟器。我测试过多个版本,ibmtpm1332在Ubuntu上的兼容性最好:
wget https://jaist.dl.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
下载完成后解压源码包。这里要注意解压后的目录结构,源代码实际在src子目录中:
tar xzf ibmtpm1332.tar.gz
cd src/
现在开始编译模拟器。IBM TPM模拟器的编译过程相对简单,Makefile已经配置好了大多数选项。直接运行make即可:
make -j$(nproc)
编译过程大约需要2-3分钟,完成后会在当前目录生成tpm_server可执行文件。这个文件就是TPM模拟器的主程序。将其安装到系统目录以便全局访问:
sudo cp tpm_server /usr/local/bin/
为了确保模拟器能在系统启动时自动运行,我们需要创建systemd服务文件。我建议直接使用vim编辑器创建配置文件:
sudo vim /lib/systemd/system/tpm-server.service
服务文件内容如下,特别注意Before参数确保在abrmd服务之前启动:
[Unit]
Description=TPM2.0 Simulator Server Daemon
Before=tpm2-abrmd.service
[Service]
ExecStart=/usr/local/bin/tpm_server
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target


3106

被折叠的 条评论
为什么被折叠?



