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

news2024/12/26 2:13:14

参考文章:

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.coloradmin.cn/o/899076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wsl2 安装cuda

1 设置为清华源 首先登录wsl 直接命令 wsl 就行 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /e…

AVL树的讲解

算法拾遗三十八AVL树 AVL树AVL树平衡性AVL树加入节点AVL删除节点AVL树代码 AVL树 AVL树具有最严苛的平衡性,(增、删、改、查)时间复杂度为O(logN),AVL树任何一个节点,左树的高度和右树的高度差…

为什么美元美债没有出现死亡螺旋?

号外:刘教链最新文章,欢迎点击阅读: 公众号「刘教链内参」8.18发表:《内参:SEC批准ETF将推高大饼至15-18w$ ?》。 公众号「刘教链Pro」8.18发表:《大饼插爆两万五》。 * * * * * * 如果我们把美…

Linux系统基础服务启动的方法

服务,其实就是运行在操作系统后台的一个或者多个应用程序,为计算机系统或用户提供某项特定的服务。Linux系统运行的绝大多数服务都是需要安装才有的,例如FTP服务、httpd服务、MySQL、redis、Zookeeper、rabbitmq、vsftpd等等,那么…

面试题 ①

1、请讲一下常见的SQL优化方法(至少10条) 1.尽量避免使用子查询 虽然在 mysql5.6 版本之后对 select 的子查询用 join关联方式 做了优化,但是update/delete子查询依然先查外表再查内表,当外表过大时查询速度会很慢;因此…

浙大数据结构第八周之08-图7 公路村村通

题目详情: 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M&#xff08…

Linux 应急响应命令总结【持续更新】

系统基本信息 CPU 信息 CPU 信息: lscpu操作系统信息 操作系统信息: uname -a操作系统信息: cat /proc/version模块信息 模块信息: lsmod账户信息 系统所有账户 系统所有账户: cat /etc/passwd超级权限账户…

【leetcode 力扣刷题】快乐数/可被k整除的最小整数(可能存在无限循环的技巧题)

可能存在无限循环的技巧题 202. 快乐数数学分析 1015. 可被k整除的最小整数数学分析 202. 快乐数 题目链接:202. 快乐数 题目内容: 理解题意,快乐数就是重复每位数的平方之和得到的新数的过程,最终这个数能变成1。变成1以后&…

STM32 串口复习

按数据通信方式分类: 串行通信:数据逐位按顺序依次传输。传输速率较低,抗干扰能力较强,通信距离较长,I/O资源占用较少,成本较低。并行通信:数据各位通过多条线同时传输。 按数据传输方向分类&…

04_Redis与mysql数据双写一致性案例

04——redis与mysql数据双写一致性 一、canal 是什么 canal[ka’nel,中文翻译为水道/管道/沟渠/运河,主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发; 历史背景是早期阿里巴巴因为杭州和…

你知道CSGO转区内购吗?了解下内购系统!

哈喽,大家好,我是童话姐姐,这两天群里很多人都在问关于内购的事情,今天就专门给大家讲一下关于内购的一些情况吧。 1、首先什么是转区内购? 顾名思义,内购就是在游戏内部的一个购买行为,csgo内购自然就是…

MATLAB打开excel读取写入操作例程

本文使用素材含代码测试用例等 MATLAB读写excel文件历程含,内含有测试代码资源-CSDN文库 打开文件 使用uigetfile函数过滤非xlsx文件,找到需要读取的文件,首先判断文件是否存在,如果文件不存在,程序直接返回&#x…

all in one之安装ubuntu-server系统(第二章)

pve安装ubuntu-server系统 安装ubuntu-server系统 参考链接 在pve环境下安装ubuntu服务器版本,安装过程如下: ubuntu官方链接(不推荐,下载慢) 中科大开源库 阿里开源镜像库 兰州大学开源镜像站 … 自行选择进行下载&…

韦东山-电子量产工具项目:页面系统

代码结构 所有代码都已通过测试跑通,其中代码结构如下: 一、include文件夹 1.1 common.h #ifndef _COMMON_H #define _COMMON_Htypedef struct Region {int iLeftUpX; //区域左上方的坐标int iLeftUpY; //区域左下方的坐标int iWidth; //区域宽度…

Nodejs沙箱逃逸--总结

一、沙箱逃逸概念 JavaScript和Nodejs之间有什么区别:JavaScript用在浏览器前端,后来将Chrome中的v8引擎单独拿出来为JavaScript单独开发了一个运行环境,因此JavaScript也可以作为一门后端语言,写在后端(服务端&#…

Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)

文章目录 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)服务端客户端 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四) 服务端 服务端结构如下: UserModel using System; using System.Collections.Generic; usin…

houdini volume trail volume几种模式

1vdb from polygon 先 attribwrangle v 后vdbfrompolygon v 2 volume 3

在 Transformer 之前生成文本 Text generation before transformers

1. 在 Transformer 之前生成文本 重要的是要注意,生成算法并不是新的。先前的语言模型使用了一个叫做循环神经网络或RNN的架构。尽管RNN在其时代很强大,但由于需要大量的计算和内存来很好 地执行生成任务,所以它们的能力受到了限制。让我们看…

好用的消售管理系统十大排行榜

销售管理是企业经营至关重要的一环。市场上有很多销售管理系统,对小企业来说,购买和实施CRM系统昂贵且复杂。这里有一份好用的10大免费销售管理系统榜单,让您既可以节省成本,又享受到高效的销售管理。 Zoho CRM: Zoh…

Tesla Model S 3对比分析拆解图

文章来源:网络 需要特斯拉电驱样件的请:shbinzer (拆车邦) 5 款电机,其中扁线永磁同步电机最大功率从 202kW 提升至 220kW,最大扭矩从 404Nm提升至 440Nm。 Model S/X→Model 3/Y:双电机版本…