之前我有篇讲过用QEMU模拟ARM64开发环境之busybox构建文件系统的开发环境具体可以看下这篇。
https://mp.weixin.qq.com/s?__biz=MzUyNDUyMDQyNQ==&mid=2247483891&idx=1&sn=e5e858476ec6b821f7fec458e78ba4f0&chksm=fa2d5f75cd5ad663b9d370e227f2c70d6a044fa69e073d0587609fd302ee77695779f00cd8fb&token=2141339249&lang=zh_CN#rd
本篇讲下从0开始使用QEMU模拟ARM64开发环境之buildroot搭建开发环境。为啥还要介绍buildroot构建根文件系统镜像?因为相对于busybox制作工具 buildroot 避免繁杂的移植工作,通过menuconfig配置我们需要的功能,不需要的功能去掉,再执行make指令编译,buildroot就会自动从指定的服务器上下载u-boot,kernel,rootfs打包格式的,应用包程序管理的源码包,自动编译,自动搭建成我们所需要的嵌入式根文件系统。
环境准备
PC系统:Windows10
虚拟机:VMware-17
虚拟机系统:Ubuntu-18.04
模拟的64位cpu:cortex-a53
搭建环境时使用的源码版本
qemu-8.2.0
linux-5.10.209 (Linux Kernel)
buildroot-2023.11.1
AARCH64的工具链安装准备:
sudo apt-get install gcc-aarch64-linux-gnu -y
下载编译安装QEMU
下载QEMU源码
去qemu官网上下载最新的8.2.0源码包,并解压出来
wget https://download.qemu.org/qemu-8.2.0.tar.bz2
tar -xjf qemu-8.2.0.tar.bz2
配置QEMU
配置qemu源码前要要求本地环境python版本要大于3.8和glib2.0环境依赖。
检查下自己主机的python版本,如果低于python3.8需要去python官网下载源码自行安装https://www.python.org/downloads/source/
cd Python-3.8.17/
./configure --prefix=/usr/local
make -j8
make install
rm /usr/bin/python
sudo ln -s /usr/local/bin/python3.8 /usr/bin/
然后安装各种环境
sudo apt-get install python3-venv
sudo apt-get install python3-pip
sudo apt-get update
pip3 install --upgrade pip
pip3 install sphinx
pip3 install sphinx_rtd_theme
pip3 install Ninja
sudo apt-get install libglib2.0-0 libglib2.0-dev ninja-build libpixman-1-dev
安装完配置前的环境依赖后,进入到qemu目录下,配置下qemu源码。本篇模拟ARM64架构的开发环境,接下来创建编译目录,然后进行配置
~/qemu-8.2.0$ mkdir build/
~/qemu-8.2.0$ cd build/
~/qemu-8.2.0/build/$ ../configure --target-list=aarch64-softmmu --audio-drv-list=
编译安装qemu
~/qemu-8.2.0/build/$ make -j8 && make install
构建buildroot系统镜像
去buildroot官网下载最新源码
解压buildroot源码
tar -zxvf buildroot-2023.11.1.tar.gz
进入buildroot目录下,进行配置kernel
cd buildroot-2023.11.1 && make qemu_aarch64_virt_defconfig
buildroot配置
编译buildroot前要先配置下
make menuconfig
执行后弹出下面的菜单
具体相关配置一般是关注以下选项
Target option --->
Target Architecture Variant (cortex-A53)
Toolchain --->
Kernel Headers (Linux 5.10.x kernel headers) --->
System configuration --->
(root) Root password
kernel --->
(5.10.209)kernel version
Filesystem images —>
[*] ext2/3/4 root filesystem
ext2/3/4 variant (ext4) --->
buildroot编译
编译整个uboot,kernel,buildroot镜像
make -j8
编完之后进入到output/images目录下就能得到Image,roots.ext4,start-qemu.sh这三个文件
我们要修改下start-qemu.sh,修改内容如下行显示
28 exec qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel Image -append "rootwait root=/dev/vda console=ttysole=ttyAMA0" -drive file=rootfs.ext4
启动qemu
./start-qemu.sh
login输入root, password输入root即可登录console
退出当前运行的 qemu,使用组合键,CTRL + a,松开后然后再按 x 键
作者潘小帅, 是一名Linux底层爱好者,平时写写技术原创文章,徒步,旅游,看电影的爱好,喜欢我的文章可以点赞收藏+关注,感谢你的支持,微信公众号【Linux随笔录】