RootFSRoot Filesystem,根文件系统)是 Linux 系统启动后挂载为 / 的文件系统,包含用户态程序、动态库、配置文件、系统服务和基础目录结构。

核心问题

Linux kernel 启动后只负责内核态资源管理和驱动,它还需要用户态环境来运行 init、shell、系统服务和应用程序。RootFS 解决的是“内核启动后进入哪个用户态世界”的问题。

没有可用 RootFS,内核即使启动成功,也会因为找不到 init、库文件、设备节点或挂载点而无法进入完整系统。

核心结构

RootFS 通常包含:

  • 基础目录/bin/sbin/lib/etc/dev/proc/sys/var/tmp/usr
  • init 系统:BusyBox init、systemd、OpenRC 或自定义 init。
  • 动态库和运行时:C runtime、驱动用户态库、设备厂商库。
  • 系统配置:网络、用户、服务、日志、挂载表和启动脚本。
  • 设备与服务入口:udev/mdev、systemd unit、应用守护进程。
  • 应用和工具:诊断工具、业务程序、升级程序和产测工具。

嵌入式系统中,RootFS 可以由 Buildroot、Yocto、Debian/Ubuntu base rootfs 或厂商 SDK 生成,也可以打包成 ext4、squashfs、ubifs、initramfs 等镜像格式。

工程用途

RootFS 是 设备 BSP 的用户态交付核心:

  • 系统启动:提供 /sbin/init 或等价入口。
  • 驱动配套:放置 firmware、udev 规则、用户态库和设备权限配置。
  • 产品服务:预装业务服务、日志策略、网络配置和升级程序。
  • 调试维护:提供 shell、工具链、日志目录和远程访问能力。
  • 量产镜像:决定默认账号、分区挂载、只读策略和恢复机制。

边界与常见坑

  • RootFS 不等于内核:驱动是否可用主要由内核和设备树决定,RootFS 提供用户态配套。
  • 能挂载不等于能启动:缺少 init、动态库、设备节点或权限配置都会导致启动失败。
  • 只读 RootFS 需要状态分区:日志、配置、数据库和升级状态不能随意写进只读系统分区。
  • 架构必须匹配:ARM32、ARM64、x86_64、软浮点/硬浮点、glibc/musl 不匹配都会运行失败。
  • 厂商库和内核驱动要匹配:NPU、ISP、GPU、摄像头等用户态库常和内核驱动强耦合。
  • rootfs 路径由启动参数决定:bootargs、分区 UUID、initramfs 和挂载脚本不一致会导致找不到根分区。

相关术语