跳转至

rootfs

rootfs 是 Linux 系统中的根文件系统 (root filesystem),它是操作系统启动后挂载的第一个文件系统。rootfs 通常包含了系统启动所需的基本文件和目录,例如:

  • /bin:包含基本的用户命令。
  • /sbin:包含系统管理命令。
  • /etc:系统配置文件。
  • /dev:设备文件。
  • /lib/lib64:共享库和内核模块。
  • /proc/sys:虚拟文件系统,用于内核和系统信息。
  • /usr/var 等其他目录。

rootfs 的角色

  1. 启动阶段 当 Linux 内核启动时,它需要一个根文件系统(rootfs)来挂载,提供基本的用户空间工具和库以完成启动流程。
  2. 挂载真实根文件系统 启动后,rootfs 会被替换为最终的持久化存储的根文件系统,比如磁盘分区上的 ext4 文件系统,或者网络上的 NFS。
  3. initramfs 的作用 在现代 Linux 系统中,rootfs 通常与 initramfs (初始化内存文件系统)结合使用。
  4. initramfs 是一个临时的根文件系统,包含了解压缩到内存中的一小部分根文件系统,用于挂载最终的根文件系统。
  5. init 程序负责切换到真正的根文件系统。

特点

  • 存储位置:通常存储在 RAM 中(对于 initramfs)或硬盘中(对于持久根文件系统)。
  • 大小灵活:initramfs 类型的 rootfs 大小可以根据需要动态调整。

rootfs 在容器中的意义

在容器化环境中(如 Docker 或 Kubernetes),rootfs 也被用于描述容器的根文件系统。每个容器的 rootfs 是一个隔离的文件系统,为容器提供独立的运行环境。

启动流程概览

  1. BIOS/UEFI 阶段 系统硬件初始化后,加载引导程序(如 GRUB)。
  2. 引导程序加载内核和 initramfs GRUB 等引导程序将 Linux 内核和 initramfs 加载到内存。
  3. 内核启动 内核初始化硬件并挂载 initramfs 作为临时根文件系统。
  4. initramfs 执行启动脚本 initramfs 的任务是加载必要的驱动、初始化硬件,并挂载真正的 rootfs
  5. 切换到 rootfs 内核切换到最终的 rootfs 并运行用户空间的 init 程序,完成引导。