Buildroot 适合快速构建精简嵌入式 Linux 系统。它可以同时生成交叉工具链、内核、rootfs 和镜像。对入门和中小型产品来说,Buildroot 的学习成本比 Yocto 低很多。
一、Buildroot 解决什么问题
手工拼 rootfs 很快会遇到问题:
- 工具链版本不统一。
- 动态库依赖难管理。
- BusyBox 配置不可复现。
- rootfs 修改靠手工拷贝。
- 不同开发机生成结果不一致。
Buildroot 的价值是把这些内容配置化、脚本化。
二、常见目录
1 | configs/ |
输出目录:
1 | output/host/ 交叉工具链 |
常用命令:
1 | make menuconfig |
保存配置:
1 | make savedefconfig |
三、rootfs overlay
overlay 用来把项目自定义文件复制进 rootfs。
示例:
1 | board/my_board/rootfs_overlay/ |
在 Buildroot 中配置:
1 | System configuration |
overlay 适合放:
- 启动脚本。
- 默认配置。
- 小工具。
- udev/mdev 规则。
- 默认证书或公钥。
不建议把大型应用二进制长期放 overlay,最好做成 package。
四、自定义 package
一个简单 package 目录:
1 | package/device-agent/ |
Config.in:
1 | config BR2_PACKAGE_DEVICE_AGENT |
device-agent.mk:
1 | DEVICE_AGENT_VERSION = 1.0.0 |
把 package 加入总入口:
1 | source "package/device-agent/Config.in" |
然后在 make menuconfig 中选中。
五、调试工具开关
开发阶段可以打开:
- strace。
- tcpdump。
- gdbserver。
- i2c-tools。
- iproute2。
- ethtool。
量产版本再裁剪。
可以维护两个配置:
1 | my_board_debug_defconfig |
debug 方便定位,release 控制包体和攻击面。
六、构建可复现
项目至少保存:
- defconfig。
- Linux config。
- BusyBox config。
- rootfs overlay。
- 自定义 package。
- 构建脚本。
- 版本生成脚本。
不要只保存 output/images。镜像是结果,不是构建过程。
一个简单构建脚本:
1 |
|
后续再扩展清理、版本号、产物归档。
- 本文链接: https://blog.hansong.icu/2026/06/26/Embedded_Linux_Series_05_Buildroot_Practice/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。