当前位置: 首页 > news >正文

OPTEE 3.15运行在QEMU ARMv8上

系统信息

uname -a Linux rtos 5.11.0-37-generic #41-Ubuntu SMP Mon Sep 20 16:39:20 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Git配置

~/.bashrc中开启git的调试模式

export GIT_TRACE_PACKET=1 export GIT_TRACE=1 export GIT_CURL_VERBOSE=1 git config --global user.email "yourmail@xx.com" git config --global user.name "yourname"

编译依赖

sudo apt install automake bc bison build-essential cscope curl device-tree-compiler expect flex autoconf ftp-upload gdisk acpica-tools libattr1-dev libc6:i386 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libhidapi-dev libncurses5-dev libpixman-1-dev libssl-dev libstdc++6:i386 libtool ninja-build zlib1g:i386 make mtools netcat unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev adb fastboot meson libgnutls28-dev autoconf -f sudo apt install -y python3-pyelftools sudo apt install -y python3-pip sudo apt install -y python3-pwntools python3-pycryptodome python3 -m pip install --user --break-system-packages \ pwntools pycryptodome pycryptodomex

下载代码

mkdir tee3.15 cd tee3.15 repo init -u https://github.com/OP-TEE/manifest.git --depth 1 -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.15.0 repo sync -j4 --no-clone-bundle

如果没有意外,下载成功截图如下:

获取交叉编译工具

cd build/ make -f toolchain.mk toolchains -j4

编译OP-TEE

cd build/ make -f qemu_v8.mk -j4

需要做的就是耐心等待编译完成,如图所示给虚拟机分配了4颗CPU,编译过程可以看到CPU占用率比较高。

还可以运行make check测试编译是否成功,会运行xtest用例。

运行

观察soc_term.py源码,可以看到支持端口入参。

可以开启两个shell命令行,分别使用python3 soc_term.py 54320和python3 sco_term.py 54321分别监听Normal World和Secure World两个世界的端口。

然后进入到build目录,运行make run-only即可进入到交互状态,然后按照提示输入c字母,回车确认:

接着Normal World以root用户登录:

并运行xtest进行测试:

如果顺利,你将会看到:

参考资料

OP-TEE Documentation — OP-TEE documentation documentation (optee.readthedocs.io)

FAQ

RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received

sudo apt-get purge git sudo apt-get install git

ModuleNotFoundError: No module named 'Cryptodome'

#pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,

pip3 uninstall pycryptodome pip3 install pycryptodome

edk2相关错误

编译edk2 提示莫名奇怪错误,可能是编译过程中没能正常下载相关依赖导致。

进edk2, 执行下载相即可。

git submodule update --init --recursive

edk2 boringssl下载失败

tianocore/edk2.git/CryptoPkg/Library/OpensslLib/openssl/boringssl: fatal: unable to access 'https://hub.fastgit.org/google/boringssl.git/': gnutls_handshake() failed: Error in the pull function. error: Cannot fetch tianocore/edk2.git/CryptoPkg/Library/OpensslLib/openssl/boringssl from https://boringssl.googlesource.com/boringssl Fetching: 100% (1/1), done in 4.610s 解决思路是使用git config --global url.A.insteadOf B 命令将boringssl.googlesource.com替换为谷歌的github镜像库 https://github.com/google/boringssl.git,方法如下: git config --global url."https://github.com/google/boringssl.git".insteadOf "https://boringssl.googlesource.com/boringssl"
http://www.cnnetsun.cn/news/4172364.html

相关文章:

  • MiniMax H3前瞻:技术评估、部署准备与效果验证全指南
  • 机器学习十大经典算法实战指南:从原理到数学建模应用
  • 工业机器人Socket通信:3D视觉引导路径传输的完整协议设计与实现
  • Vue.js面经应用开发实战与核心技巧解析
  • react-rangeslider快速上手指南:5分钟搭建你的第一个React滑块组件
  • 用google-ads-python增删改查广告:10个高频广告操作代码示例,简单到直接复制就能用
  • 为什么国旗有4个字符却只有1个字素簇?unicode-segmentation字素簇完整教程
  • meta与EnTT组合实战:打造C++ ECS游戏引擎的运行时内省与属性编辑基础
  • Physical Token经济学:破解机器人规模化瓶颈的能力复用新范式
  • MobileInfo 设备指纹实践:如何基于 Build 与 Serial 生成不碰撞的设备唯一 ID
  • 单机多GPU利用率最大化:Distributed-TensorFlow-Guide中Worker的GPU分配实战教程
  • 阿里云RTC LTR技术解析:硬件解码支持下的弱网视频抗丢包方案
  • 大模型Agent技术面试核心问题与实战解析
  • Vue+Flask求职推荐系统:Apriori算法实战
  • 人工变量法第二次迭代详解:从单纯形表到最优解判定
  • 在SUN 7149A CRT显示器上播放《九龙珠》:高行频驱动与信号配置实践
  • 美赛建模思维实战:从问题分析到模型构建的完整指南
  • 大模型面试8小时速通:知识图谱与高频题型解析
  • 自我认知面试技巧与STAR-L法则应用指南
  • Flutter混合开发中Gradle配置冲突:Cannot change attributes错误深度解析与解决方案
  • invest线性单位投影问题:提示数据集必须以线性单位投影...如何解决?
  • 踩坑记录——eBPF实现实时数据主从同步
  • Revit建筑设计思维课堂:从参数化建模到BIM协同的实战进阶指南
  • PyTorch实战:从零构建八大核心神经网络模型(CNN/RNN/GAN/Transformer等)
  • 北斗导航 | 基于赏金猎人优化算法(Bounty Hunter Optimizer, BHO)的接收机自主完好性监测算法研究,原理,公式,完整matlab代码,参考文献等
  • S-JEPA视觉自监督中GMM软目标映射:非最大概率组件的工程实践与权衡
  • 计算机组成原理核心精讲:从冯诺依曼到Cache与流水线
  • AI安全技术栈解析:从自动化检测到企业级部署实践
  • C++模板编程:从泛型思维到STL容器实现全解析
  • SA-ADP: Sensitivity-Aware Adaptive Differential Privacy for Large Language Models