optee更新到3.13.0,记录下在ubuntu18.04上搭建optee的过程。
1.准备
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot autoconf \
automake bc bison build-essential ccache cscope curl device-tree-compiler \
expect flex ftp-upload gdisk iasl libattr1-dev libcap-dev \
libfdt-dev libftdi-dev libglib2.0-dev libhidapi-dev libncurses5-dev \
libpixman-1-dev libssl-dev libtool make \
mtools netcat python-crypto python3-crypto python-pyelftools \
python3-pycryptodome python3-pyelftools python-serial python3-serial \
rsync unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev
2.optee repo初始化
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo-url=git://codeaurora.org/tools/repo.git -b 3.13.0
sed -i "s/\.git//g" .repo/manifest.xml
repo sync -j4 (可能需要执行多次)
3.编译toolchains
cd build
make -f toolchain.mk toolchains
4.配置edk2
新版本edk2包有问题,工程里link了6个其他工程,第2步不会将link的工程下载下来,所以需要手动将对应版本的link的工程源码下载下来,放到应该放的位置,具体为下面几个,网址:Releases · tianocore/edk2 (github.com),在mainfest里面确定哪个release,下载对应的
submodule-BaseTools-Source-C-BrotliCompress-brotli.zip
submodule-CryptoPkg-Library-OpensslLib-openssl.zip
submodule-MdeModulePkg-Library-BrotliCustomDecompressLib-brotli.zip
submodule-RedfishPkg-Library-JsonLib-jansson.zip
submodule-SoftFloat.zip
submodule-UnitTestFrameworkPkg-Library-CmockaLib-cmocka.zip
5.安装ninja
新版本的qemu编译依赖ninja,所以需要先安装ninja,如果不安装ninja,在第6步编译时会出现 ERROR: Cannot find Ninja
sudo apt install re2c
git clone git://github.com/ninja-build/ninja.git && cd ninja
./configure.py --bootstrap
sudo cp ninja /usr/bin/
ninja --version #查看ninja版本
6.编译optee
make -f qemu_v8.mk all -j4 (-j4可以省略,单线程编虽然比较慢,但不会出问题)
7.使用qemu运行optee
make -f qemu_v8.mk run-only
额外
过程中需要访问部分网站,自行想办法。
参考
Getting started — OP-TEE documentation documentation (optee.readthedocs.io)
OP-TEE_3.6.0的qemu运行验证_shuaifengyun的专栏-CSDN博客
QEMU源码编译安装【教程】 - From_Zero - 博客园 (cnblogs.com)