# 成功后查看镜像文件 ls -lh output/images/ # 典型输出文件 total 500M -rw-r--r-- 1 user user 20M sdcard.img # 完整 SD 卡镜像 -rw-r--r-- 1 user user 8.0M zImage # Linux 内核镜像 -rw-r--r-- 1 user user 100K rpi-firmware.dtb # 设备树文件 -rw-r--r-- 1 user user 15M rootfs.ext4 # ext4 根文件系统 -rw-r--r-- 1 user user 12M rootfs.tar # tar 格式根文件系统 3. 目录结构定制
3.1 板级配置目录
Buildroot 推荐使用 `board/` 目录管理项目特定配置:
mkdir -p board/mycompany/myboard cd board/mycompany/myboard # 创建必要的配置文件 touch linux.config # 内核配置 touch busybox.config # BusyBox 配置 touch rootfs-overlay/etc/inittab touch post-build.sh touch patches/ **目录结构**:
board/mycompany/myboard/ ├── linux.config # 内核 defconfig ├── busybox.config # BusyBox 配置 ├── uboot.config # U-Boot 配置(可选) ├── rootfs-overlay/ # 根文件系统覆盖目录 │ ├── etc/ │ │ ├── inittab # Init 配置 │ │ ├── profile # 环境变量 │ │ └── fstab # 挂载配置 │ └── usr/bin/ │ └── my-script.sh # 自定义脚本 ├── post-build.sh # 构建后脚本 ├── post-image.sh # 镜像生成后脚本 └── patches/ # 补丁目录 ├── linux/ │ └── 0001-add-driver.patch └── busybox/ └── 0002-fix-bug.patch 3.2 在 menuconfig 中引用
打开 `make menuconfig`,设置以下路径:
System configuration ---> Root filesystem overlay (board/mycompany/myboard/rootfs-overlay) Kernel ---> Kernel configuration (Using an in-tree defconfig file) Defconfig name (myboard_defconfig) Filesystem images ---> Post-build script (board/mycompany/myboard/post-build.sh) 4. 高级配置技巧
4.1 保存为 Defconfig
完成定制后,保存为可复用的配置文件:
# 生成最小化配置 make savedefconfig # 复制到 configs/ 目录 cp defconfig configs/myboard_defconfig # 使用该配置重建 make myboard_defconfig make -j$(nproc) **defconfig 示例**:
BR2_arm=y BR2_cortex_a72=y BR2_ARM_FPU_VFPV4=y BR2_PACKAGE_BUSYBOX_CONFIG="../board/mycompany/myboard/busybox.config" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_DEFCONFIG="myboard" BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../board/mycompany/myboard/linux.config" BR2_ROOTFS_OVERLAY="board/mycompany/myboard/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="board/mycompany/myboard/post-build.sh" 4.2 外部工具链
如果已有预编译工具链,Buildroot 可直接使用:
Toolchain ---> Toolchain type (External toolchain) Toolchain (Custom toolchain) (/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu) Toolchain path (aarch64-linux-gnu) Toolchain prefix 4.3 Init 系统
Buildroot 支持多种 Init 系统:
Init 系统 | 特点 | 适用场景 |
BusyBox Init | 最小化、简单 | 小型设备、快速启动 |
SysVinit | 传统、稳定 | 通用场景 |
systemd | 功能强大、复杂 | 桌面级、大型系统 |
OpenRC | 轻量级、依赖少 | 嵌入式友好 |
**切换 Init 系统**:
System configuration ---> Init system (systemd) ---> 5. 实战演练
5.1 目标
为树莓派 4 构建一个最小化 Linux 系统,包含: - SSH 服务器 - Python 3 运行环境 - I2C 工具 - 自定义启动脚本5.2 配置步骤
# 1. 加载基础配置 make raspberrypi4_defconfig # 2. 进入菜单配置 make menuconfig # 3. 启用以下选项(在菜单中勾选) # Toolchain ---> # Enable toolchain in /output/host # System configuration ---> # (pi4-box) System hostname # (root) Root password # Enable root login # Kernel ---> # Linux Kernel # (Latest version (6.1.x)) Kernel version # Package selection ---> # Core system ---> # python3 # Networking applications ---> # openssh # Hardware handling ---> # i2c-tools # Filesystem images ---> # ext2/3/4 (the rootfs filesystem image) # 4. 保存并退出 5.3 构建与部署
# 开始构建(首次约 30-60 分钟) make -j$(nproc) # 构建完成后,查看镜像 ls -lh output/images/ # 烧录到 SD 卡 sudo dd if=output/images/sdcard.img \ of=/dev/sdX \ bs=4M \ status=progress \ conv=fsync # 插入树莓派 4,启动系统 # SSH 登录:ssh root@192.168.1.xxx # 密码:root(配置时设置) 5.4 验证系统
# 在树莓派上执行 uname -a # 查看内核版本 cat /proc/cpuinfo # 查看 CPU 信息 python3 --version # 验证 Python 3 i2cdetect -y 1 # 扫描 I2C 总线 6. 常见问题排查
6.1 构建失败
# 手动下载源码包 make-source # 检查网络连接 ping dl.sourceforge.net # 使用代理(如果需要) export http_proxy=http://proxy.example.com:8080 make# 查看详细日志 cat output/build//.config.log # 清理并重新构建 make-dirclean make6.2 配置问题
**问题**:menuconfig 图形界面无法启动 **解决**: # 安装 ncurses 开发库 sudo apt-get install libncurses5-dev libncursesw5-dev # 或使用 nconfig 替代 make nconfig 6.3 部署问题
**问题**:设备无法启动 **排查清单**: - [ ] 检查 Bootloader 是否正确烧录 - [ ] 检查设备树文件(.dtb)是否匹配硬件 - [ ] 查看串口调试输出 - [ ] 检查根文件系统挂载点 **查看串口日志**: # 在开发机上 sudo screen /dev/ttyUSB0 115200 # 或使用 minicom sudo minicom -D /dev/ttyUSB0 -b 115200 7. 总结
Buildroot 是嵌入式 Linux 开发的利器,通过本文的学习,你应该掌握了: **核心能力**: - 理解 Buildroot 的基本原理和目录结构 - 能够独立配置和构建嵌入式 Linux 系统 - 掌握 board/ 目录的定制化方法 - 了解常见问题的排查思路 **下一步学习**: - 添加自定义软件包(下一篇详细讲解) - 根文件系统深度优化 - 内核与驱动定制 - 企业级项目实战 **参考资料**: - Buildroot 官方文档:https://buildroot.org/docs.html - Buildroot 手册:`docs/manual/`(源码目录) - 邮件列表:buildroot@buildroot.org __________________________________________________ **系列文章**: - 本文:Buildroot 快速入门 - 下一篇:Buildroot 添加外部包实战 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!