【qemu】qemu运行linux内核总结

【效果走一波】
请添加图片描述


【设备平台】

  • 操作系统:ubuntu
  • 系统版本:lts 18.4
  • 架构:x86_64

一、qemu的安装

在ubuntu终端下输入以下命令进行安装:

sudo apt-get install qemu

安装完成后,键入qemu后按三次tab键将弹出命令提示,如下图所示:

在这里插入图片描述

添加--version可查看对应的命令的版本的信息,如下图所示:

在这里插入图片描述

二、编译构建Linux内核

​ 这篇文章记录时使用的Linux内核版本4.19.4

Step1:使用

make menuconfig

编译出linux内核图形配置界面:
在这里插入图片描述

Step2:配置linux内核

然后根据小生实际的运行情况,裁剪配置如下:

  • 在【General setup】配置下开启内核支持initramfs/initrd。
  • 在【Device Drivers > Block devices】配置下开启“Ram block device support”,并配置Ram Disk数量和默认的RAM Disk大小。

Step3:编译构建linux内核

使用ake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j12进行编译。(注:这里笔者使用交叉编译器为:gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf)

完成后,生成了一个大约3.1M大小的zImage内核镜像文件。

三、编译构建根文件系统

​ (3-1)编译根文件系统

​ 这里小生使用busybox构建根文件系统。可参考该篇文章《https://blog.csdn.net/iriczhao/article/details/121589382

​ 具体步骤与linux内核构建类似,这里笔者将busybox进行静态构建,省去一些添加库文件的麻烦。还需要玩完善根文件系统,完成后,目录如下所示:

在这里插入图片描述

​ (3-2)制作root.img镜像

​ 由(3-1)可见,大致的根文件系统目录情况,然后在rootfs目录下运行终端(这一步格外注意,一定要切换到rootfs目录下),执行以下命令:

find . | cpio -o --format=newc > ../rootfs.img

​ 命令的意思就是:将该目录下的文件打包成rootfs.img文件,并将该文件放置于上一级目录!!!

​ 完成后将如下图所示:
在这里插入图片描述

三、使用qemu运行linux内核

当linux内核zImage和根文件系统rootfs.img准备好后,就可以使用以下命令运行linux:

qemu-system-arm -M vexpress-a9 -m 512m -kernel zImage -dtb vexpress-v2p-ca9.dtb -append "root=/dev/ram rdinit=sbin/init console=ttyAMA0" -nographic -initrd rootfs.img
  • M:用于指定机器型号。
  • kernel:用于执行内核镜像。
  • append:用于指定一些附加选项,用于传递给linux内核。这里设置为:root=/dev/ram rdinit=sbin/init console=ttyAMA0
  • dtb:指定设备树文件。这里设置为:vexpress-v2p-ca9.dtb
  • -nographic:设置qemu无图形显示。这样qemu将在当前shell下输出linux运行信息。
  • -initrd:设置linux内核的initrd参数,这里指定构建出的根文件系统镜像。

运行效果
在这里插入图片描述


搜索关注【嵌入式小生】wx公众号获取更多精彩内容>>>>
请添加图片描述

猜你喜欢

转载自blog.csdn.net/iriczhao/article/details/123752209#comments_28387295