根文件系统的简介

以下内容源于网络资源的整理,如有侵权请告知删除。

一、文件系统的简介

1.1 文件系统的概念 

文件系统是对一个存储设备上的数据进行组织的机制,这种机制有利于用户和操作系统的交互。

尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。对Linux来说尤其如此,因为UNIX使用文件I/O机制管理硬件设备和数据文件。在Linux中如果没有文件系统,用户和操作系统的交互也就断开了。

换言之,文件系统简单来说就是一种目录结构(它将各种数据、程序、设备等内容以文件形式组织与管理起来);另外文件系统提供了用户与操作系统交互的接口。

1.2 文件系统的结构 

Linux 文件系统由 4 层组成,分别是用户层、内核层、驱动层、硬件层,如下所示。

(1)用户层

它包含一些应用程序和 GNU C 库(即glibc),为用户提供一些系统调用接口,比如文件的打开、读取、写和关闭等API。

(2)内核层

它包含一些底层文件系统的主要接口,实现了各种文件系统。

比如JFFS文件系统,主要用于NOR型Flash存储器。其基于MTD驱动层。可读写、支持数据压缩、基于哈希表的日志型文件系统,并提供了崩溃掉电安全保护,提供“写平衡”支持。

比如YAFFS文件系统,专门为NAND Flash存储器设计的嵌入式文件系统。适用于大容量的存储设备。速度快,占用内存少,不支持压缩和只支持NAND Flash存储器。

(3)驱动层

指的是块设备的驱动程序。

(4)硬件层

指的是嵌入式系统使用的几种存储器。

由上可知,文件系统是一个广义概念:内容方面包含有软件(如用户层的库函数、内核层的底层接口、驱动层的驱动程序等)与硬件(具体的存储器);结构方面从用户层到内核层,再到驱动层和硬件层。

二、根文件系统的简介

2.1 根文件系统的特殊性 

当我们在Windows环境下提到文件系统时,首先想到的是Fat32、NTFS等文件系统类型,而在Linux中,则会想到Ext2、Ext3等文件系统。但其实还有一种很重要的文件系统——根文件系统。

根文件系统,首先它是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,而且相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载的第一个文件系统内核代码的镜像文件保存在根文件系统中(嵌入式linux并没有将内核代码的镜像保存在根文件系统中,而是保存到了其他地方,比如 NAND Flash 的指定存储地址、EMMC 专用分区中)在根文件系统成功挂载之后,系统引导启动程序会从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。

根文件系统之所以在前面加一个“根”,说明它是加载其它文件系统的“根”,包含了系统引导和使其他文件系统得以挂载所必需的文件。例如Linux启动时都需要有init目录下的相关文件,在 Linux挂载其他分区时会寻找/etc/fstab这个文件,根文件系统还包括存有许多的应用程序的bin目录等。

注释:Linux启动过程中,第一个挂载的文件系统必须是根文件系统。如果不能从指定设备上挂载根文件系统,则系统会出错而退出启动。挂载根文件系成功之后,可以自动或手动挂载其他的文件系统。因此,一个系统可以同时存在不同的文件系统。

2.2 根文件系统的挂载过程

理论过程见博文https://www.cnblogs.com/armlinux/archive/2011/03/30/2396825.html

简单地说,首先将/dev/ram0挂载,然后切换到根目录,再挂载根文件系统。

根文件系统被挂载到根目录后,在根目录下就有根文件系统的各个目录,然后可以再将其他分区挂接到/mnt目录上,/mnt目录下就有各个分区的目录。

注释:可以深入理解下根文件系统的挂载过程,这对我们构建linux嵌入式开发系统是很有帮助的。

2.3 如何构建根文件系统

第一种方法:下载相应的命令源码,并移植到对应的处理器架构平台上。

第二种方法:使用开源工具构建,比如BusyBox、TinyLogin、Embutils等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天糊土

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

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

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

打赏作者

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

抵扣说明:

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

余额充值