TPM仿真环境搭建
文章目录
- 背景及注意事项
- 一、CMake
- 二、m4
- 三、GNU MP Library
- 四、TPM_Emulator
- 五、TSS协议栈(trousers-0.3.14.tar.gz)
- 六、 tpm-tools
- 七、查看是否安装成功
- 八、测试 TPM环境(需要开三个终端分别运行)
- 8.1 启动TPM (第一个终端)
- 8.2 启动 tss 环境(第二个终端)
- 九、启动注意
- 9.1 启动过程
- 9.2 停止过程
- 9.3 重启虚拟机之后,尝试启动tpm出现以下错误
背景及注意事项
宿主机系统:Windows10
虚拟机工具:VMware Workstation 16 pro
虚拟机系统:Ubuntu-18.04.6-desktop-amd64.iso
安装:CMake,m4,GNU MP Library,TPM_Emulator,TSS协议栈(toursers-0.3.14),tpm-tools
注意:在运行以下命令的过程中如果出现权限问题,尝试在命令前边添加sudo
一、CMake
- Ctrl+Alt+t 打开终端
- 使用命令
sudo apt-get install cmake安装CMake

二、m4
- 直接使用命令
sudo apt-get install m4安装即可

三、GNU MP Library
- 下载
gmp-6.3.0.tar.xz,官网:https://gmplib.org/#DOWNLOAD - 使用解压命令
tar -xf gmp-6.3.0.tar.xz进行解压,之后进入解压后的文件

- 依次执行下列命令
./configure
sudo make
sudo make check
sudo make install




4. 下载相关依赖
sudo apt-get update
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install m4




四、TPM_Emulator
- 下载网址:https://gitcode.com/PeterHuewe/tpm-emulator/overview?utm_source=csdn_github_accelerator&isLogin=1
- 下载之后解压,拖到Ubuntu中,cd 到tmp目录下,执行以下命令
cd tmp-emulator-master/
mkdir build
cd build
cmake ../
make install (如果这个命令不行的话可以试试 sudo make install )

3. 初始化tpm-emulator,依次执行以下命令
tpmd deactivated
killall tpmd
tpmd clear


- 启动 tpm-emulator,下边代码中的小括号表示可选
(sudo)modprobe tpmd_dev
(sudo)tpmd -f -d clear


如果启动成功则显示:

如果出现 Module tpmd_dev not found ,则先运行命令:(sudo)depmod -a,其中小括号表示可选
五、TSS协议栈(trousers-0.3.14.tar.gz)
-
下载地址:https://sourceforge.net/projects/trousers/files/trousers/0.3.14/trousers-0.3.14.tar.gz/download
-
解压到指定目录

-
安装依赖
apt-get install automake
apt-get install autoconf
apt-get install pkgconf
apt-get install pkg-config
apt-get install libtool
apt-get install gtk2-engines
apt-get install openssl
apt-get install libssl-dev
apt-get install glibc-doc









4. 安装过程(首先需要进入trousers文件夹中),然后依次执行以下命令
sh ./bootstrap.sh
./configure
make
make install




六、 tpm-tools
- 执行命令安装
sudo apt-get install tpm-tools

七、查看是否安装成功
tpm_version # 查看版本号
tmp_getpubek # 查看ek公钥
tpm_takeownership #获取owner

八、测试 TPM环境(需要开三个终端分别运行)
8.1 启动TPM (第一个终端)
sudo depmod -a
sudo modprobe tpmd_dev
sudo tpmd -f -d
- 已经启动了会出现下述提示

- 启动成功会出现以下界面

8.2 启动 tss 环境(第二个终端)
- 如果没有权限的话就在命令前边加上sudo
(sudo) tcsd -e -f

九、启动注意
9.1 启动过程
sudo depmod -a
modprobe tpmd_dev
tpmd -f -d tcsd -e -f
9.2 停止过程
tpmd deactivated
killall tpmd
killall tcsd
rmmod tpm_dev
9.3 重启虚拟机之后,尝试启动tpm出现以下错误

- 原因:由于系统重启时将/var/run/下的tpm目录清空了,重新创建一个即可
sudo mkdir /var/run/tpm
相关文章:
TPM仿真环境搭建
文章目录 背景及注意事项一、CMake二、m4三、GNU MP Library四、TPM_Emulator五、TSS协议栈(trousers-0.3.14.tar.gz)六、 tpm-tools七、查看是否安装成功八、测试 TPM环境(需要开三个终端分别运行)8.1 启动TPM (第一个…...
提高篇(五):使用Processing创作互动艺术:从灵感到实现
提高篇(五):使用Processing创作互动艺术:从灵感到实现 引言 互动艺术将观众从被动的观察者转变为主动参与者,通过创意编程和技术手段,让艺术品具备感知和回应的能力。Processing作为一种强大的创意编程工具,提供了丰富的功能和灵活的编程环境,帮助艺术家和设计师实现他…...
华为od-C卷100分题目-3用连续自然数之和来表达整数
华为od-C卷100分题目-3用连续自然数之和来表达整数 题目描述 一个整数可以由连续的自然数之和来表示给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式 输入描述 一个目标整数T(1<T<1000) 输出描述 该整数的所有表达…...
Chrome 自动执行 JS 脚本 | Tampermonkey 插件
文章目录 第 1 步:安装插件 Tampermonkey第 2 步:固定到工具栏第 3 步:在网站上启用 Tampermonkey第 4 步:查看效果第 5 步:调试 JS 代码😂 背景:有个网站,每次进去都要点 3 次才能把相关页面展开。而且,页面经常会自己刷新,导致展开的页面又收回去了。【这一天天的…...
ffmplay 源码解读
stream_open 讲解 // 定义一个静态函数用于初始化并返回VideoState结构体指针,用于管理播放状态 static VideoState* stream_open(const char* filename, AVInputFormat* iformat) {VideoState* is; // 创建VideoState结构体指针// 分配内存并初始化VideoState结构…...
java web如何调用py脚本文件
Controller public class IndexController {RequestMapping("/pythonTest")ResponseBodypublic String pythonTest(){// 假设你的Python脚本名为script.pyString pythonScriptPath "D:\\project\\c1\\hello.py";ProcessBuilder processBuilder new Proce…...
K8s:无状态
无状态服务 无状态服务是指服务的实例之间没有持久化状态,每个实例都是相同的,可以互换使用。 调度器 ReplicationController 简称 RC是 Kubernetes 早期版本中用来确保 Pod 副本始终运行的 API 对象。它通过监控 Pod 副本的数量,确保任何…...
Docker 入门篇(九)-- 使用 Maven 插件 构建 Docker 镜像
在这篇教程中,我们将学习如何使用 Maven 插件为 Spring Boot 应用构建 Docker 镜像。我们将使用 spring-boot-maven-plugin 和 dockerfile-maven-plugin 这两个插件。 一、前提条件 已安装 Docker。已安装 JDK 8 或以上版本。已安装 Maven。 二 创建一个 Spring …...
网络协议三
数据中心 一、DNS 现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 …...
LeetCode LRU缓存
题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…...
Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?
带来了重新设计的共享 Mac 文件夹版本,这些文件夹现在是符号链接,像指针一样指向您的 Mac 文件夹中的文件,同时仍然显示在 Windows 的本地磁盘上。 修复了由于共享文件夹问题导致 NinjaTrader 无法正常启动的问题。 修复了由于共享文件夹问…...
Python 将CSV文件转为PDF文件
CSV文件通常用于存储大量的数据,而PDF文件则是一种通用的文档格式,便于与他人共享和打印。将CSV文件转换成PDF文件可以帮助我们更好地管理和展示数据。本文将介绍如何通过Python编程将CSV文件导出为PDF文件。 Python Excel库安装及介绍 在 Python 中&am…...
4_XMR交易过程
XMR交易过程 参考文档 书: 《精通门罗币 : 私密交易的未来》(Mastering Monero) 书中的代码示例: 《精通门罗币 : 私密交易的未来》深入探究门罗币与密码学门罗币的环签名分析官方介绍视频 1.隐匿地址 Stealth Address_Monero官方介绍视频2.环签名 Ring Signature_Monero官方…...
02_共享锁和排他锁
共享锁和排他锁 文章目录 共享锁和排他锁简介共享锁(Shared Lock, S Lock)简介原理使用方式加锁流程使用场景 排他锁(Exclusive Lock, X Lock)简介原理使用方式加锁流程使用场景 对比注意事项结论 简介 MySQL 中的共享锁和排他锁…...
Ubuntu的启动过程
尽管通常情况下Ubuntu的启动并不需要用户过多地参与,但是Ubuntu系统的启动本身是一个非常复杂的过程。在这个过程中,有硬件的检测、系统内核的准备以及各种系统服务的启动等。作为系统管理员,需要深入了解其中所经历的阶段,才能在…...
c# 下 ScintillaNET 显示XML信息并折叠节点
winform下显示XML信息(非WPF) 之前使用的是FastColoredTextBox,github地址如下: https://github.com/PavelTorgashov/FastColoredTextBox 但是有个问题,它支持中文,wordwraptrue,自动换行时&…...
什么叫防御式编程
防御式编程是一种编程策略,主要目的是提高代码的健壮性和可靠性。它假设任何错误都可能发生,并且在设计和编写代码时采取预防措施以防止这些错误导致程序崩溃或产生错误结果。 以下是一些防御式编程的常见实践: 输入验证:总是验证…...
前端优化之图片压缩——tinyPNG
今天前端前辈新介绍的一个压缩图片的工具——tinyPNG,地址:TinyPNG – Compress WebP, PNG and JPEG images intelligently可以将图片压缩,进行优化。 一、使用方法——手动压缩 将超过200kb的图片拖到我标注的红框框里,拖到这里…...
Springboot集成Quartz
Quartz简介 Job 表示一个工作,要执行的具体业务内容。 JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。 Trigger 代表一个调度参数的配置…...
Android面试题之Kotlin Jetpack组件LifecycleScope
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Kotlin中,LifecycleScope是Android Jetpack架构组件的一部分,主要用于简化与生命周期相关的协程管理。 它属于android…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
