因为研究生阶段选的是trustzone的研究方向,所以最近在一直看这方面的东西。前不久在github上找到这个optee的开源项目,于是fork来学习一下。
地址:https://github.com/OP-TEE
发现optee有4个项目:
optee_os:包含了TEE操作系统本身的源代码,提供了TEE的内部接口。
optee_client:包含了TEE客户端库的源代码,提供了TEE的客户端接口。
optee_linuxdriver:包含了TEE驱动的源代码,提供了TEE的通用驱动程序。
在这张图上可以清楚地看出各部分的关系。
在optee_os中,作者很详细的介绍了这个项目的配置方法。你可以根据自己的需要,选择简易安装,使用某些硬件或者FVP,QEMU等平台来运行这个项目。因为没钱买硬件,我用了fast model作为平台来使用optee,所以我只介绍一下基于FVP的安装方式。
首先要确定一些依赖关系是否满足:
- $ sudo apt-get install uuid-dev
如果你的是64位的linux系统还需要安装下面几个包:
- $ sudo apt-get install libc6:i386 libstdc++6:i386 libz1:i386
之后要下载一个安装脚本,并运行:
- $ wget https://raw.githubusercontent.com/OP-TEE/optee_os/master/scripts/setup_fvp_optee.sh
- $ chmod 711 setup_fvp_optee.sh
- $ ./setup_fvp_optee.sh
这个脚本的功能主要是克隆一些文件,比如linux内核,optee_os,optee_client,optee_driver以及一些工具链。因为其中几个文件比较大,所以可能需要比较长的时间。
中间,安装脚本会提示你去下载FVP。因为版权问题,你需要自己去http://www.arm.com/products/tools/models/fast-models/foundation-model.php下载foundation-model并放到指定的目录,并且把setup_fvp_optee.sh脚本中的SRC_FVP置为1。之后重新运行setup_fvp_optee.sh,等待大概一个小时就可以完成安装。看到 OP-TEE and FVP setup completed.
说明安装成功。
安装成功之后,会在你的home目录下生成一个devel文件,进入目录之后会看到一些脚本文件,其作用在github里有比较详细的描述,就不在这个重复了。之后运行如下命令:
- $ ./build_secure.sh
- $ ./build_normal.sh
就可以编译这个项目了。
最后,通过
- $ ./run_foundation.sh
- root@FVP:/ modprobe optee_armtz
- root@FVP:/ tee-supplicant &
现在optee就可以正常使用了。
tee-supplicant 是host端的一个守护程序,用于向optee加载或卸载ta。
tee-supplicant & 是让tee-supplicant程序后台执行。