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)。
- 引导程序加载内核和
initramfsGRUB 等引导程序将 Linux 内核和initramfs加载到内存。 - 内核启动
内核初始化硬件并挂载
initramfs作为临时根文件系统。 initramfs执行启动脚本initramfs的任务是加载必要的驱动、初始化硬件,并挂载真正的rootfs。- 切换到
rootfs内核切换到最终的rootfs并运行用户空间的init程序,完成引导。