TrustZone——运行环境—QEMU—OP-TEE

本文档介绍了如何在QEMU上配置和运行TrustZone的OP-TEE安全系统。首先,概述了所需的依赖项,然后详细阐述了下载、设置QEMU和编译的过程。在编译过程中提到了可能遇到的问题及解决方案,如内核版本、tbconv.c的编译错误和busybox的编译问题。最后,文章展示了成功运行后的Linux和安全系统界面,并预告了后续将探讨FastModels的运行效果。

终于看到一款算是比较完善的安全OS。看它支持的平台就知道开发投入的工作量不小。

支持FastModels和QEMU两个虚拟模拟器,其他5款开发板。今天先看看QEMU运行起来效果怎么样吧。

 

  1. Foundation Models
  2. ARM Juno board
  3. QEMU
  4. STMicroelectronics boards
  5. Allwinner A80
  6. Mediatek MT8173 EVB
  7. HiKey Board

 

下面是编译说明。我就说一下关键点吧。下面的内容在git服务器optee-os的根目录下README.MD。

linux是3.18就可以,如果不好下载,下载3.18或者3.18rc1解压到qemu_optee下,把目录的名字改为linux即可。

第一步:

安装需要的包,apt-get解决。没有难度。如果有冲突的包,remove一下再安装即可。

第二步:

运行下载和编译环境脚本setup_qemu_optee.sh

执行完成之后,如果目录不变的话,应该在~/devel/qemu_optee目录下出现build.sh等一系列脚本。

如果有需要调整的,只需要编译对应的文件即可。如果你更换了linux的内核,或者文件系统。记得重新编译bios.bin,也就是运行buid_bios.sh。链接都在bios.bin里面。

第三步:

运行build.sh。主要是干几件事。bios.bin(qemu引导文件),nsec_blob.bin(非安全系统bin,调整过的zImage),nsec_rootfs.bin(linux文件系统,包含optee_client、TEE_Client的驱动和xtest测试程序等),secure_blob.bin(安全系统包含安全ta)。

具体的几个文件的关系是bios.bin,里面有后面三个文件的地址。需要调用的时候,切换到对应的地址去运行。

第四步:

运行两个终端和一个qemu模拟器。就能够看到linux和安全系统运行的效果了。如下图:一个是非安全侧XTEST调用成功,一个是安全侧TEE-CORE打印。另外是qemu运行界面。

刚刚运行起来的linux是这样的。

后面的图是运行完xtest之后的效果。

 

 

总结:

整体编译还算顺利。遇到问题如下:

1.网速不够快,独立下载linux内核。

2.tbconv.c代码有问题,const使用强转修正即可。也许你编译的时候问题已经修正了。

3.busybox无法编译。这个主要是编译工具链的问题。可以下载gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux.tar.xz。安装一下。以前有arm编译器的尽量取消关联以免影响。在setup_qemu_optee.sh文件中,编译gen_rootfs部分开始,指定cross_compiler到脚本提供的那个编译器也能解决。

4.如果某个部分无法成功,需要删除整个目录,再次运行setup_qemu_optee.sh才有效果。

 

祝大家编译顺利!!!

 

下一次,我们再看看fastmodels运行的效果。

 

后面是从下面地址截取出来的。

https://github.com/OP-TEE/optee_os#44-qemu

4.4 QEMU

You can run OP-TEE using QEMU since October 2014.

4.4.1 Prerequisites

To be able run this script you will need to install a couple of dependencies. On a Debian based system (Ubuntu, Mint etc.), you will at least need to install the following packages:

$ sudo apt-get install zlib1g-dev libglib2.0-dev libpixman-1-dev libfdt-dev \
               libc6:i386 libstdc++6:i386 libz1:i386 cscope
4.4.2 Download and setup QEMU
$ wget https://raw.githubusercontent.com/OP-TEE/optee_os/master/scripts/setup_qemu_optee.sh
$ chmod 711 setup_qemu_optee.sh
$ ./setup_qemu_optee.sh
4.4.3 Compile for QEMU

During installation a couple of helper scripts were generated, the main reason for this is that there is a lot of interdependencies between the different software components and it's a bit tricky to point to the correct toolchains and to know in which order to build things.

  • build_bios.sh: This build the BIOS needed in QEMU

  • build_linux.sh: This is used to build the Linux Kernel.

  • build_optee_client.sh: This will build OP-TEEs client library.

  • build_optee_linuxkernel.sh: This will build OP-TEEs Linux Kernel driver (as a module).

  • build_optee_os.sh: Builds the Trusted OS itself.

  • build.sh: Builds all software components in the correct order.

  • run_qemu.sh: This script starts QEMU.

  • serial_0.sh: Starts listening to QEMUs normal world UART console.

  • serial_1.sh: Starts listening to QEMUs secure world UART console.

  • update_rootfs.sh: This script will update rootfs. For example when you have updated normal world component, you will need to put them into rootfs. Calling this script will do so. In case you are creating a new Trusted Application, you must also edit filelist-tee.text in the gen_rootfs folder accordingly.

To build everything you will need to run the script build.sh, which will build all gits and in the correct order.

4.4.4 Boot and run QEMU and OP-TEE

To run this you need to lunch two consoles for the UARTs and one console for QEMU itself, so in separate shell windows run:

  $ ./serial_0.sh
$ ./serial_1.sh

and finally

