RK3576 Industrial 最小 Buildroot 系统裁剪指南
本文以 rockchip_rk3576_industry_evb_v10_defconfig 为基线,建立不修改默认配置的最小 Buildroot rootfs。当前结果已完成主机侧构建与镜像检查,尚未刷机或完成板端启动验证。
适用范围与目标
SDK 位于 /home/user/workspace/RK3588,内核为 Rockchip BSP Linux 6.1。目标板 DTS 是 rk3576-industry-evb-v10,根文件系统为 ext4。
最小系统的第一阶段只裁剪用户态 rootfs,保留启动与恢复链:
Loader -> U-Boot -> Kernel + DTB -> ext4 rootfs -> BusyBox shell
内核驱动裁剪不在本阶段进行。
SDK 文件关系
device/rockchip/.chips/rk3576/
rockchip_rk3576_industry_evb_v10_minimal_defconfig
-> output/.config
-> RK_BUILDROOT_CFG=rockchip_rk3576_industry_minimal
buildroot/configs/
rockchip_rk3576_industry_minimal_defconfig
-> Buildroot .config
-> rootfs.ext4
output/firmware/rootfs.img
-> 当前构建的 rootfs.ext2(实际文件系统格式为 ext4)
defconfig 表示期望选择的功能;Kconfig 展开依赖和默认值后生成完整 .config。使用 olddefconfig 可以在不进入交互式菜单的情况下更新和校验该完整配置。
独立配置
不要修改 SDK 默认文件。复制并使用以下两个独立文件:
buildroot/configs/rockchip_rk3576_industry_minimal_defconfig
device/rockchip/.chips/rk3576/rockchip_rk3576_industry_evb_v10_minimal_defconfig
板级 defconfig 的关键内容如下:
RK_UBOOT_SPL=y
RK_BUILDROOT_BASE_CFG="rk3576_industry_minimal"
RK_KERNEL_DTS_NAME="rk3576-industry-evb-v10"
# RK_ROOTFS_PREBUILT_TOOLS is not set
# RK_ROOTFS_PREFER_PREBUILT_TOOLS is not set
# RK_ROOTFS_DEBUG_INFO is not set
这会保持 RK3576 Industrial DTS 不变,并将 rootfs 切换到独立的最小配置。
保留与删除项
必须保留
| 内容 | 来源 | 原因 |
|---|---|---|
Loader、U-Boot、parameter.txt | SDK 板级配置 | 下载、分区与引导链 |
| Kernel 和 Industrial DTB | SDK 板级配置 | 初始化硬件与挂载 rootfs |
| Recovery | RK_RECOVERY=y | 恢复入口 |
| USB gadget 和 ADB | RK_USB_GADGET=y、RK_USB_ADBD=y | 目标板调试入口 |
| BusyBox、eudev、挂载工具、ext4 | base/base.config | shell、设备节点和根文件系统 |
| RK3576 架构与板级 overlay | chips/rk3576_aarch64.config | AArch64、RK3576 包和基础板级文件 |
第一阶段保守保留
bus/can.config、bus/pci.config 以及 exFAT、NTFS、VFAT 配置不属于通用启动必需项,但适合 Industrial 板的外设与维护介质场景。后续应依据实际硬件和产品需求决定是否删除。
已删除
从 Buildroot defconfig 中删除了中文字体、Mali、音频/相机/GStreamer/MPP、Wi-Fi/蓝牙、benchmark、测试工具、Chromium、NPU2、Weston、OTA 与 tools/common.config。
同时在板级 defconfig 中关闭预编译工具和调试信息,因此不会再由 post-rootfs 阶段复制 gdb、perf、ltrace、updateEngine 或 /info。
最终最小 Buildroot defconfig 为:
#include "base/base.config"
#include "bus/can.config"
#include "bus/pci.config"
#include "chips/rk3576_aarch64.config"
#include "fs/exfat.config"
#include "fs/ntfs.config"
#include "fs/vfat.config"
配置与构建流程
切换到独立板级配置:
cd /home/user/workspace/RK3588
./build.sh rockchip_rk3576_industry_evb_v10_minimal_defconfig
仅验证 Buildroot 配置,不编译也不刷机:
make -C buildroot O=/tmp/rk3576-industry-minimal-check rockchip_rk3576_industry_minimal_defconfig
make -C buildroot O=/tmp/rk3576-industry-minimal-check olddefconfig
构建 rootfs:
./build.sh buildroot
更改或取消软件包后,必须进行干净重建;增量构建不会自动删除旧 target/ 中已安装的文件:
./build.sh clean-rootfs
./build.sh buildroot
构建结果与验证
干净重建后的结果:
| 项目 | 结果 |
|---|---|
rootfs.ext4 | 约 48 MB |
Buildroot target/ | 约 45 MB |
| 旧 rootfs.ext4 | 约 166 MB |
| 已确认移除 | gdb、perf、updateEngine、rockchip-test、/info、strace |
验证 rootfs 链接:
readlink -f output/firmware/rootfs.img
ls -lhL output/firmware/rootfs.img
生成可刷镜像
仅构建 rootfs 不足以刷机。必须先重新生成与当前 RK3576 配置匹配的 Loader、Kernel、DTB、Recovery 和 rootfs:
./build.sh all
然后在主机侧打包:
./build.sh updateimg
预期产物为 output/firmware/update.img。updateimg 只打包,不会写入开发板。刷机前必须确认 output/firmware/ 中的所有分区镜像均由当前 RK3576 minimal 配置构建,不能混用遗留目标的镜像。
常见问题
Make 提示目标名前有空格
换行续写时,反斜杠必须是行尾最后一个字符;反斜杠后面的空格会被传给 Make,导致目标名带前导空格。最简单的方式是先使用单行命令。
配置已经关闭,但 rootfs 中文件还在
这是增量构建残留。执行 ./build.sh clean-rootfs 后重新构建,不要手工删除 SDK 源码或固件分区文件。
rootfs.ext2 文件名是否代表 ext2
不是。本 SDK 的 Buildroot 使用 BR2_TARGET_ROOTFS_EXT2_4=y 生成 ext4 文件系统,rootfs.ext2 是历史文件名;rootfs.ext4 指向同一镜像。