3、配置系统深度解析:make menuconfig界面详解、配置项分类(Applets、Build Options等)
好,咱们接着聊。上一章我们把 BusyBox 的源码目录结构摸了个大概,这一章,咱们直接进入实战核心——make menuconfig 配置界面。
说实话,我第一次打开这个界面时,也有点懵。满屏的选项,密密麻麻,跟 BIOS 设置似的。但别怕,这东西说白了就是个「开关矩阵」。你打开哪个功能,BusyBox 就编译哪个 Applet;你关掉,它就彻底消失。干净利落。
3.1 进入配置界面:make menuconfig 的前置条件
在终端里敲 make menuconfig 之前,你得确保两件事:
- 安装了 ncurses 库。这是终端图形界面的基础。Ubuntu 下装
libncurses-dev,CentOS 下装ncurses-devel。缺了这个,你会看到一堆乱码或者直接报错。 - 源码已经解压并进入顶层目录。这个不用我多说了吧。
我个人习惯在第一次配置前,先执行 make defconfig 生成一个默认配置。这样你看到的选项都是「推荐开启」的状态,不容易漏掉关键功能。
小技巧: 如果你在嵌入式板子上开发,建议先
make allnoconfig,然后手动勾选你需要的功能。这样编译出来的 BusyBox 最小,最干净。我在项目中就吃过「默认配置太大,Flash 塞不下」的亏。
3.2 界面布局:三栏结构,一目了然
进入 make menuconfig 后,你会看到这样一个界面:
┌───────────────────────────── BusyBox Configuration ─────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty submenu)│
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. │
│ Legend: [*] built-in [ ] excluded <M> module < > module capable │
│ ┌──────────────────────────────────────────────────────────────────────────────┐ │
│ │ --- BusyBox Settings --- │ │
│ │ [*] Support --long-options │ │
│ │ [ ] Enable -a option in 'du' (deprecated) │ │
│ │ [*] Enable -f option in 'du' (deprecated) │ │
│ │ [*] Enable -l option in 'du' (deprecated) │ │
│ │ [*] Enable -s option in 'du' (deprecated) │ │
│ │ [*] Enable -x option in 'du' (deprecated) │ │
│ │ [*] Enable -k option in 'du' (deprecated) │ │
│ │ [*] Enable -H option in 'du' (deprecated) │ │
│ │ [*] Enable -L option in 'du' (deprecated) │ │
│ │ [*] Enable -B option in 'du' (deprecated) │ │
│ │ [*] Enable -m option in 'du' (deprecated) │ │
│ │ [*] Enable -S option in 'du' (deprecated) │ │
│ │ [*] Enable -t option in 'du' (deprecated) │ │
│ │ [*] Enable -T option in 'du' (deprecated) │ │
│ │ [*] Enable -X option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │ [*] Enable --max-depth option in 'du' (deprecated) │ │
│ │ [*] Enable --threshold option in 'du' (deprecated) │ │
│ │ [*] Enable --time option in 'du' (deprecated) │ │
│ │ [*] Enable --separate-dirs option in 'du' (deprecated) │ │
│ │ [*] Enable --files0-from option in 'du' (deprecated) │ │
│ │ [*] Enable --human-readable option in 'du' (deprecated) │ │
│ │ [*] Enable --si option in 'du' (deprecated) │ │
│ │ [*] Enable --summarize option in 'du' (deprecated) │ │
│ │ [*] Enable --total option in 'du' (deprecated) │ │
│ │ [*] Enable --count-links option in 'du' (deprecated) │ │
│ │ [*] Enable --dereference-args option in 'du' (deprecated) │ │
│ │ [*] Enable --apparent-size option in 'du' (deprecated) │ │
│ │ [*] Enable --block-size option in 'du' (deprecated) │ │
│ │ [*] Enable --exclude-type option in 'du' (deprecated) │ │
│ │