QEMU入门1:ubuntu22.04搭建QEMU运行环境

文章目录

前言

我的环境经常被人搞坏掉😡,所以写篇文档记录下环境搭建的流程

I 系统配置

配置网络

ubuntu系统刚装好时可能没有ifconfig和nmtui工具,这里我们使用ip命令临时修改,有了网络之后喜欢什么工具自己装就是了

bash 复制代码
ip link show
# 如果网口状态是DOWN那么需要up
ip link set enp4s1 up

(很显然,这个enp4s1应该填你自己的网口名)

配ip

ip addr add 192.168.3.123/24 dev enp4s1

(如果是用vmware装的虚拟机, 他会自动分配ip不需要处理这步)

配网关(有需要才配)

ip route del default

ip route add default via 192.168.0.1

配DNS

/etc/resolv.conf

编辑内容 name server 192.168.54.44

配置系统服务

配sshd

PermitRootLogin yes

改镜像源

https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

(不是改成这个,这是清华的帮助网页,进入这个网址,上面会告诉你怎么改)

II 搭建qemu8.1.5运行环境

安装通用编译工具

apt install gcc-9

apt install g++-9

apt install make

apt install cmake

安装python

apt install python3-venv

apt install python3-pip

下载qemu

qemu.org

太低版本的qemu不支持很多cpu

qemu-8.1.5就很可以

qemu-9.1.0新增了对aspeed公司的ast2700板卡的支持(目前似乎还不能用)

初次编译qemu

cd qemu-8.1.5;mkdir build;.../configure --target-list-aarch64-softmmu

(这个--target-list参数,意思是只编译一个aarch64的,我的虚拟机需要编译13分钟,如果全量编译估计要40分钟;如果你对自己电脑的cpu很自信,比如13/14代i7,就没必要加)

(全量编译需要编9000个文件)

失败

报错原因有很多,下面逐一解决

安装qemu编译依赖

pip下载超时解决

--default-timeout=100 手动配超时时间

pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple 更换镜像源

git下载不了解决

给git配个代理

bash 复制代码
git config --global http.proxy http://proxy.xxx.com:8080
git config --global https.proxy http://proxy.xxx.com:8080

安装qemu需要的python包

bash 复制代码
pip install Sphinx
pip install Ninja
pip install meson
pip install spinx-rtd-theme

安装qemu需要的apt包

bash 复制代码
apt install pkg-config
apt install libglib2.0-dev (这玩意巨坑, 报错说依赖glib-2.0, 但包名叫glib2.0)
apt install libpixman-1-dev
apt install flex
apt install bison
apt install libfdt-dev

III 搭建aarch64内核编译环境

安装交叉编译工具

这里我要编译的是linux6.x版本的内核,所以我装9.x版本的gcc没问题;如果是4.x的内核,可能需要版本低一些的编译器,ubuntu22.04可能不支持,如果真的不行,我的建议是换ubuntu16或18

bash 复制代码
apt install gcc-9-aarch64-linux-gnu
apt install g++-9-aarch64-linux-gnu

(如果装完没软链接, 需要手动建, 不然指定交叉编译器的时候不好搞)

bash 复制代码
cd /usr/bin
ln -s aarch64-linux-gnu-cpp-9 /usr/bin/aarch64-linux-gnu-cpp
ln -s aarch64-linux-gnu-g++-9 /usr/bin/aarch64-linux-gnu-g++
ln -s aarch64-linux-gnu-gcc-9 /usr/bin/aarch64-linux-gnu-gcc
ln -s aarch64-linux-gnu-gcc-ar-9 /usr/bin/aarch64-linux-gnu-gcc-ar
ln -s aarch64-linux-gnu-gcc-nm-9 /usr/bin/aarch64-linux-gnu-gcc-nm
ln -s aarch64-linux-gnu-gcc-ranlib-9 /usr/bin/aarch64-linux-gnu-gcc-ranlib
ln -s aarch64-linux-gnu-gcc-gcov-9 /usr/bin/aarch64-linux-gnu-gcc-gcov
ln -s aarch64-linux-gnu-gcc-gcov-dump-9 /usr/bin/aarch64-linux-gnu-gcc-gcov-dump
ln -s aarch64-linux-gnu-gcc-gcov-tool-9 /usr/bin/aarch64-linux-gnu-gcc-gcov-tool

/etc/profile下添加如下内容

bash 复制代码
# AARCH64 CROSS_COMPILE
export CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-
export ARCH=arm64

安装gdb-multiarch

apt install gdb-multiarch

编译内核报错

apt install bc

make menuconfig报错:

apt install libncurses5-dev

opensslv.h missing报错:

apt install libssl-dev

安装dtc工具

实际上内核里面就有,但既然apt能装,那我也懒得给在PATH下建软链接了

apt install device-tree-compiler

下一篇

QEMU入门2:使用qemu简单的运行一个aarch64 linux内核

相关推荐
tokepson7 小时前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj9 小时前
工作的环境
linux·运维·服务器
极客先躯9 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde10 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue10 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI11 小时前
Linux 操作系统简介
linux
南烟斋..11 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员11 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin14 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm14 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring