文章目录
UBUNTU初始化
参考
一、前期必备环境介绍(网络问题导致安装失败(repo拉取源码)的问题,对于这个解决方案 参考的两个博主都有讲解,我就不再进行解释了)
Ubuntu 20.04.5 LTS 安装在VM里面
这里注意内存设置50GB 处理器4核 为了保证后期编译以及安装大小。
1.安装依赖项目
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-de
这里建议安装 “slirp” 的依赖项。
因为后期编译的时候可能会报 缺少了名为 “slirp” 的依赖项。从而导致qemu编译失败
sudo apt-get install libnfs-dev libseccomp-dev libxkbcommon-dev slirp
sudo apt-get install gnome-terminal
上面这个也需要安装
2.安装开发工具
在home文件目录下执行下面代码
网络不好的情况下安装repo(清华源)
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
$ chmod a+x ~/bin/repo
网络好的情况下安装repo(官方安装)
$mkdir ~/bin
$PATH=~/bin:$PATH
$curl https://storage.googleapis.com/git-repo-downloads/repo > $~/bin/repo
$chmod a+x ~/bin/repo
二 、拉取OP-TEE
创建文件下 同样在home路径
xx@ubuntu:~$ mkdir optee
xx@ubuntu:~$ cd optee
以下根据实际情况拉取符合自己网络的
1.repo拉取代码(清华镜像)
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.22.0
repo拉取代码(官方)
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml -b 3.22.0
这一步可能会拉取失败,如果失败了我的做法是删除optee文件夹重新创建重新拉取
拉取成功后可能会让你填写邮箱
git config --global user.name "yourname"
git config --global user.email "youremail"
填写即可
2.拉取代码
repo sync -j4
这里的j4 指的是4线程并行,之前处理器设置4线程也是这个原因
这里拉取的过程中会由于网络状况出现错误,我的是一出现错误就回到创建文件夹那一步重新创建直到拉取成功为止。这里也是最头痛的 过了这一步就好了,如果没有解决可以参考上方的另外两篇文章
repo sync has finished successfully
最后跑完会出现这个,我建议跑完之后打一个用VM断点 防止后续步骤出错
3.拉取toolchains(拉取成功记得打用VM断点,后续编译出错恢复到这一步)
跑完上面那一步。创建的optee文件会出现这个文件夹,输入以下指令,如果失败之后重新执行make ,直到拉取成功为止,下面的make就不要用-j多线程防止出错
$ cd build
$ make -f toolchain.mk toolchains
文件夹里面的东西
三、编译(编译成功用VM打断点,防止后续出错恢复)
现在可以开始编译了,进入刚刚的build文件夹,大约两三个小时耐心等待(编译过程中要下载东西不能断网)
注意:make -f qemu_v8.mk all这个代码不能改多线程 我之前改了就执行出错了,所以就用这个代码
cd build
make -f qemu_v8.mk all
可能出错(这个错误是因为没安装slirp 防止这个所以前面一定安装)
n-time dependency libnfs found: NO (tried pkgconfig)
Run-time dependency appleframeworks found: NO (tried framework)
Run-time dependency appleframeworks found: NO (tried framework)
Run-time dependency libseccomp found: NO (tried pkgconfig)
Has header "cap-ng.h" : NO
Run-time dependency xkbcommon found: NO (tried pkgconfig)
Run-time dependency slirp found: NO (tried pkgconfig)
../meson.build:679:2: ERROR: Dependency "slirp" not found, tried pkgconfig
ERROR: meson setup failed
make: *** [qemu_v8.mk:247: /home///build/../qemu/build/config-host.mak] Error 1
四、启动qemu(切换root权限)
$ cd build //进去build目录(已经在了可以不用进去)
$ make -f qemu_v8.mk run-only //启动qemu v8并运行OP-TEE
问题1.
make -f qemu_v8.mk run-only运行命令没有启动窗口怎么办
重新安装 GNOME 终端: 如果问题仍然存在,尝试重新安装 GNOME 终端。
sudo apt-get install gnome-terminal
问题2.
root运行 make -f qemu_v8.mk run-only 进去了没有窗口出现下面代码
# Error constructing proxy for :1.117:/org/gnome/Terminal/Factory0: The connection is closed
# Failed to use specified server: The connection is closed
# Falling back to default server.
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: The connection is closed
# Error constructing proxy for :1.117:/org/gnome/Terminal/Factory0: The connection is closed
# Failed to use specified server: The connection is closed
# Falling back to default server.
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: The connection is closed
解决:
sudo gnome-terminal
会弹出一个新窗口,在新窗口执行
make -f qemu_v8.mk run-only
问题三
启动quem出现`
changing dir to build for make ""...
make[1]: Entering directory '/home/qemu/build'
config-host.mak is out-of-date, running configure
bash: line 3: ./config.status: No such file or directory
make[1]: *** No rule to make target 'config-host.mak', needed by 'Makefile.prereqs'. Stop.
make[1]: Leaving directory '/home//qemu/build'
make: *** [GNUmakefile:11: all] Error 2
The link "qemu-system-aarch64" is broken.
This link cannot be used because its target "../qemu-system-aarch64" doesnt exist.
解决
cd /home/xx/optee/build/../qemu ##进入qemu目录 清除重新编译 quem 进去的是刚刚安装optee build里面
make clean
make
五、执行成功(三个窗口)
会弹出三个窗口在
(qemu) c 输入c启动 另外两个窗口会打印东西
在NORMAL WORLD窗口输入 root即可
在输入 xtest
进行测试
测试成功到此完结 如果有一些新问题欢迎大家补充一起讨论