根文件系统

作为一名嵌入式软件专业的,我一直对根文件系统的概念很模糊。工作过程中,再次接触到了相关内容,于是网上查阅了,进行了以下梳理:

原文链接:https://blog.csdn.net/KUNPLAYBOY/article/details/123159606

“常见的文件系统有三类:基于磁盘的文件系统;基于内存的文件系统;网络文件系统。这些文件系统,要先挂载到 VFS 目录树中的某个子目录(称为挂载点),然后才能访问其中的文件。拿第一类,也就是基于磁盘的文件系统为例,在安装系统时,要先挂载一个根 目录(/),在根目录下再把其他文件系统(比如其他的磁盘分区、/proc 文件系统、/sys 文件系统、NFS 等)挂载进来。”

这里并没有说根文件系统属于哪一类,我又转向了其它文章

原文链接:https://blog.csdn.net/LEON1741/article/details/78159754

“1、sysfs文件系统目前还没有挂载到rootfs的某个挂载点上,后续init程序会把sysfs挂载到rootfs的sys挂载点上;

2、rootfs是基于内存的文件系统,所有操作都在内存中完成;也没有实际的存储设备,所以不需要设备驱动程序的参与。基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。”

内核启动参数root时,有时会看到root=/dev/mtdblock3,有时会看到/dev/ram0,不知道这个参数到底代表着什么?看到介绍说root指定了根文件系统的存放位置,好比root=/dev/mtdblock3,flash上没有分区表,于是在内核里指定了flash上文件系统的分区,总之对应了root表示根文件系统存放的位置。但root=/dev/ram0,也是表示根文件系统存放在ram0上吗,看了内核对启动参数root的处理流程,

当给内核指定的参数是mtd或者ubi类型的根设备,则调用mount_block_root()函数挂载文件系统

当给内核指定的参数是/dev/ram, 会执行mount_root()。

当给内核指定的参数是/dev/非ram,比如/dev/mtdblock3,会执行initrd_load()

内核启动后会先加载虚拟根文件系统,目的是加载必要的驱动,为后续加载真实根文件系统做铺垫,从而得以加载真实的根文件系统,

mount挂载文件系统的本质就是将文件系统在硬盘上的相关信息加载到内存中,从而可以操作文件系统里的文件。

然而并没把这些内容串起来,没能理解内核挂载文件系统的流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值