第4章 配置系统入门:make menuconfig界面导航、配置项分类
说实话,我第一次打开Busybox的配置界面时,有点懵。满屏的选项,密密麻麻的树形结构,根本不知道从哪下手。后来做项目多了,才发现这玩意儿其实挺有规律的。今天我就带你走一遍,把它的门道摸清楚。
4.1 启动配置界面
在源码根目录下,执行这条命令:
make menuconfig
你会看到一个蓝底白字的界面。嗯,这玩意儿叫终端图形界面,基于ncurses库。别被它的复古外表吓到,操作起来其实很顺手。
我个人习惯先按一下 ? 键,看看当前选项的帮助信息。这个习惯帮我避免过不少坑。有一次我选了一个看起来无害的选项,结果编译出来的Busybox体积暴涨了30%——就是没看帮助信息惹的祸。
4.2 界面导航基础
操作方式很简单,记住这几个键就行:
| 按键 | 功能 |
|---|---|
| ↑ ↓ | 上下移动光标 |
| Enter | 进入子菜单 / 确认选择 |
| Space | 切换选项状态(选中/取消) |
| Y / N | 直接选中 / 直接取消 |
| ? | 查看帮助信息 |
| / | 搜索功能(这个超实用) |
| Esc + Esc | 返回上一级菜单 |
你想想看,几百个配置项,一个个翻多累人。所以/搜索键是我最常用的。比如我想找ls命令,直接按/输入ls,瞬间定位。
4.3 配置项的状态标记
每个选项前面都有个标记,告诉你它当前的状态:
[ ]— 未选中。功能不会被编译进去。[*]— 选中。功能会静态编译进Busybox。< >— 模块化选项。可以编译成独立模块。<*>— 模块已选中。<M>— 编译为可加载模块(Busybox里很少见)。
这里有个小细节:灰色选项表示当前不可选,因为它依赖的其他选项没打开。我曾经为了一个telnetd功能折腾了半天,最后发现是依赖的login没选上。嗯,这种依赖关系,后面我们会细讲。
4.4 配置项分类概览
整个配置界面分成几个大类。我画了张图,帮你快速建立整体认知:
这张图展示的是顶层分类。实际进入菜单后,你会发现每个大类下面还有好几层子菜单。别慌,一层层往下翻就行。
4.5 核心分类详解
4.5.1 Applets(核心工具集)
这是Busybox的灵魂所在。所有常用的Linux命令都在这里:ls、cp、mv、cat、grep、find……一共300多个。
每个命令都是一个独立的配置项。你选中它,它就会被编译进Busybox。不选,就没有。就这么简单。
我的经验:刚开始裁剪时,我总想着「多选几个,万一以后用得上呢」。结果做出来的Busybox有2MB多,放不进只有1MB Flash的板子。后来痛定思痛,只选了项目真正需要的40个命令,体积直接降到400KB。
4.5.2 Linux Module Utilities(模块工具)
这部分管理Linux内核模块的加载和卸载。包含:
insmod— 加载模块rmmod— 卸载模块modprobe— 智能加载(会处理依赖)lsmod— 列出已加载模块modinfo— 查看模块信息
如果你的系统不需要动态加载内核模块(比如所有驱动都编译进内核了),那这一整类都可以关掉。我曾经在一个物联网网关项目里就这么干的,省了不少空间。
4.5.3 系统工具类
这一块比较杂,但都很重要:
| 子分类 | 包含内容 | 裁剪建议 |
|---|---|---|
| Init Utilities | init、halt、reboot、poweroff | 嵌入式系统基本必选 |
| Login/Password | login、passwd、adduser、deluser | 单用户系统可关掉 |
| Shells | ash、hush、msh | 至少选一个,否则没法交互 |
| System Logging | syslogd、klogd、logread | 调试阶段建议保留 |
小技巧:按 / 键搜索时,输入关键词后按 Enter,会列出所有匹配项。选中一个按 Enter 可以直接跳转到那个配置位置。这比手动翻菜单快十倍。
4.6 配置的保存与加载
配置完成后,界面底部有几个操作按钮:
- Save — 保存到
.config文件 - Load — 加载已有的配置文件
- Exit — 退出(会提示是否保存)
默认保存路径是源码根目录下的 .config 文件。我建议你每次修改后,都备份一份:
cp .config config_my_project_v1
这样万一改坏了,还能快速恢复。我曾经手滑把整个配置清空了,还好有备份,不然得重头选一遍,那感觉……嗯,你懂的。
4.7 避坑指南
我曾经踩过的坑:
- 选了
CONFIG_FEATURE_SUID但没配好权限,结果ping命令一直报权限错误。 - 把
CONFIG_SYSROOT路径写错了,编译出来的Busybox在目标板上跑不起来。 - 忘了选
CONFIG_INSTALL_NO_USR,结果安装时文件全跑到了/usr目录下,跟预期不符。
这些坑,你提前知道,就能绕过去。
4.8 本章小结
配置系统说白了就是做选择题。你选什么功能,Busybox就编译什么功能。不选的,一个字节都不会多出来。
记住三个要点:
- 用
/搜索快速定位配置项 - 看清依赖关系(灰色选项就是缺依赖)
- 每次修改后备份
.config文件
下一章我们会深入每个配置项的具体含义,教你如何根据硬件资源做精准裁剪。到时候,我会拿一个真实的嵌入式项目做例子,一步步带你走完整个裁剪流程。
可可精品资料库