Ubuntu22.04使用qemu运行armv8的TFA、optee和linux全过程

一、安装环境

sudo apt install adb acpica-tools autoconf bc build-essential ccache curl device-tree-compiler e2tools expect flex ftp-upload gdisk libattr1-dev libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libgmp3-dev libhidapi-dev libmpc-dev libncurses5-dev libpixman-1-dev libslirp-dev libssl-dev libtool libusb-1.0-0-dev make mtools netcat ninja-build python3-cryptography python3-pip python3-pyelftools python3-serial python-is-python3 rsync swig unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev git repo

二、设置

在这里插入图片描述

永久设置,在/etc/environment文件中添加下面的参数:

http_proxy=http://127.0.0.1:7890/
https_proxy=http://127.0.0.1:7890/
ftp_proxy=http://127.0.0.1:7890/
HTTP_PROXY=http://127.0.0.1:7890/
HTTPS_PROXY=http://127.0.0.1:7890/
FTP_PROXY=http://127.0.0.1:7890/

临时设置,在控制台中输入下面的命令:

export http_proxy=http://127.0.0.1:7890/
export https_proxy=http://127.0.0.1:7890/
export ftp_proxy=http://127.0.0.1:7890/
export HTTP_PROXY=http://127.0.0.1:7890/
export HTTPS_PROXY=http://127.0.0.1:7890/
export FTP_PROXY=http://127.0.0.1:7890/

三、下载编译运行

  1. 下载源代码
mkdir optee-3.21
cd optee-3.21
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml -b 3.21.0
repo sync 

如果下载不了,可以

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.21.0
  1. 编译(实际是下载)工具链
cd build
make toolchains
  1. 编译
make all
  1. 运行
    第一次运行需要运行下面的命令:
make run

第二次以及以后运行:

make run-only
  1. 然后会弹出两个控制台,这两个控制台一个是normal world也就是uboot和linux的,另一个是secure world,也就是optee的。两个控制台会卡住,我们切回运行的控制台窗口也就是build这个路劲的控制台,输入c,然后这两个新控制台会继续运行。我们可以同时观察这两个系统的运行。

完毕。

四、错误处理

中途我遇到图下的这两个报错,有时候是在make all的时候报第一个图片的错误,有时候是make run的时候报第二个图片的错误:
在这里插入图片描述

在这里插入图片描述

他们的原因都是qemu没有编译成功,我们需要手动进入qemu目录编译:

# 配置
./configure --target-list=aarch64-softmmu --enable-trace-backends=simple,log --disable-werror
# 编译
make -j8
# 最后在build目录下会生成可执行文件:qemu-system-aarch64
sudo apt install \
  adb \
  acpica-tools \
  autoconf \
  automake \
  bc \
  bison \
  build-essential \
  ccache \
  cscope \
  curl \
  device-tree-compiler \
  e2tools \
  expect \
  fastboot \
  flex \
  ftp-upload \
  gdisk \
  libattr1-dev \
  libcap-dev \
  libfdt-dev \
  libftdi-dev \
  libglib2.0-dev \
  libgmp3-dev \
  libhidapi-dev \
  libmpc-dev \
  libncurses5-dev \
  libpixman-1-dev \
  libslirp-dev \
  libssl-dev \
  libtool \
  libusb-1.0-0-dev \
  make \
  mtools \
  netcat \
  ninja-build \
  python3-cryptography \
  python3-pip \
  python3-pyelftools \
  python3-serial \
  python-is-python3 \
  rsync \
  swig \
  unzip \
  uuid-dev \
  xdg-utils \
  xterm \
  xz-utils \
  zlib1g-dev
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小坚学Linux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值