【嵌入式Linux开发学习】rootfs通过ramfs挂载技巧

概述

在工作中发现在很多产品的研发中总是会采用initramfs文件系统来作为挂载rootfs的方式,所以仔细了解了一下怎么挂载initramfs文件系统。

内核配置

首先必须确保内核是支持ramdisk的需要做一些配置

The [configuration](https://so.csdn.net/so/search?q=configuration&spm=1001.2101.3001.7020) of the kernel is as follow:

1) General setup-->[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

 [*]   Support initial ramdisks compressed using gzip

 [*]   Support initial ramdisks compressed using bzip2

 2)device driver-->Block devices-->   Loopback device support

    RAM block device support

 (16384) Default RAM disk size (kbytes)

 3)ext2 filesystem support, enalbed by default

uboot 设置启动参数

如果启动流程并不复杂可以直接设置启动命令行,

CONFIG_BOOTCOMMAND

下面是我在qemu vexpress仿真平台上 通过模拟mmc

加载rootfs.cpio.gz 到内存 然后启动的设置

#define CONFIG_BOOTCOMMAND_RAM\

    "setenv bootargs root=/dev/ram0 rootfstype=ext2 rw "\

    "console=ttyAMA0 rdinit=/linuxrc initrd=0x61000000,100M ;"\

    "load mmc 0:2 0x60003000 zImage; "\

    "load mmc 0:2 0x60500000 vexpress-v2p-ca9.dtb; "\

    "load mmc 0:4 0x61000000 rootfs.cpio.gz; "\

    "bootz 0x60003000 - 0x60500000 ; "

当然 这只是一种方法,听说还可以使用mkimage工具

将rootfs.cpio.gz打包一层 然后直接传参数给 bootz

就像这样

bootz 0x60003000 0x61000000 0x60500000

总结

在使用initramfs的过程中我感觉相比于传统的我们直接

挂载块设备/dev/mmcblk0 /mmc/sda1 之类的挂载点来看

这种设置方式有其独特的优势:

  1. 相比于读写块设备 ,读写ram总归是会快很多的,系统性能会有所提高。
  2. 可以避免一些需要频繁擦写数据的情况对于块设备的消耗,可以提升设备寿命,对于不怎么开关机长期保持上电状态的设备比如交换机,网桥之类尤其如此。
  3. 所有数据都是临时的,用户怎么折腾都不会改变固件

当然缺点也是明显的:

ram大小是有限的,ram总归是比flash金贵,文件系统如果太大就不好使了,同时对于用户产生数据的保存直接存到ram的根文件系统是没用的。

当然这个问题也非常好解决,直接将块设备挂载到内存文件系统中的一个挂载点上,然后需要保存的用户数据保存到那个挂载点上的文件夹即可。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

与光同程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值