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"的能力。
二、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。选择哪种,取决于产品对启动时间、存储占用、软件包管理能力的要求。
三、课程学习目标与整体知识框架
本课程共30章,围绕"能构建、能裁剪、能部署、能排障"四个能力目标展开。学完本课程后,你应当能够独立完成以下任务:
- 理解RK3568启动流程与分区布局,明确rootfs在存储介质中的位置与挂载方式。
- 使用Buildroot从零构建一个可启动的精简rootfs,并完成交叉编译工具链配置。
- 掌握BusyBox、systemd、init脚本三种init方案的差异与选型方法。
- 完成rootfs的裁剪、打包(ext4/squashfs/ubifs)与烧录,并验证启动日志。
- 实现OTA升级、只读根文件系统、overlayfs等产品化部署能力。
- 具备常见启动失败、挂载失败、库缺失等问题的定位与修复能力。
课程知识框架可以概括为"一条主线、三个层次":主线是"从源码到可启动系统"的完整链路;三个层次分别是平台与启动层(RK3568硬件、U-Boot、Kernel、分区)、rootfs构建层(Buildroot、BusyBox、库、配置)、部署与运维层(打包、烧录、OTA、调试)。三者层层递进,缺一不可。
四、典型场景与常见误区
以一个工业网关项目为例:产品要求启动时间小于8秒、rootfs占用不超过64MB、支持远程OTA。此时若直接使用Ubuntu根文件系统,体积往往超过300MB,启动时间也难以达标;正确做法是用Buildroot构建精简rootfs,仅保留必要库与业务程序,并采用squashfs只读根 + overlayfs可写层 + data分区存放配置与日志。这就是本课程要训练的真实工程思维。
| 层次 | 关键对象 | 本课程对应能力 |
|---|---|---|
| 平台与启动层 | RK3568、U-Boot、Kernel、分区表 | 看懂启动日志,定位卡在哪个阶段 |
| rootfs构建层 | Buildroot、BusyBox、glibc/musl、init | 从零构建并裁剪出可启动rootfs |
| 部署与运维层 | ext4/squashfs、OTA、overlayfs | 完成烧录、升级与只读加固 |
接下来,我们将从RK3568的启动流程与存储分区讲起,逐步深入到rootfs的每一个构建细节。请准备好你的开发板、串口工具与Linux主机环境,我们正式开始。