当前位置: 首页 > news >正文

Ubuntu22.04 中搭建基于 Qemu 的内核(驱动)开发环境

1. 用源码安装 Qemu 

编译过程特别耗时,建议用使用在线安装

# 设置软件源镜像
$ sudo sed -i'.bak' 's,/[a-z]*.ubuntu.com,/mirrors.tuna.tsinghua.edu.cn,' /etc/apt/sources.list
# 安装依赖库
$ sudo apt-get install ninja-build
$ sudo apt-get install zlib1g zlib1g-dev
$ sudo apt-get install libglib2.0-dev
$ sudo apt-get install libpixman-1-dev
# 下载源码
$ wget https://download.qemu.org/qemu-7.2.0.tar.xz
$ tar xvJf qemu-7.2.0.tar.xz
$ cd qemu-7.2.0
# 配置
$ ./configure
# 编译
$ make
# 安装
$ sudo make install
# 验证
$ qemu-system-arm --version
QEMU emulator version 7.2.0
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
2. 配置交叉编译工具链

点击该链接 跳转下载交叉编译工具压缩包:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

# 建立目录存放交叉编译工具
$ sudo mkdir /usr/local/arm# 将下载的交叉编译工具压缩包移动到刚才目录并解压
$ mv gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/
$ sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz# 打开 /etc/profile,在文件最后添加环境变量
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
$sudo vi /etc/profile# 安装依赖
$ sudo apt-get install lsb-core lib32stdc++6# 验证
$ arm-linux-gnueabihf-gcc -v
Thread model: posix
gcc version 4.9.4 (Linaro GCC 4.9-2017.01)
3. 编译内核源码

内核源码下载地址是 https://www.kernel.org/pub/ ,选择下载 linux-4.4.232.tar.xz。

# 解压源码并进入源码目录
$ tar -vxf linux-4.4.232.tar.xz
$ cd linux-4.4.232# 安装依赖要不然编译会报错
$ sudo apt-get install lzop# 开始编译
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules -j2
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs -j2
4. 编译 busybox

busybox 下载地址是 https://www.kernel.org/pub/ ,选择下载 busybox-1.32.0.tar.bz2。

# 解压并进入源码目录
$ tar -jxvf busybox-1.32.0.tar.bz2
$ cd busybox-1.32.0# 配置
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig# 使用图形化配置, 进入Settings选项,找到Build Options,
# 点y键将选项 Build static binary(编译成静态)选中,保存退出。
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install
5. 制作虚拟SD卡启动镜像

这里采用 从 Qemu 模拟的SD卡启动系统

# 首先进入工作目录一次执行下列命令:
$ mkdir rootfs
$ cd rootfs/
$ cp -ra ../busybox-1.32.0/_install/* .
$ mkdir lib
$ cp -ra /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib/* ./lib# 创建必要的设备结点
$ mkdir dev
$ cd dev/
$ sudo mknod -m 666 tty5 c 4 5
$ sudo mknod -m 666 tty3 c 4 3
$ sudo mknod -m 666 tty4 c 4 4
$ sudo mknod -m 666 tty2 c 4 2
$ sudo mknod -m 666 tty1 c 4 1
$ sudo mknod -m 666 console c 5 1
$ sudo mknod -m 666 null c 1 3# 回到上一级目录并制作虚拟系统镜像文件
$ cd ..
$ dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
$ mkfs.ext3 rootfs.ext3
$ sudo mount -t ext3 rootfs.ext3 /mnt -o loop
$ sudo cp -ra rootfs/* /mnt/
$ sudo umount /mnt/ # 进入 linux 内核源码目录并启动系统(qemu 模拟的开发板),如下图所示结果
$ cd linux-4.4.232
$ qemu-system-arm -M mcimx6ul-evk -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/imx6ul-14x14-evk.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttymxc0" -sd /home/yao/Desktop/rootfs.ext3也可以是其他架构开发版,注意和内核运行的是同一硬件平台
# qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd ../rootfs.ext3

6. 参考文献

1. 10分钟用QEMU搭建嵌入式开发环境学习Linux

2. Ubuntu2204安装qemu

3. 使用qemu搭建arm嵌入式linux开发环境 

http://www.dtcms.com/a/516152.html

相关文章:

  • JMETER+ANT接口自动化测试环境搭建实战讲解
  • 告别“大力金刚指”:晶尊微触摸芯片让电梯按键一触即灵
  • HTML教程
  • 基于Qt Quick的图像标注与标注数据管理工具
  • vscode搭建python项目隔离的虚拟环境
  • 模版网站有源代码吗wordpress栏目对应模板
  • 海阳市城建设局网站网页价格表
  • 网站建设客户分析调查表wordpress打不开页面
  • JAVA算法练习题day50
  • xss-labs pass-10
  • ArcMap批量修改字段的属性值
  • 龙虎榜——20251022
  • 03-RAG Agent-集成百炼知识库(Spring AI Alibaba)
  • 基于DEIM模型的声纳图像目标检测系统设计与实现
  • 如何让新网站快速收录上海城乡建设管理局网站
  • SpringMVC—请求映射路径 get请求与Post请求发送请求参数 5种类型参数传递 json数据传递参数 日期型参数的传递 响应
  • 下一代医疗机器人的标配:六维力传感器破解远程医疗核心瓶颈
  • 内部网站建设要求广州哪家做网站最好
  • CCF-GESP 等级考试 2024年6月认证C++四级真题解析
  • 基于NLP进行文本内容预测常规流程
  • 建设银行手机网站变塘厦水霖学校
  • 音乐介绍网站怎么做抖音代运营介绍
  • 假数据神器JSONPlaceholder介绍(假数据接口、模拟数据接口、模拟测试接口、Mock data interface)
  • Alpha World:以结构化金融驱动Web3共识
  • 关于jsp网站开发的最新书籍厦门网站建设哪家便宜
  • 基于频率分集阵列的MIMO雷达联合距离角度估计——论文阅读
  • 20.3 ResNet50+多模态融合!ChatPPT3.0一键生成专业级PPT全攻略
  • 甘肃省建设工程安全质量监督局网站hostgator wordpress主机
  • Fiddler使用教程,全面掌握Fiddler抓包工具的配置方法、代理设置与调试技巧(HTTPHTTPS全解析)
  • 金泉网普通会员可以建设网站吗上海网站编辑招聘