Buildroot 的 make menuconfig包含的配置项
Init systemBusyBox (最小) / systemd (需要 glibc)关键词:Buildroot、嵌入式 Linux、menuconfig、交叉编译、根文件系统。网络dropbear (轻量 ssh)openssh, wpa_supplicant。C librarymusl (体积最小) / glibc (最兼容)解释器Python3 (pip, ssl)Lua, Node.js
Buildroot 的 make menuconfig包含的配置项
关键词:Buildroot、嵌入式 Linux、menuconfig、交叉编译、根文件系统
一、为什么要写这篇博客?
每次用 make menuconfig 打开 Buildroot,左侧 10 个大菜单、成百上千个子选项,新人总有种“无从下手”的窒息感。
二、速览
Buildroot 配置总览
├─ 1️⃣ Target options(目标硬件)
├─ 2️⃣ Build options(构建行为)
├─ 3️⃣ Toolchain(交叉工具链)
├─ 4️⃣ System configuration(系统级设置)
├─ 5️⃣ Kernel(Linux 内核)
├─ 6️⃣ Target packages(用户空间软件包)
│ ├─ 基础工具
│ ├─ 解释器/语言
│ ├─ 网络工具
│ ├─ 图形与 UI
│ ├─ 音频/多媒体
│ ├─ 数据库
│ ├─ 文件系统
│ ├─ 开发/调试
│ └─ 自定义软件包
├─ 7️⃣ Filesystem images(根文件系统镜像格式)
├─ 8️⃣ Bootloaders(引导加载器)
├─ 9️⃣ Host utilities(宿主机工具)
└─ 🔟 Legacy config options(旧兼容项)
三、菜单逐条详解_10个
每个条目后括号内给出常见值或建议,可直接抄作业。
1️⃣ Target options(目标硬件)
选项 典型值 / 说明
Target Architecture ARM (little endian)
Target Variant cortex-A7
Target ABI EABIhf (hard-float)
Floating point strategy NEON/VFPv4
Toolchain header file 5.x kernel headers
小坑:大小端选错会导致内核启动直接挂。
2️⃣ Build options(构建行为)
选项 建议
Download dir (TOPDIR)/dl
Number of parallel jobs CPU 核数×1.5
Enable compiler cache (ccache) ✅ 首次编译后第二次提速 50%
strip target binaries ✅ 减小体积
libraries (shared only / static) 嵌入式优先 shared
3️⃣ Toolchain(交叉工具链)
选项 建议
Toolchain type Buildroot toolchain
GCC version 13.x
C library musl (体积最小) / glibc (最兼容)
C++ support ✅ Qt 工程必须开
Thread library NPTL
如果公司已有 Linaro 工具链,选 External toolchain 并填路径。
4️⃣ System configuration(系统级设置)
选项 示例
System hostname myboard
System banner Welcome to MyBoard!
Root password 123456
Init system BusyBox (最小) / systemd (需要 glibc)
getty port ttyS0
Baudrate 115200
Overlay directories board/myboard/rootfs-overlay
Post-build scripts board/myboard/post-build.sh
5️⃣ Kernel(Linux 内核)
选项 说明
Kernel version Custom Git repository / 6.6.x
Kernel configuration Use a custom config file
Device tree source board/myboard/myboard.dts
Kernel binary format zImage (ARM64 用 Image.gz)
Install kernel image to /boot ✅
6️⃣ Target packages(用户空间软件包)
80% 的体积在这里,按需裁剪。
子菜单 必开项 可选项
基础工具 BusyBox coreutils, util-linux
解释器 Python3 (pip, ssl) Lua, Node.js
网络 dropbear (轻量 ssh) openssh, wpa_supplicant
图形 Qt5 (widgets, gui) SDL2, GTK3
音频 alsa-utils gstreamer1, mpd
调试 gdb, strace valgrind, perf
自定义 见下文
如何添加自己的软件包?
- 在
package/新建myapp/ - 新建
Config.in+myapp.mk - 在
package/Config.in里source "package/myapp/Config.in" - 重新
make menuconfig就能在 Target packages 里看到。
7️⃣ Filesystem images(根文件系统镜像格式)
格式 场景
ext4 SD 卡、U 盘
squashfs 只读 rootfs,OTA 升级
ubifs NAND/NOR
initramfs RAM 启动,救援系统
tar.gz 主机 docker 镜像
8️⃣ Bootloaders(引导加载器)
Bootloader 典型配置
U-Boot 选 defconfig: myboard_defconfig
Barebox 适用于 NXP
GRUB2 x86_64
9️⃣ Host utilities(宿主机工具)
工具 用途
genimage 生成单文件 SD 卡镜像
mkenvimage 生成 U-Boot 环境变量镜像
swupdate 做 OTA 升级包
🔟 Legacy config options
除非编译老项目,否则不用动。
四、5 步口诀,30 秒回忆
硬件 5 步:架构 → 子型 → 浮点 → 大小端 → MMU
软件 6 步:工具链 → 系统 → 内核 → 软件包 → 格式 → 引导
五、实战:一条命令跑通
# 1. 拿到官方最小配置
make qemu_arm_vexpress_defconfig
# 2. 打开 menuconfig 按需裁剪
make menuconfig
# 3. 编译
make -j$(nproc)
# 4. 启动 QEMU 验证
qemu-system-arm -M vexpress-a9 \
-kernel output/images/zImage \
-dtb output/images/vexpress-v2p-ca9.dtb \
-drive file=output/images/rootfs.ext2,if=sd,format=raw \
-append "root=/dev/mmcblk0 console=ttyAMA0" \
-serial stdio
六、开发总结
- 首先60% 时间花在 Target packages 里砍包。
- 其次30% 问题出在 Device Tree 或 Kernel config。
- 最后 10% 才需要改 Build options。
更多推荐



所有评论(0)