$ ./run_qemu.sh
...
QEMU 2.1.50 monitor - type 'help' for more information
(qemu) c

In the window for serial_0 you will now get the normal world console and here you need to load and OP-TEEs Linux Kernel driver and also load tee-supplicant. This is done by the following lines:

$ root@Vexpress:/ modprobe optee_armtz
$ root@Vexpress:/ tee-supplicant &
# 课程背景2021年ARM又推出了ARMv9架构,系统软件架构也在悄无声息地发生变化。在这种架构中,强调的是隔离技术,包括资源的隔离、运行时隔离,特权操作系统的权限也变得越来越小…不管您是什么领域,ARM服务器、汽车电子、手机或者是其它设备终端,安全都是其中的一个重要环节。我们常说的安全一般是只网络安全/业务安全/App安全,这些安全依赖的正是操作系统安全,操作系统安全所依赖的就是安全架构技术,在该安全架构中,首当要学习的就是Trustzone/TEE技术。只有设备安全/操作系统安全/APP安全/网络安全/服务器安全整个一条链都安全了,那么你的业务才算得上的安全.不管您是做什么的,您做不做安全或虚拟化,掌握整个系统软件架构也是一件必要的事情。您只有掌握了安全架构,你才具有全局的视野,才能进行全局的软件设计,才称得上架构师。安全不仅仅是架构安全,安全还是一种生态,安全还产生一类标准。安全出现在产品声明周期的任何一个角落,它可能零碎地出现在硬件中、零碎地出现在软件代码中。如果你不了解安全,你可能无法进行优秀的产品设计,你甚至无法去正确的阅读代码。# 课程介绍(1) 讲解ARM最新硬件架构(ARM Core、ARM Architecture)、SOC架构(2) 讲解最新的Trustzone安全架构、TEE架构、Secureboot等(3) 讲解软件组件:TF-A(ATF)、optee_os、Linux Kernel、CA/TA应用程序等,及其交互模型、设计模型(4) 多系统交互代码导读、安全论证实践、CA/TA示例实践、安全业务设计实践(5) 我们学习的是全部硬件、全部系统,软硬结合,或者是大系统的软硬件融合# 课程收益1、安全不再神秘,能cover住全局2、熟悉ARM Architecture架构知识3、熟悉SOC架构知识4、熟悉主流的系统软件框架5、知道多系统之间是如何交互的,也能够进行系统级的设计6、深入了解当前的系统安全架构以及未来安全架构趋势7、熟悉基础的安全业务设计方法8、熟悉系统的启动流程、Secureboot等9、知道Linux Kernel在大系统中的位置,以及与其它系统交互的方法10、熟悉各类标准和规范11、学习资料的获取方法 # 课程大纲《Trustzone/TEE/系统安全开发速成班》 --当前48节课/19小时说明: 本视频会持续更新,购买时请以课程目录为主。本EXCEL一个月更新一次。章节编号课程时常第一章基础和简介1课程介绍 8:332ARM和SOC的架构简介60:13第二章软硬件基础3armv8/armv9基础概念26:204ARMv8/ARMv9的Trustzone技术77:565ARMv7的Trustzone技术8:376安全架构及其未来趋势(FF-A/SPM/CCA)6:417ARMv9 CCA机密计算框架底层核心原理简介20:448ARMv9 RME安全扩展详解61:299ATF Quick Start0161:2710Optee Quick Start49:3411系统软件Quick Start21:0412Secureboot原理深度讲解60:2813Android AVB的介绍26:0914TZC400详解17:5615TZC400代码导读之ATF13:4416RPMB详解30:0617RPMB代码导读之optee14:0318efuse详解12:1919Anti-Rollback的介绍11:33第三章软件架构20TEE的组件介绍67:5921TEE的RPC反向调用31:1422TEE的调度模型21:3223各类标准和规范22:17第四章软件架构(高级)24多系统之间的管理模型(ABI/标准)10:3025多系统之间的调度12:2126多系统之间的中断(不含虚拟化)61:4727多系统之间的中断(虚拟化)6:5728再谈多系统之间的调度(多核多线程)10:3129其它(内存管理/PSCI...)10:12第五章安全应用开发基础30安全应用开发基础5:3731TEE环境:qemu_V8环境的使用4:2032TEE环境:编写一个CA和TA程序11:0433TEE环境:编写漂亮的文档4:1434TEE环境:搭建阅读代码神器opengrok3:2635TEE环境(必看):使用集成好的qemu_v8镜像程序20:2936[CA/TA开发]CA到TA的通信9:1837[CA/TA开发]CA到TA的传参27:1638[CA/TA开发]TEE中的存储系统20:5739[CA/TA开发]TEE中的密码学系统简介12:3740[CA/TA开发]TEE中的密码学系统简介-数字摘要Hash等33:2141[CA/TA开发]TEE中的密码学系统简介-对称密码学算法AES等12:2042[CA/TA开发]TEE中的密码学系统简介-消息摘要算法HMAC等15:4843[CA/TA开发]TEE中的密码学系统简介-非对称密码学算法RSA等7:33第六章安全业务设计高级44Gatekeeper的介绍29:3245keymaster/keymint/keystore/keystore213:2746生物认证(指纹/人脸)13:5747DRM的介绍21:3748TUI的介绍17:03总计时统计(分钟)1128:12 说明:本课程会持续更新…
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值