3、快速上手配置:make menuconfig入门
说实话,我第一次用 Buildroot 的时候,也被那个蓝底白字的界面唬住了。以为是什么高深莫测的东西。后来才发现,make menuconfig 其实就是个图形化的配置工具,跟你在 Windows 下装软件点下一步差不多。
嗯,咱们一步步来。
3.1 启动配置界面
在 Buildroot 源码根目录下,直接敲命令:
$ make menuconfig
你会看到一个蓝底白字的菜单界面。别慌,操作很简单:
- 上下键:移动光标选择条目
- 回车键:进入子菜单或确认选择
- 空格键:切换选项状态(
[*]表示选中,[ ]表示未选) - ESC 键:返回上一级菜单
- /? 键:查看当前选项的帮助信息
/? 看看帮助。很多坑其实帮助里都写了,只是我们太着急跳过了。
3.2 选择目标架构
进入菜单后,第一件事就是告诉 Buildroot:你要给谁做系统?
路径:Target options → Target Architecture
你会看到这些选项:
| 架构 | 典型场景 | 我踩过的坑 |
|---|---|---|
| ARM | 嵌入式设备、树莓派、手机 | 注意区分 ARMv7 和 ARMv8,选错了内核起不来 |
| MIPS | 路由器、网络设备 | 字节序问题(大端/小端)容易忽略 |
| x86 | PC、服务器、虚拟机 | 这个最简单,基本不会出问题 |
我个人建议:如果你是第一次玩,选 x86。为什么?因为你可以直接在 QEMU 虚拟机里跑,不用买开发板。等流程跑通了,再换 ARM 或 MIPS。
3.3 配置工具链
工具链说白了就是编译器 + 库 + 调试工具。Buildroot 会帮你自动下载和编译,但你要告诉它用哪个版本。
路径:Toolchain
关键选项:
- Toolchain type:选
Buildroot toolchain(自己编译)或External toolchain(用现成的) - Kernel headers:建议选
Same as kernel being built - C library:
glibc(功能全,体积大)、uClibc-ng(体积小)、musl(安全,兼容性好)
嗯,这里有个坑。如果你做的是 资源受限 的设备(比如只有 4MB Flash),选 uClibc-ng 或 musl。如果是做通用 Linux 系统,老老实实用 glibc,兼容性最好。
3.4 配置内核
Buildroot 可以帮你编译内核,但你要告诉它:用哪个版本?用谁的配置?
路径:Kernel
关键选项:
- Linux Kernel:选上
[*] - Kernel version:选
Latest stable version或指定版本号 - Defconfig name:比如
qemu_x86_64_defconfig(QEMU 虚拟机用)
如果你用的是 QEMU x86,直接填 qemu_x86_64_defconfig 就行。Buildroot 会帮你下载内核源码,然后用这个默认配置编译。
3.5 配置文件系统
文件系统决定了你的系统里有什么软件、多大体积、怎么启动。
路径:Filesystem images
常用格式:
| 格式 | 特点 | 适用场景 |
|---|---|---|
| ext2/3/4 | 标准 Linux 文件系统 | 硬盘、SD 卡 |
| squashfs | 只读、压缩率高 | 嵌入式只读系统 |
| initramfs | 集成在内核里 | 快速启动、调试 |
| tar.gz | 打包文件 | 分发、部署 |
我个人习惯:调试阶段用 initramfs,启动最快。正式发布用 squashfs + ext4 组合,只读根文件系统 + 可写数据分区。
3.6 知识体系总览
下面这张图,是我自己总结的配置流程。你照着走,基本不会迷路。
说白了,整个配置过程就是回答五个问题:
- 给谁做?—— 选架构
- 用什么编译?—— 选工具链
- 跑什么内核?—— 选内核版本和配置
- 装什么文件系统?—— 选格式和内容
- 怎么打包?—— 选输出格式
回答完这五个问题,你就可以敲 make 开始编译了。第一次编译会比较慢,因为要下载源码、编译工具链、编译内核…… 喝杯咖啡,耐心等吧。
make clean 之后重新来,很正常。我做个路由器系统,前前后后改了十几次配置才满意。
公众号:蓝海资料掘金营,微信deep3321