OPTEE3.17+ubuntu20.04+qemu_v8搭建OPTEE开发环境

参考文章:

https://blog.csdn.net/capodexi/article/details/123548850
https://blog.csdn.net/qq_42557044/article/details/130973200
https://blog.csdn.net/zhuwade/article/details/125513873
https://zhuanlan.zhihu.com/p/521196386
https://blog.csdn.net/m0_63932232/article/details/130211897(这个是ubuntu14上的教程,对应optee2.6,用的python2)
https://blog.csdn.net/weixin_42135087/article/details/119712448(付费,不过按照里面的教程还是有些问题)
https://blog.csdn.net/yuxi_xi/article/details/128905197(这个文章也很好)

参考了非常多的文章,环境一直出问题,搞了好几天,一直报错,所以总结一下。

  1. 系统安装:首先是需要安装ubuntu20.04镜像(ubuntu-20.04.6-desktop-amd64.iso ),参考下面的镜像链接,我选的是中科大的镜像,下载很快。使用virtualBox安装镜像,参考下面第二个链接。(安装选项可以选择最小版本的安装,安装教程中的增强功能要安装。
    镜像链接:https://blog.csdn.net/weixin_45498383/article/details/131047312
    virtualBox镜像安装教程:http://www.taodudu.cc/news/show-3338373.html?action=onClick

  2. 网络问题:然后就是核心的网络问题,这个是最核心的,需要能访问github。虽然网上很多教程说改配置文件能够访问github,但是我试了很多,依然在后面git的时候下载失败。所以需要配置ubuntu能访问外网,并且是能安装到linux系统上的工具。这个如果有需要可以私信我,或者网上找能访问外围的工具也行。(后续很多问题都是下载中断,导致有些包没下载下来,最后没办法运行成功。)比如下面的报错问题,
    fatal:unable to access 'http://git…(这种问题就是网络问题,需要配置linux访问外网)
    [common.mk:573:optee-os-common]Error 2(网络中断导致执行repo sync的时候没下载成功所有的包)

  3. 基础包安装:接下来,就是开始安装最基础的包,参考的是optee的官方链接(https://optee.readthedocs.io/en/latest/building/prerequisites.html),找自己对应ubuntu版本的基础包,打开命令行窗口运行安装。这步先要执行下面的更换镜像源。不然会出现下面图中的问题。

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

这个地方刚开始会出现找不到对应的仓库下载这些包,原因是刚开始默认的仓库太旧,需要更改,不然会出现下面图的问题。参考下面的链接(我用的是阿里的,替换里面的内容):
Ubuntu–更改国内镜像源(阿里、网易、清华、中科大):

https://blog.csdn.net/u011198687/article/details/121103821
https://blog.csdn.net/u011483658/article/details/95012034
https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/

在更新镜像源之前得用lsb_telease -a | grep Codename 或者lsb_release -a查看自己系统版本,然后替换源里面的内容,20.04时focal ,18.04是bionic,16.04是xenial。
可以参考上面第一个链接的命令,不过那个里面的源是不同版本的,我用的中科大的对应20.04版本。
更换镜像源成功之后,再执行上面的基础包的安装。
在这里插入图片描述
注意安装python2.7后,需要创建一个软链接。(这个地方我是对python3设置的软连接,因为前面我看安装的是python3。而这个参考文章是对python2.7设置的,https://blog.csdn.net/zhuwade/article/details/125513873,但是我之前看官方的issue的时候,是有人回答新的版本optee代码是不支持python2.7的。)

cd /usr/bin/
sudo ln -sf python2.7 python
  1. 安装http服务
sudo apt-get install apache2
sudo /etc/init.d/apache2 restart
  1. 安装 repo(参考链接https://source.android.com/source/downloading?hl=zh-cn,这个里面只有部分步骤是必须的。)
    下面这些命令我是在root根目录下执行的。
    在这里插入图片描述
    这个地方的repo位置需要跟后面optee的安装位置一致,所以这个地方,最好是先创建一个optee文件夹,然后在该文件夹下执行下面的这些命令。(不过我看好多都是直接安装到了根目录,也有可能不影响后面的?)

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
执行上面的,或者下面的应该都可以
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
cd git-repo/
cp repo ~/bin/
chmod a+x ~/bin/repo 
  1. 安装 git 并配置信息(这一步官方文档没有说必须要执行,也是参考的一些链接,有些链接也没执行这个。)
sudo apt install git(正常新安装的系统没有git,需要安装)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

需要你有github账号,上面名字随便取,邮箱是你github的邮箱。

  1. 然后,就是执行安装,因为我用的是qemu v8,参考的是这个链接:https://optee.readthedocs.io/en/latest/building/devices/qemu.html#qemu-v8,具体命令如下:
    这个地方执行了qemu_v8.xml,不过最后安装成功的界面是qemu6,不太清楚是什么原因。
$ mkdir optee
$ cd optee
$ repo init -u git@github.com:OP-TEE/manifest.git -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.17.0
或者:repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml -b 3.17.0 (qemu_v8.xml如果是不同的设备,需要替换该参数。-b 3.17.0这个地方要指定版本号,不然会出问题。官方推荐是用最新的版本。这个ununtu具体哪个版本对应安装多少版本,我没找到对应关系。我看有人用ubuntu20.04对应的是optee3.8,也有用ubuntu20.04+optee3.17的【https://blog.csdn.net/zhuwade/article/details/125513873】,所以我也选择用3.17)
$ repo sync
$ cd build
$ make toolchains
$ make run

这个地方需要解释一下,qemu不需要我们单独再安装这个软件,执行这些步骤,会在optee文件夹下的build文件夹下安装qemu V8。
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml(执行这一步的时候,如果网络无法访问外围,会报错,连接超时。这一步执行时间也比较快,估计几分钟)
成功之后,会出现下面的界面(需要确保目录正确.repo是在optee目录下的。如果安装到了其他位置,再在optee下安装的话,需要先把之前的删掉,执行命令:rm -r /.repo【如果安装到根目录的话】):
在这里插入图片描述

repo sync(执行这步骤会比较慢,网速好的话十几分钟,慢的话半个小时甚至更长。这个链接里面有说网络如果不行的情况下,分步骤拉取代码。还有就是在拉取过程中设置linux常亮,不然息屏可能会导致网络断掉。https://blog.csdn.net/zhuwade/article/details/125513873)

make toolchains(这步比较快,几秒钟)

make run 执行过程图(下图,这步非常慢,第一次执行估计要一两个小时。这步如果出现[common.mk:573:optee-os-common]Error 2这种错误,大概率就是之前repo sync里面有报错,有些包没有下载成功)
在这里插入图片描述

  1. 执行完make run出现了下面的报错信息。
    在这里插入图片描述
    解决方法是参考这个链接:
    https://blog.csdn.net/tianzhilan4444/article/details/118638928

在这里插入图片描述

这个地方有个问题就是,显示的是qemu6而不是qemu8,比较奇怪。
执行下面的命令,也是弹出的qemu6

make -f qemu_v8.mk all -j8
make -f qemu_v8.mk run-only
  1. 如果出现需要登录的界面,用户名root,无密码
    在这里插入图片描述

  2. 中间在安装过程中遇到的其他问题(之前的错误尝试,试了很多方法,最后还是有问题,如果按照上面的流程应该没问题。):
    在这里插入图片描述
    执行下面的命令解决上图中的问题,不过又出现了下面图中的问题,

sudo apt-get install meson
sudo apt-get install libpixman-1-dev

在这里插入图片描述

编译(上面的make run,改成下面的就没问题了,而且时间执行更快一点)

make -f qemu_v8.mk all -j8

运行,

make -f qemu_v8.mk run-only

然后出现了,下面的错误,终端打不开。(参考这个链接里解决,https://blog.csdn.net/tianzhilan4444/article/details/118638928)
在这里插入图片描述

最后出现了两个窗口,但是主要的界面,没有进入qemu环境。(这个问题一直没解决,估计之前环境版本问题导致。问题待解决,最后重新装的系统,参考很多资料,运行成功。)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/101021.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion的使用以及各种资源

Stable Diffsuion资源目录 SD简述sd安装模型下载关键词,描述语句插件管理controlNet自己训练模型 SD简述 Stable Diffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如…

数据暴涨时代,该如何数据治理?_光点科技

随着信息技术的迅猛发展,数据已经成为现代社会的核心资源。在这个被称为"数据暴涨时代"的时代里,大量的数据源源不断地被产生和积累,但如何有效地管理、分析和利用这些数据成为了一个迫切需要解决的问题。数据治理,作为…

C#学习....

1.基础 //引用命名空间using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//项目名或者命名空间 namespace _01_MY_First_Demo {//Program类class Program{//程序的主入口或者Main函数static void Main(S…

常见的网络设备有哪些?分别有什么作用?

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…

【高危】MarkText<=0.17.1 存在DOM型XSS漏洞 (CVE-2023-2318)

漏洞描述 MarkText 是热门的开源Markdown编辑器,覆盖Windows/Linux/MacOS平台。 MarkText 0.17.1及之前版本中的 pasteCtrl 类未对用户可控的 HTML 内容进行过滤,当用户将攻击者可控的 HTML 代码粘贴至 MarkText 编辑器中时,攻击者可利用DO…

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测 uni-app中监听网络状态 下载插件 打开网络异常组件页面,点击"下载插件并导入HBuilderX"按钮,打开HBuilderX软件后,选择需要导入插件的项目&#xff…

selenium +Jmeter 的性能测试

通过Jmeter快速将已有的Selenium 代码以性能测试的方式组织起来,并使用JMeter 丰富的报表展示测试结果 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By driver …

第3步---MySQL的DDL和DML操作

第3步---MySQL的DDL和DML操作 1.DDL操作 Data Defination Language 数据定义语言。创建数据库和表的不涉及到数据的操作。 1.1DDL基本操作 1.1.1数据库相关操作 ddl:创建数据库,创建和修改表 对数据库常见的操作: 操作数据库 -- 展示数据…

C语言小练习(二)

&#x1f31e; “去努力吧&#xff0c;最坏的结果不过是大器晚成&#xff01;” Day02 &#x1f4dd; 一.选择题&#x1f4dd;二.编程题 &#x1f4dd; 一.选择题 1.&#x1f388;、以下程序段的输出结果是&#xff08; &#xff09; #include <stdio.h> int main() {…

【C语言】三子棋游戏——超细教学

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将结合之前的知识来实现 三子棋游戏。 目录&#xff1a; &#x1f31f;思路框架&#xff1a;测试游戏 &#x1f31f…

python爬虫9:实战2

python爬虫9&#xff1a;实战2 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

微服务基础概念【内含图解】

目录 拓展补充&#xff1a; 单体架构 分布式架构 面向服务的体系结构 云原生 微服务架构 什么是微服务&#xff1f; 微服务定义 拓展补充&#xff1a; 单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;最终打成一个包部署 优点&#x…

leetcode1094. 拼车(差分数组-java)

差分数组 leetcode 1094 拼车差分数组代码演示&#xff1a; 前缀和数组 leetcode 1094 拼车 难度 - 中等 原题链接 - 拼车 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整数 capacity 和一个数…

探究Java spring中jdk代理和cglib代理!

面对新鲜事物&#xff0c;我们要先了解在去探索事物的本质-默 目录 一.介绍二者代理模式 1.1.Jdk代理模式 1.2cglib代理模式 1.3二者区别 1.3.1有无接口 1.3.2灵活性 1.4对于两种代理模式的总结 1.4.1jdk代理模式 1.4.2cglib代理模式 二.两种代理模式应用场景 2.1jd…

SMS 与 WhatsApp 营销,哪个方式最适合你的业务?

SMS和 WhatsApp营销越来越受欢迎&#xff0c;因为它们为企业提供了接触目标受众的有效方式。超过 91%的客户希望收到来自企业的 SMS消息&#xff0c;使用WhatsAppAPI发送的消息的打开率高达99% &#xff0c;这证明了这两种形式的消息传递对于希望及时与客户沟通的企业来说变得重…

软考高级架构师下篇-12层次式架构设计理论与实践

目录 1. 考情分析2. 层次式体系结构概述3. 表现层框架设计4. 中间层框架设计5. 数据访问层设计6. 数据架构规划与设计7. 物联网层次架构设计8. 前文回顾1. 考情分析 根据考试大纲,层次式架构设计理论与实践知识点会涉及单选题型(约占2~5分)和案例题(25分),本小时内容偏重于方…

以创新点亮前路,戴尔科技开辟数实融合新格局

编辑&#xff1a;阿冒 设计&#xff1a;沐由 2023年&#xff0c;对于戴尔科技而言是特殊的一年&#xff0c;这是戴尔科技进入中国市场第25个年头——“巧合”的是&#xff0c;这25年也是中国产业经济发展最快&#xff0c;人们工作与生活发生变化最大的四分之一个世纪。 2023年&…

特斯拉Model 3的七年狂飙

‍ 作者 | 张祥威 编辑 | 德新 发布一周拿下32万张订单&#xff0c;之后用时五年&#xff0c;交付量突破100万辆。粗略计算&#xff0c;自2016年发布至今&#xff0c;特斯拉Model 3已交付超150万辆。 放眼新能源赛道&#xff0c;如此战绩 别无二家。 Model 3踩中纯电动车的…

SpringBoot 配置优先级

一般而言&#xff0c;SpringBoot支持配置文件进行配置&#xff0c;即在resources下的application.properties或application.yml。 关于配置优先级而言&#xff0c; application.properties>application.yml>application.yaml 另外JAVA程序程序还支持java系统配置和命令行…

Apipost数据模型功能详解

在API设计和开发过程中&#xff0c;存在许多瓶颈&#xff0c;其中一个主要问题是在遇到相似数据结构的API时会产生重复性较多的工作&#xff1a;在每个API中都编写相同的数据&#xff0c;这不仅浪费时间和精力&#xff0c;还容易出错并降低API的可维护性。 为了解决这个问题&a…