1. 课程导入

RK3588 是瑞芯微面向中高端 AIoT、边缘计算、工业控制与多媒体终端推出的旗舰级 SoC,采用 8nm 工艺,集成 4×Cortex-A76 + 4×Cortex-A55 的 big.LITTLE 架构,内置 6 TOPS NPU、Mali-G610 GPU 以及 8K 视频编解码能力。对嵌入式 Linux 工程师而言,真正决定产品“能不能量产、启动快不快、升级稳不稳、空间够不够”的,往往不是内核驱动本身,而是文件系统与 rootfs 的组织方式。同一颗 RK3588,在不同项目中可能使用 ext4、squashfs、erofs、overlayfs、UBIFS 或只读 rootfs + 数据分区等完全不同的方案,其启动时间、Flash 占用、掉电安全性和 OTA 升级策略差异巨大。

本课程围绕“文件系统定制”和“rootfs 优化”两条主线展开,目标不是简单罗列命令,而是建立一套可复用的工程方法:从 RK3588 的启动链路与存储介质出发,理解 rootfs 从哪里来、如何被挂载、如何被裁剪、如何被保护、如何被升级,最终形成可量产、可维护、可验证的定制方案。

一、核心原理:RK3588 启动链路与 rootfs 的位置

RK3588 的典型启动流程为:BootROM → TPL/SPL(DDR 初始化)→ U-Boot → Linux Kernel → 挂载 rootfs → init 进程。rootfs 是内核启动后第一个被挂载的根文件系统,它决定了系统能否进入用户态。RK3588 支持从 eMMC、SPI NAND、SPI NOR、SD 卡、UFS 以及网络等多种介质启动,不同介质对应不同的文件系统选型与分区布局。

在 Rockchip 的 SDK 中,分区表通常由 parameter.txt 描述,rootfs 分区通过 root= 内核参数指定。理解这一点非常关键:rootfs 优化不是孤立地改文件,而是与分区表、启动参数、存储介质、升级机制联动的系统工程。

# parameter.txt 片段示例
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),\
0x00002000@0x00006000(trust),0x00010000@0x00008000(boot),\
0x00020000@0x00018000(recovery),0x00038000@0x00038000(rootfs),\
-@0x00070000(userdata)

# 内核启动参数中 rootfs 的指定
root=/dev/mmcblk0p5 rootfstype=ext4 rw rootwait

二、方法流程:从需求到 rootfs 方案的决策路径

面对一个 RK3588 项目,rootfs 方案的选择应遵循“需求驱动”的流程,而不是默认套用 Buildroot 或 Yocto 模板。建议按以下顺序决策:

  1. 明确产品形态:是否需要图形界面、是否运行 AI 推理、是否需要频繁写数据。
  2. 确定存储介质与容量:eMMC 适合 ext4/f2fs,SPI NAND 适合 UBIFS,只读场景适合 squashfs/erofs。
  3. 确定读写策略:系统分区只读 + 数据分区可写,是工业与消费类产品的主流做法。
  4. 确定升级方式:A/B 双分区、recovery 升级或 OTA 差分升级,直接影响分区布局。
  5. 确定裁剪目标:启动时间、镜像体积、内存占用、Flash 寿命。

核心判断:如果产品要求“掉电不损坏、升级可回滚”,优先考虑只读 rootfs + overlayfs + A/B 分区;如果产品要求“最小体积、最快启动”,优先考虑 erofs/squashfs + 精简 init。

三、整体课程框架与实战路线

本课程共 30 章,按“认知 → 构建 → 裁剪 → 优化 → 保护 → 升级 → 验证”的路线推进。下图展示了课程的整体结构与 rootfs 在 RK3588 系统中的位置关系,帮助你在开始动手前建立全局视图。

RK3588 文件系统定制与 rootfs 优化课程路线 硬件与启动平台 RK3588 SoC BootROM / U-Boot Kernel 启动 存储介质 eMMC/NAND 分区表 parameter.txt rootfs 构建与定制 Buildroot 最小化构建 Yocto 可定制发行版 Debian/Ubuntu 完整生态 BusyBox init 轻量启动 systemd 服务管理 rootfs 优化 体积裁剪 去冗余库 启动加速 并行 init 只读化 squashfs/erofs 保护与升级 overlayfs 可写层隔离 A/B 分区 回滚安全 OTA 升级 差分/全量 验证与量产:启动时间测量 · 掉电测试 · 空间审计 · 升级回滚验证

从上图可以看到,课程并非线性地讲“怎么打包 rootfs”,而是把硬件启动、构建系统、优化手段、保护机制和升级策略放在同一张工程地图中。你在后续章节中遇到的每一个命令和配置,都可以回到这张图中找到它的位置。

四、案例场景:为什么 rootfs 优化能决定项目成败

以一个典型的 RK3588 工业网关为例:产品使用 8GB eMMC,要求 15 秒内完成启动、支持远程 OTA、掉电后不能变砖。如果直接使用默认的 Debian rootfs,镜像可能超过 2GB,启动时间超过 30 秒,且 ext4 分区在频繁写日志时存在掉电损坏风险。经过 rootfs 优化后,采用 squashfs 只读根 + overlayfs 可写层 + A/B 分区,镜像可压缩到 400MB 以内,启动时间降至 10 秒左右,同时具备回滚能力。这个案例说明:rootfs 方案的选择直接决定产品的启动性能、可靠性和可维护性。

五、常见误区与复盘

误区一:只关注“能不能跑”,忽略“能不能量产”。开发阶段用 NFS 挂载 rootfs 很方便,但量产必须落到本地存储,且要考虑掉电、磨损和升级。

误区二:把 rootfs 裁剪等同于删文件。直接删除库文件可能导致依赖断裂,正确做法是通过构建系统控制包集合,再用工具分析依赖。

误区三:忽略分区对齐与预留空间。rootfs 分区过小会导致升级失败,过大则浪费 Flash,应结合镜像体积和未来增量预留 15%~25%。

六、学习目标清单

目标维度 具体能力 对应实战产出
认知 理解 RK3588 启动链路与 rootfs 挂载关系 能画出分区与启动流程图
构建 掌握 Buildroot/Yocto 构建最小 rootfs 生成可启动的 rootfs.img
裁剪 能分析依赖并裁剪库、服务与文档 镜像体积下降 30% 以上
优化 掌握只读化、overlayfs、启动加速 启动时间可量化对比
保护 设计 A/B 分区与掉电安全策略 升级失败可自动回滚
验证 建立启动、空间、升级的测试方法 形成量产检查清单