本文的目的在于记录从安装ubuntu 20.04虚拟机开始搭建基于QEMU Armv8-A的OP-TEE运行环境所执行的操作,参考的官方文档链接如下:
QEMU v7 — OP-TEE documentation documentation
官方的执行脚本很简洁,如下所示:
$ mkdir optee $ cd optee $ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml $ repo sync $ cd build $ make toolchains $ make run
基于此,本文的主要内容是在说明如何从安装ubuntu操作系统开始,逐步建立使上述命令可以成功运行的环境。
本文解决遇到的问题时也参考了网上多篇相关文章,这些文章所述和本文实际遇到的问题现象也不尽相同,主要参考的一篇文章链接如下:
【OP-TEE 3.8.0学习】001_运行环境的搭建及编译_optee编译没有文件或目录-CSDN博客
1、安装ubuntu 20.04虚拟机
本文直接从官方网站下载iso安装文件,用于虚拟机安装,下载链接如下:
https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso
本文的虚拟机软件是vmware,选择下载的iso安装文件,建立新的虚拟机,需要注意的是需要保证新建虚拟机的容量设置足够,默认配置是20G,本文设置是64G。
虚拟机安装刚完成时,software update center还会自动更新软件,这个过程要等它完成,同时执行以下操作命令保证必要的软件的安装和更新:
sudo apt 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 \
libgmp3-dev \
libhidapi-dev \
libmpc-dev \
libncurses5-dev \
libpixman-1-dev \
libssl-dev \
libtool \
make \
mtools \
netcat \
ninja-build \
python3-crypto \
python3-cryptography \
python3-pip \
python3-pyelftools \
python3-serial \
rsync \
unzip \
uuid-dev \
xdg-utils \
xterm \
xz-utils \
zlib1g-dev
以上命令执行成功后,用于执于OP-TEE的ubuntu 20.04虚拟机环境就准备完成了。
2、安装和准备repo
官方文档的命令的核心部分就是使用repo下载和管理相关的代码和编译运行环境,通过使用repo,官方的文档提供的命令流也相当简单。
repo工具可以认为是调用git工具的python脚本集合,把复杂的git操作简单化。安装repo之前,首先安装和准备git和python,执行以下操作:
2.1、安装和准备git和python3
安装git:
sudo apt-get install git
配置git:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
安装python3:
sudo apt-get install python3
找到python3的安装位置:
whereis python3
在这里实际可能找到python3的其它版本,本文操作会找到更新的python3.8,无论是将/usr/bin/python3.8还是将/usr/bin/python3指向/usr/bin/python,实测都无区别。
找到要使用的python3后,将要python3执行链接指向默认链接:
sudo ln -s /usr/bin/python3 /usr/bin/python
安装python加密库:
sudo pip3 install pycrypto
sudo pip3 install pycryptodomex
2.2、安装和准备repo
这里参考网上的做法采用清华的镜像地址来安装repo,执行以下命令:
wget https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
sudo chmod 777 git-repo
sudo mv git-repo /usr/bin/repo
OP-TEE的repo配置初始化,执行以下命令:
mkdir optee
cd optee
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.8.0
以上命令执行成功后,在optee目录下,OP-TEE代码环境的repo配置初始化也完成了。
3、下载,编译运行OP-TEE
根据官方文档,依次执行以下命令就可以:
repo sync
cd build
make toolchains
make run
本节的命令是耗时较长的操作,保持能够访问github的网络环境是最重要的,本节的命令出错可以反复执行。
本文的操作中,在执行make run的过程中报错,查询是下载的python测试脚本仍然是python2的版本,和系统现有python3不兼容,执行以下操作:
sudo apt-get install python2
sudo ln -f /usr/bin/python2.7 /usr/bin/python
完成上述操作后,重新执行make run,编译成功。
最后一条命令执行成功后,会出现qemu模拟器,在qemu命令行下,按c然后回车,OP-TEE将会运行。在REE环境下输入root,即可在命令行下直接运行xtest测试用例。退出后,重新进入,在optee目录下运行make run-only。