Linux 内核在完成系统初步的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。
总结根文件系统的作用:
(1)init进程的应用程序(Linuxrc)在根文件系统上
(2)根文件系统提供了根目录/
(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为:发行版=内核+rootfs
(4)shell命令程序在根文件系统上。譬如ls、cd等命令
(5)/lib目录下的库文件等
所以:一套linux体系,只有内核本身是不能工作的,必须要rootfs
根文件系统至少包含下面文件夹:
- /etc/:存储重要的配置文件。
- /bin/:存储经常使用且开机时必须用到的运行文件。所有用户都可以使用的基本命令。如:cat ls chmod 等
- /sbin/:存储着开机过程中所需的系统运行文件。系统命令:shutdown reboot fdisk等。
- /lib/:存储/bin/及/sbin/的运行文件所需的链接库。以及Linux的内核模块。
- /dev/:存储设备文件。
挂载根文件系统的而目的有两个:一是安装适当的内核模块。以便驱动某些硬件设备或启用某些功能;二是启动存储于文件系统中的init服务,以便让init服务接手兴许的启动工作。
rootfs,ramfs,ramdisk,tmpfs的基本概念:
1. rootfs:内核启动的初始始根文件系统,大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs
2. ramfs:基于内存的文件系统.ramfs文件系统没有容量大小的限制,它可以根据需要动态增加容量.直接利用了内核的磁盘高速缓存。
3. ramdisk:基于ram的块设备,占据一块固定的内存,事先要使用特定的工具比如mke2fs格式化,还需要一个文件系统驱动来读写其上的文件空间固定导致容量有限,要想装入更多的文件需要重新格式化.Linux的块设备缓冲特性, ramdisk上的数据被拷贝到page cache(对于文件数据)和dentry cache(对于目录项),导致内存浪费,它可能不停的动态增长直到耗尽系统的全部内存,所以只有root或授权用户允许使用ramdisk。
4. tmpfs:增加了容量大小的限制 + 允许把数据写入交换分区.由于增加了这两个特性,tmpfs允许普通用户使用
【注】rootfs是一种特定的ramfs的实例,它一直存在于系统中,不能卸载。大部分其他的文件系统安装于rootfs之上。
启动过程:
-------->装载内核和一个初始化的ramdisk
-------->将initrd转换成普通的ramdisk(读写模式的根文件系统设备)
-------->执行linuxrc(装载真正的根文件系统)
-------->ramdisk被卸载
-------->执行启动序列/sbin/init。
参考:
https://blog.csdn.net/LEON1741/article/details/78159754【浅谈linux中的根文件系统(rootfs的原理和介绍)】
https://www.cnblogs.com/PengfeiSong/p/6443041.html【linux的进程1:rootfs与linuxrc】
https://blog.csdn.net/armmfc/article/details/51314581【根文件系统(rootfs)梳理】
https://www.cnblogs.com/shangye/p/6260471.html【根文件系统挂载过程】
https://yq.aliyun.com/articles/244040?spm=a2c4e.11153940.0.0.65d8364dEURJeA【从linux启动到rootfs的挂载分析】