QEMU
是一种拥有系统虚拟能力的模拟器,有自己的虚拟CPU、芯片组、虚拟内存以及各种虚拟外部设备,能够为虚拟机中运行的操作系统和应用软件呈现出与物理计算机完全一致的硬件视图。QEMU
能够模拟x86、ARM、MIPS、PPC等多个平台。
目前网上很多关于QEMU
的环境教程都比较旧,很多都还在使用32位CPU的qemu开发板,然后现在普遍的开发板都已经是 ARMV8 架构,使用64位CPU了,这会直接导致编译工具链无法通用,比较麻烦。
本教程使用全套目前最新版本:Ubuntu24.04 + ARM v8 QEMU + Linux 6.12
,可供后续较长时间的使用。 本SDK还搭配了环境搭建脚本以及启动脚本,支持一键启动,使用方便。
1. VMvare安装
由于大多数人本地PC系统为Windows系统,所以我们需要准备 Linux 开发环境。
我们使用 VMware Player 17 作为虚拟机平台,VM Player是“一款供个人免费使用的桌面虚拟化应用”。相比于完整版VM Workstation,最重要的优点自然就是官方认可的个人免费;当然缺点就是功能少。但是作为学习使用,VM Player的功能是足够的。
1.1 官网下载(不推荐)
可以选择官方下载的方式(比较麻烦):由于VMware已经被博通收购了,现在原先的官网已经下载不了,只能进博通官网下载:
https://support.broadcom.com/
需要注册账号并且网络不好的时候容易下载失败,具体解决方法可以参考下面这个帖子:
https://blog.youkuaiyun.com/axing194/article/details/139172933
1.2 百度云下载
推荐直接使用安装包安装:我已经将虚拟机安装包上传到百度云上,下载后直接解压安装即可。
链接:
https://pan.baidu.com/s/1pDSFDEcpl5DNizzqJTPt_Q?pwd=2p5m 提取码: 2p5m**
下载好安装包后按照提示安装即可。
2. Ubuntu24.04
Ubuntu系统是一种基于Linux的开源操作系统,我们本系列采用最新的Ubuntu 24.04版本作为开发环境。
2.1 镜像下载
这里推荐大家去 Ubuntu
中文官网下载镜像,下载速度快。
并且由于Ubuntu
中使用apt
安装工具时由于网络原因下载慢,所以需要手动将apt
下载源替换成清华源或阿里源等。
但是中文版 Ubuntu
镜像中apt下载的源已经替换成了清华源,不需要再手动更换下载源了,比较方便。
下载地址:https://cn.ubuntu.com/download/desktop
2.2 Ubuntu安装
1. 创建新虚拟机
打开VMware Player 17,点击 “创建新虚拟机”,选择下载好的镜像
2. 在硬件配置方面需要注意的几点
-
硬盘容量建议大一点,因为系统本身以及后期内核文件,镜像,工具等还是十分占空间的,建议保留100GB以上
-
内存和CPU数量主要会影响编译速度,根据自己硬件适当配置
按照提示完成安装
安装过程没有特别需要注意的,使用默认配置点击“next”即可。
3. corechip_qemu_sdk 快速开始
corechip_qemu_sdk
是我们提供的软件开发套件,目的是让内核开发者或初学者可以减少在环境搭建上花费的精力,可以快速使用最新版QEMU
硬件和内核版本。
本套件包含了Linux6.12
源码,Buildroot-2025.02
源码,一键配置环境,QEMU
启动脚本,并配置编译好的文件系统和内核,可一键启动QEMU
。
3.1 获取SDK
提供两种获取SDK的方法
gitee获取
git clone https://gitee.com/core-chip_0/corechip_qemu_sdk.git
百度云下载:
链接: https://pan.baidu.com/s/1BG2MzmMS5WVjKwbcag5-uw?pwd=75rb 提取码: 75rb --来自百度网盘超级会员v7的分享
3.2 SDK介绍
下载完成后可以看到主目录中,有以下文件和目录:
1. envsetup.sh:设置环境变量,检查并下载必要的工具
2. source:内核源码压缩包,编译工具链源码压缩包,buildroot源码压缩包,
3. out:产出物文件夹,包括内核镜像,文件系统,设备树等
4. start.sh:qemu启动脚本
5. share:qemu与PC的共享目录,用来传文件
6. arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu:编译工具链
7. buildroot-2025.02:buildroot源码
8. linux-6.12.21:linux内核源码
3.3 快速使用
out
目录下已经有编译好的Kernel镜像 + dtb + rootfs,可一键快速启动QEMU
source envsetup.sh
./start.sh
4. 源码编译
SDK
中提供了默认的内核镜像、根文件系统、设备树。根据自身需求参考下面的教程进行定制修改编译,不需要修改的可以直接使用SDK
提供的即可。
4.1 内核源码编译
本SDK
中内核使用6.12版本,out
目录中的Image
是直接源码编译生成的,并没有对内核进行裁剪,有需要的同学可以根据自身需求进行配置。
cd corechip_qemu_sdk
source envsetup.sh
cd linux-6.12.28
make menuconfig
make -j$(nproc)
生成的镜像在linux-6.12.28/arch/arm64/boot/Image
4.2 根文件系统编译
本SDK使用buildroot-2025.02
,来编译rootfs
。关于 buildroot
在这里不做过多介绍,感兴趣的同学可以去搜索相关资料。 使用Buildroot
编译rootfs
的好处是相对于busybox
扩展性强,可以配置各种工具,方便后续内核开发使用。缺点就是编译时间较久,主要也是编译过程中需要下载各种工具包,国内访问国外的下载源会不稳定。本sdk也提供了编译所需的软件包可省去下载过程。 SDK中已经添加了corechip_qemu_sdk_defconfig
可直接使用该配置编译buildroot
,也可基于该配置根据个人需求修改。
编译之前可以先将百度网盘中dl.tar.gz下载解压放到buildroot根文件目录下
编译buildroot
的过程中,会先去dl
目录搜索,如果有则不会再去下载,由于国内访问国外网络不稳定,所以会出现下载慢或下载失败导致编译失败的情况,使用这个文件包则可大大加快编译速度。
cd corechip_qemu_sdk/source
tar -zxvf dl.tar.gz
mv dl corechip_qemu_sdk/buildroot-2025.02
cd corechip_qemu_sdk/buildroot-2025.02
make corechip_qemu_sdk_defconfig
make -j$(nproc)
生成的文件在buildroot-2025.02/output/rootfs.cpio
4.3 设备树编译
QEMU
提供了对内置开发板的生成dtb的工具dumpdtb
,sdk提供了脚本可生成对应的dtb。
./dump_dts.sh
会生成cc_qemu_sdk.dts
,可以根据个人需求增加设备树节点,然后再重新编译dtb。
dtc -I dts -O dtb -o cc_qemu_sdk.dtb cc_qemu_sdk.dts
将生成的dtb移动至out目录下,在启动start.sh
脚本即可。(如果dtb改名,start脚本也要做对应修改)
5. 总结
本文主要介绍如何搭建最新的QEMU
开发环境,帮助内核开发者以及学习者快速上手,减少在搭建环境上花费精力。