1. 课程导入

欢迎进入《RK3568 rootfs构建与系统部署实战》课程。本课程面向已经具备一定嵌入式Linux基础的开发者,围绕瑞芯微RK3568这颗高性能、低功耗的通用型SoC,系统讲解从rootfs(根文件系统)构建到整机系统部署的完整工程链路。在正式动手之前,我们需要先建立对平台、对rootfs定位、以及对整门课程知识框架的整体认知,这样才能在后续章节中做到"知其然,更知其所以然"。

一、RK3568平台概述

RK3568是瑞芯微电子推出的一款面向中高端AIoT与工业控制市场的通用SoC,采用四核64位Cortex-A55架构,主频最高可达2.0GHz,集成Mali-G52 GPU与0.8TOPS算力的NPU。它支持LPDDR4/LPDDR4X、eMMC、SPI NAND、SD卡等多种存储介质,并具备PCIe、USB3.0、千兆以太网、MIPI-DSI/CSI、HDMI等丰富外设接口,因此被广泛应用于边缘计算网关、工业HMI、商显设备、NVR、车载终端等场景。

从软件生态看,RK3568官方提供完整的Linux SDK,包含U-Boot、Kernel、Buildroot/Debian/Ubuntu等多种rootfs方案,以及RKNN NPU推理框架。这意味着开发者既可以选择官方预置的发行版快速出产品,也可以从零构建裁剪化的rootfs以满足体积、启动速度、安全合规等定制需求。本课程正是聚焦后者——掌握"自己造rootfs"的能力。

核心认知:RK3568的启动链路为 BootROM → U-Boot(SPL+Proper) → Kernel → rootfs → init/应用。rootfs是这条链路的"最后一公里",也是用户空间所有程序、库、配置、服务的载体。

二、rootfs在嵌入式系统中的作用

rootfs(根文件系统)是Linux内核挂载的第一个文件系统,内核启动的最后阶段会执行init程序,而该程序就位于rootfs中。没有可用的rootfs,内核会以"Kernel panic - not syncing: No working init found"结束启动。因此rootfs不是"可选项",而是系统能否进入用户空间的必要条件。

rootfs在嵌入式系统中承担四类核心职责:

  • 提供用户空间运行环境:包括/bin、/sbin、/lib、/usr等目录下的可执行程序与动态库,如busybox、glibc/musl、systemd或init脚本。
  • 承载系统配置:/etc下的fstab、inittab、网络配置、用户与权限文件,决定系统启动行为与外设初始化策略。
  • 组织设备与运行时数据:/dev、/proc、/sys、/tmp、/run等虚拟或临时目录,是内核与用户空间交互的窗口。
  • 存放应用与升级载体:用户APP、OTA升级包、恢复分区脚本通常都落在rootfs或其挂载的data分区中。

在RK3568的实际项目中,rootfs的形态通常有三种:Buildroot构建的精简rootfs(体积小、启动快)、Debian/Ubuntu根文件系统(生态全、依赖多)、以及基于Yocto或自研脚本的定制rootfs。选择哪种,取决于产品对启动时间、存储占用、软件包管理能力的要求。

RK3568 启动链路与 rootfs 定位 BootROM 固化引导 U-Boot SPL + Proper Kernel 设备树 + 驱动 rootfs 挂载 / 执行 init 用户应用 APP / 服务 rootfs 内部目录结构(典型嵌入式布局) /bin /sbin busybox init 脚本 /lib /usr/lib glibc/musl 动态库 /etc fstab 网络/用户配置 /dev /proc /sys /tmp 虚拟文件系统 /opt /root 应用目录 启动脚本 /data 可写分区 OTA/日志 rootfs 是内核与用户空间之间的桥梁:内核挂载它,init 从它启动,应用在它之上运行

三、课程学习目标与整体知识框架

本课程共30章,围绕"能构建、能裁剪、能部署、能排障"四个能力目标展开。学完本课程后,你应当能够独立完成以下任务:

  1. 理解RK3568启动流程与分区布局,明确rootfs在存储介质中的位置与挂载方式。
  2. 使用Buildroot从零构建一个可启动的精简rootfs,并完成交叉编译工具链配置。
  3. 掌握BusyBox、systemd、init脚本三种init方案的差异与选型方法。
  4. 完成rootfs的裁剪、打包(ext4/squashfs/ubifs)与烧录,并验证启动日志。
  5. 实现OTA升级、只读根文件系统、overlayfs等产品化部署能力。
  6. 具备常见启动失败、挂载失败、库缺失等问题的定位与修复能力。

课程知识框架可以概括为"一条主线、三个层次":主线是"从源码到可启动系统"的完整链路;三个层次分别是平台与启动层(RK3568硬件、U-Boot、Kernel、分区)、rootfs构建层(Buildroot、BusyBox、库、配置)、部署与运维层(打包、烧录、OTA、调试)。三者层层递进,缺一不可。

四、典型场景与常见误区

以一个工业网关项目为例:产品要求启动时间小于8秒、rootfs占用不超过64MB、支持远程OTA。此时若直接使用Ubuntu根文件系统,体积往往超过300MB,启动时间也难以达标;正确做法是用Buildroot构建精简rootfs,仅保留必要库与业务程序,并采用squashfs只读根 + overlayfs可写层 + data分区存放配置与日志。这就是本课程要训练的真实工程思维。

常见误区一:认为"rootfs就是文件系统镜像",忽略其内部目录语义与挂载策略。误区二:直接复制PC上的根文件系统到开发板,导致架构不匹配(x86 vs ARM64)或动态库缺失。误区三:只关注能否启动,忽略只读保护、掉电安全与OTA回滚,导致量产阶段返工。
层次关键对象本课程对应能力
平台与启动层RK3568、U-Boot、Kernel、分区表看懂启动日志,定位卡在哪个阶段
rootfs构建层Buildroot、BusyBox、glibc/musl、init从零构建并裁剪出可启动rootfs
部署与运维层ext4/squashfs、OTA、overlayfs完成烧录、升级与只读加固

接下来,我们将从RK3568的启动流程与存储分区讲起,逐步深入到rootfs的每一个构建细节。请准备好你的开发板、串口工具与Linux主机环境,我们正式开始。