什么是根文件系统?

相信做过linux移植的朋友们一定对根文件系统这个名词十分熟悉,在移植的过程中,bootloader,kernel和根文件系统是必须要移植的,bootloader和kernel都比较直观好懂,而我自己花了很多时间才能理解什么是根文件系统,所以我就来说说我对根文件系统的理解。

首先说说什么文件系统。用我的话来讲,文件系统就是用来管理块设备的。做过单片机的朋友们都知道当我们要读取块设备时,要知道数据存取在块设备的哪一个扇区号,然后一块块的去读取数据。但是我们在玩电脑的时候,读取硬盘时却是通过路径去访问文件的,这是怎么做到的呢?没错,这就是文件系统的功能,有了它,我们读取块设备时可以通过文件路径去读取,这样子访问块设备就变得十分方便了。

根文件系统是特殊的文件系统。这句话怎么理解?它具备了文件系统的功能,就是管理块设备,同时也有着文件系统没有的功能。除了管理块设备以外,我就来说说具备的其它功能。首先我们要知道,在linux操作系统中,进程是由其父进程衍生出来的,所以有一个很明显的问题,第一个进程是怎么来的?毫无疑问,是linux内核启动的时候创造出来的。但是,有架构思想的朋友们就不难想出,内核代码产生的进程是运行在内核态的,而我们的应用程序是运行在用户态的。所以这里就产生了矛盾。单纯由内核产生的进程1是无法衍生出用户态的进程,所以,此时就需要根文件系统帮忙。将进程1从内核态引导到用户态上。说到这里,我相信很多人明白了,其实根文件系统里面包含着一个应用程序,该应用呈现出就是进程1。

当然,根文件系统还由配置系统的功能。大家想一下,我们平时开机后,电脑桌面,开机账户,开机密码,开机运行的程序等等这些初始化的功能是怎么来的?没错,这些配置都存储在根文件系统里面。在linux系统下,一般都在/etc目录下,这个目录存储的都是内核启动需要的配置文件。

当然,根文件系统还提供了根目录。大家都知道文件的存储时按照树形结构存储的。树枝可以由我们这些用户去定义,当时根目录也是/是怎么生成的?就是由根文件系统生成的。

总结起来说,其实内核仅仅是提供了内核的功能,譬如说内存管理,进程调度等等那些基本的操作系统的功能。而剩下很多需要配置的文件都是由根文件系统提供的。那么为什么根文件系统不涵盖在内核里面形成一个统一的代码呢?在我个人看来,就是为了可移植性。内核中的程序是操作系统的基本功能基本在所有的CPU里面都是通用的,所以全部涵盖在内核层里面。而根文件系统是一些配置文件,不同的CPU有不同的配置模式,所以这里就有所不同。

你可能感兴趣的:(什么是根文件系统?)