OPTEE 3.15运行在QEMU ARMv8上

系统信息

bash 复制代码
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的调试模式

bash 复制代码
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"

编译依赖

bash 复制代码
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 zlib1g:i386 make mtools netcat unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev adb fastboot autoconf -f

sudo pip3 install pycrypto
sudo apt install python3-pyelftools
sudo pip3 install pwntools
sudo pip3 install pycryptodomex

下载代码

bash 复制代码
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

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

获取交叉编译工具

bash 复制代码
cd build/

make -f toolchain.mk toolchains -j4

编译O P-TEE

bash 复制代码
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

bash 复制代码
sudo apt-get purge git
sudo apt-get install git

ModuleNotFoundError: No module named 'Cryptodome'

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

bash 复制代码
pip3 uninstall pycryptodome
pip3 install pycryptodome

ed k2相关错误

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

进edk2, 执行下载相即可。

bash 复制代码
 git submodule update --init --recursive 

e d k2 boringssl下载失败

bash 复制代码
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"
相关推荐
toradexsh3 小时前
基于 NXP i.MX8M Plus 测试 Zephyr RTOS
arm·rtos·nxp·imx8mp·zephyr
Hiyajo pray5 小时前
属性sdn隐私保护分析
网络安全
Hiyajo pray7 小时前
属性sdn的隐私保护策略(1)
网络安全
HackTwoHub8 小时前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构
杭州默安科技8 小时前
从告警到多防火墙联动封禁:智能体与XDR的自动化响应实践
人工智能·网络安全
云栖梦泽在10 小时前
跨境电商账号频繁验证怎么办?从公网 IP、ASN、浏览器环境到登录稳定性排查
网络·网络协议·tcp/ip·网络安全·性能优化
Quincy_Freak11 小时前
银河麒麟 SQLite 实操:Excel 导入与 SQL 语法编辑功能详解摘要
数据库·arm·数据库管理·大数据分析·银河麒麟·aarch64·sqlitego
磐时信息技术1 天前
GB 44495/44496正式施行:智能网联汽车信息安全与软件升级进入强制合规阶段
网络安全·信息安全·汽车·gb44495·gb44496
Quincy_Freak2 天前
信创内网数据规范实践:银河麒麟下SQLite本地数据安全管理方案
数据库·sqlite·arm·数据库管理·大数据分析·银河麒麟·aarch64
被克制了2 天前
安全协议设计与分析(2)
网络安全·密码学·安全协议