rootfs
rootfs
是 Linux 系统中的根文件系统 (root filesystem),它是操作系统启动后挂载的第一个文件系统。rootfs
通常包含了系统启动所需的基本文件和目录,例如:
-
/bin
:包含基本的用户命令。 -
/sbin
:包含系统管理命令。 -
/etc
:系统配置文件。 -
/dev
:设备文件。 -
/lib
和/lib64
:共享库和内核模块。 -
/proc
和/sys
:虚拟文件系统,用于内核和系统信息。 -
/usr
和/var
等其他目录。
rootfs 的角色
- 启动阶段
当 Linux 内核启动时,它需要一个根文件系统(
rootfs
)来挂载,提供基本的用户空间工具和库以完成启动流程。 - 挂载真实根文件系统
启动后,
rootfs
会被替换为最终的持久化存储的根文件系统,比如磁盘分区上的 ext4 文件系统,或者网络上的 NFS。 - initramfs 的作用
在现代 Linux 系统中,
rootfs
通常与 initramfs (初始化内存文件系统)结合使用。 - initramfs 是一个临时的根文件系统,包含了解压缩到内存中的一小部分根文件系统,用于挂载最终的根文件系统。
init
程序负责切换到真正的根文件系统。
特点
- 存储位置:通常存储在 RAM 中(对于 initramfs)或硬盘中(对于持久根文件系统)。
- 大小灵活:initramfs 类型的 rootfs 大小可以根据需要动态调整。
rootfs 在容器中的意义
在容器化环境中(如 Docker 或 Kubernetes),rootfs
也被用于描述容器的根文件系统。每个容器的 rootfs
是一个隔离的文件系统,为容器提供独立的运行环境。
启动流程概览
- BIOS/UEFI 阶段 系统硬件初始化后,加载引导程序(如 GRUB)。
- 引导程序加载内核和
initramfs
GRUB 等引导程序将 Linux 内核和initramfs
加载到内存。 - 内核启动
内核初始化硬件并挂载
initramfs
作为临时根文件系统。 initramfs
执行启动脚本initramfs
的任务是加载必要的驱动、初始化硬件,并挂载真正的rootfs
。- 切换到
rootfs
内核切换到最终的rootfs
并运行用户空间的init
程序,完成引导。