【效果走一波】
【设备平台】
- 操作系统:
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公众号获取更多精彩内容>>>>