Linux之文件系统和根文件系统

时间:2022-01-19 00:47:39

    在学习Linux的过程中,会遇到“文件系统”和“根文件系统”两个概念,这两个概念容易混淆,总觉得为什么Linux需要这么多的文件系统,这两种系统的各自作用是什么,有什么区别呢?

    “尽管内核是Linux的核心,但文件却是用户与操作系统交互所采用的主要工具”,这就阐述了“文件系统”的作用,如果只有Linux,没有文件系统,那么整个系统是没有意义的。

     在Linux中,有“VFS”的概念,这个VFS是底层文件系统的通用接口,VFS会抽象到各个文件系统,虽然各种文件系统的差异很大,但是各种文件系统会抽象出同样的访问接口,然后抽象到VFS,普通的文件系统其实是对应存储设备的,通过这些普通文件系统,来实现对存储设备的管理和使用。

根文件系统首先也是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,而且相对于普通文件系统,它的特殊之处在于,它是内核启动所“挂载mount”的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会再根文件系统挂载之后从中把一些初始化脚本(如rcs,inittab)和服务加载到内存中运行,在嵌入式系统中,只是将内核下载到开发板上,是无法真正的启动Linux系统的,会出现无法加载文件系统的错误。

根文件系统中有一个“根”,说明它是加载其他文件系统的“根”,既然是根,如果没有这个根,其他的文件系统也就没有办法进行加载了,根文件系统引导和使其他文件系统得以mount所必须的文件,根文件系统包括Linux启动时所必须的目录和关键性文件,例如Linux启动时都需要的init目录下的相关文件,在Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了很多应用程序bin目录等,然和包括这些Linux系统启动所必须的文件都可以成文跟文件系统。

Linux在启动时,第一个必须挂载的是根文件系统,弱系统不能从指定的设备上挂载根文件系统,则系统会出错而退出启动。成功后,可以自动或者手动挂载其他文件系统,因此,一个系统中可以同时存在不同的文件系统,这都是使用VFS机制实现的。

在Linux中,将一个文件系统与一个存储设备关联起来的过程称为“挂载”,使用指令“mount”,使用mount指令将一个文件系统附着到当前文件系统的层次结构中(根),在执行挂装时,要提供文件系统类型、文件系统和一个挂载点,根文件系统被挂装到根目录“/”上后,在根目录下就有根文件系统的各个目录,文件:/bin/sbin/mnt等,再将其他分区挂装到/mnt目录上。