4、配置系统入门:make menuconfig界面导航、配置项分类、保存与加载配置
好,咱们进入正题。上一章我们把BusyBox源码拉下来了,也试了默认编译。但说实话,默认配置编译出来的东西又大又全,很多功能你用不上。这就像买了个瑞士军刀,结果你只需要个开瓶器。所以,裁剪的第一步,就是学会怎么跟配置界面打交道。
4.1 启动配置界面
在源码根目录下,执行这条命令:
make menuconfig
你会看到一个蓝底白字的界面。嗯,别被吓到,这玩意儿看着复古,但用起来很顺手。我个人习惯在终端窗口最大化后再执行,这样显示的内容更多,不用来回滚动。
sudo apt-get install libncurses5-dev。CentOS用yum install ncurses-devel。
4.2 界面导航:键盘就是你的鼠标
这个界面不支持鼠标,全靠键盘操作。别慌,常用的键就那么几个:
| 按键 | 功能 |
|---|---|
| ↑ ↓ | 上下移动光标 |
| Enter | 进入子菜单 / 确认选择 |
| Space | 切换选项状态(选中/取消/模块) |
| Y / N | 直接选中或取消 |
| Esc + Esc | 返回上一级菜单 |
| ? | 查看当前选项的帮助信息 |
| / | 搜索功能(这个很实用) |
你想想看,几百个配置项,一个个翻多累。用/键搜索,直接定位到你关心的功能。我在项目中经常用这个,比如要找telnet相关的配置,按/输入telnet,立马跳转。
4.3 配置项的分类逻辑
BusyBox的配置项分成了几大类。我刚开始接触时也觉得眼花,但摸清规律后就好办了。主菜单大致长这样:
- Busybox Settings — 全局设置,比如是否支持长选项、安装路径等
- Applets — 各个命令的开关,这是裁剪的核心区域
- Linux Module Utilities — 内核模块相关工具
- Linux System Utilities — 系统管理工具,比如mount、fdisk
- Network Utilities — 网络工具,ping、ifconfig、telnet都在这里
- Process Utilities — 进程管理,ps、top、kill
- Shells — 支持的shell类型,ash、hush等
- Miscellaneous Utilities — 杂项,不好归类的放这里
每个大类下面还有子菜单。比如你进Network Utilities,里面会列出几十个网络命令,每个都可以单独开关。
arp?那就取消它。每关掉一个,体积就小一点。
4.4 三种选项状态
每个配置项前面有个括号,显示三种状态之一:
[*]— 编译进BusyBox二进制文件(静态包含)[ ]— 不编译(彻底移除)<M>— 编译成独立模块(BusyBox里较少用,主要是内核配置常见)
按Space键可以在三者之间循环切换。我个人习惯,对于确定要用的功能,直接按Y选中;确定不要的,按N取消。这样比按Space循环快得多。
4.5 保存与加载配置
配置改完后,怎么保存?
用方向键把光标移到界面底部的< Save >按钮,按Enter。它会问你保存到哪个文件。默认是.config,直接回车就行。
加载配置也类似。在界面底部选< Load >,输入配置文件的路径。默认加载的是.config。如果你想用别的配置,比如我经常备份几个不同版本的.config文件,就在这里指定路径。
make才会按新配置编译。如果你改了配置但没保存就退出,那改的东西全丢了。我曾经犯过这个错,调了半天配置,一退出全没了,气得拍桌子。
4.6 配置文件的本质
其实.config就是个文本文件。你可以用cat .config看看里面长什么样:
CONFIG_BUSYBOX=y
CONFIG_FEATURE_INSTALLER=y
# CONFIG_TELNET is not set
CONFIG_PING=y
...
每一行就是一个配置项。=y表示选中,is not set表示没选。你甚至可以手动编辑这个文件,但我建议还是用menuconfig,因为它会帮你检查依赖关系。比如你选了A,但A依赖B,如果你没选B,它会自动帮你选上,或者给出提示。
4.7 我的裁剪小习惯
嗯,这里分享几个我自己的做法:
- 先全关,再开需要的。 执行
make allnoconfig,把所有功能都关掉,然后只打开你需要的。这样出来的体积最小。 - 备份配置文件。 每调完一版,把
.config复制一份,比如config_v1、config_v2。方便回退。 - 善用搜索。 不确定某个命令在哪个分类下?按
/搜一下,直接定位。 - 看帮助。 光标移到某个配置项上,按
?,会显示这个命令的用途、依赖关系。别瞎猜,看一眼帮助就明白了。
4.8 一张图看懂配置流程
下面这张图,是我自己总结的配置流程。你照着走,不会乱。
说白了,配置就是「选你需要的,关你不需要的」。别想得太复杂。刚开始你可能拿不准哪些该留哪些该删,没关系,多试几次就熟了。我刚开始做裁剪时,第一版编译出来2MB,后来慢慢优化到500KB,都是这么一点点试出来的。
好,这一章就到这儿。配置界面你学会了,下一章咱们就动手,真正开始裁剪一个最小系统。
可可精品资料库