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

【效果走一波】

qemu导入ova qemu文件系统_回环设备


文章目录

  • 【qemu】以sd方式添加根文件系统运行linux内核
  • 一、开篇
  • 二、使用linux内核的回环设备创建文件系统镜像
  • (2-1)创建一个文件
  • (2-2)创建一个ext3的文件系统镜像
  • (2-3)挂载ext3文件系统
  • (2-4)填充文件系统内容
  • 三、qemu下以sd方式启动于宿主机上的文件系统镜像



一、开篇

在使用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

【效果】

qemu导入ova qemu文件系统_qemu_02