【qemu】以sd方式添加根文件系统运行linux内核

【qemu】以sd方式添加根文件系统运行linux内核

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


一、开篇

​ 在使用qemu运行linux内核时,在linux内核运行最后,挂载根文件系统是个关键点,如果以initramfs方式挂载文件系统,因其存在于RAM中,系统重新启动后,对文件系统中文件数据的读写都会恢复到最初状态。故本文描述另一种方法:以sd方式添加根文件系统

​ 本篇文章涉及几个重要的知识点:

  • 如何使用linux内核的回环设备创建文件系统镜像
  • qemu下以sd方式启动挂在于宿主机上的文件系统镜像
二、使用linux内核的回环设备创建文件系统镜像

​ linux内核的回环设备:可以让一个普通文件当作块设备使用。总而言之,就是可以先在一个普通文件中创建一个文件系统镜像,然后使用linux的回环设备来挂载这个文件,就如同挂载一个块设备一样。下面将是具体的步骤:

(2-1)创建一个文件
sudo dd if=/dev/zero of=./rootfs.ext3 bs=1M count=32

​ 该条命令会创建一个32M大小,内容全部填充为0的文件。

【特别注意】dd命令功能强大,使用时如果没有限制范围(count=)或者指定的范围错误,那么他会在硬盘驱动器中填满数据并且可能造成宿主机系统崩溃。所以使用dd命令时需要:

格外注意!!格外注意!!格外注意!!

(2-2)创建一个ext3的文件系统镜像
sudo /sbin/mkfs.ext3 ./rootfs.ext3

mkfd.ext3命令与dd命令一样也会摧毁我们的系统,使用时也需格外注意!!!。

(2-3)挂载ext3文件系统
mkdir tmpfs
mount -t ext3 rootfs.ext3 tmpfs/ -o loop

​ 以上命令的意思是创建一个tmpfs目录,然后将rootfs.exts挂载到名为 tmpfs/的挂载点上(挂载点的名称不重要,可以将它挂载到任何位置,只要这个挂载点存在)。

(2-4)填充文件系统内容

​ 因为rootfs.ext3文件系统硬镜像是要作为sd方式启动linux内核的,所以,我们需要用真正的文件系统目录填充rootfs.ext3文件系统。填充方法是:将使用busybox生成的文件系统下的内容全部复制到tmpfs目录下。如下命令:

cp -r rootfs/*  tmpfs/

​ 然后使用sudo umount tmpfs取消挂载。


​ 使用这种方法时,文件系统的大小在创建的时候就确定了而且不能改变。所以说,如果想要修改文件系统大小,就需要重新创建回环设备文件并重新分配该文件大小。

三、qemu下以sd方式启动于宿主机上的文件系统镜像

在shell命令行终端输入以下命令:

sudo qemu-system-arm -M vexpress-a9 -m 512m -kernel zImage -dtb vexpress-v2p-ca9.dtb -append "root=/dev/mmcblk0 rw rootfstype=ext3 rdinit=sbin/init console=ttyAMA0" -nographic -sd rootfs.ext3

【效果】
在这里插入图片描述


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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值