BusyBox 中文文档 下载 App

defconfig 与预设配置 快速生成可用 BusyBox

defconfig 是什么

defconfig 是 BusyBox 开发团队维护的一套官方推荐配置,追求"够用且不太胖"的平衡。它的设计目标是:

当你不确定从哪开始时,make defconfig 永远是安全的第一步。

三种预设对比

# 官方推荐默认配置(最常用的起点)
make defconfig
# 产物体积:musl ~1.1MB,glibc ~1.3MB
# 适合:绝大多数嵌入式项目

# 全部开启(最大体积)
make allyesconfig
# 产物体积:~1.9MB
# 适合:开发测试、Android 应用打包完整工具集

# 全部关闭(最小起点)
make allnoconfig
# 产物体积:~50KB(只有 init + sh 的空壳)
# 适合:极端裁剪、明确知道自己需要什么

使用预设的推荐流程

cd busybox-1.36.1

# 第一步:用 defconfig 打底
make defconfig

# 第二步:进入 menuconfig 逐步裁剪
make menuconfig
# 关掉网络工具如果不需要
# 关掉日志工具如果不需要
# 确认静态编译已开

# 第三步:编译
make -j$(nproc)

# 第四步:检查产物大小
ls -la busybox
# 预期:~1.1MB(musl)

自定义预设

如果你反复构建同类项目,可以把自己的 .config 存下来作为定制预设:

# 编译完成后保存
cp .config my-embedded.config

# 下次直接用
cp my-embedded.config .config
make oldconfig     # 补齐新版本新增的配置项
make -j$(nproc)

make oldconfig 会加载已有 .config,遇到新版本新增的配置项时逐个询问(默认值直接回车接受),比重新跑 menuconfig 快得多。

randconfig 的玩法

make randconfig 会随机启用/禁用各个配置项,生成一个随机配置。这不是给生产用的,而是给 BusyBox 开发者测试各种配置组合下是否能编译通过——如果你在开发 BusyBox 本身,可以用它来做回归测试。

.config 文件内容示例

打开 defconfig 生成的 .config,前几行大概长这样:

#
# Automatically generated file; DO NOT EDIT.
# BusyBox Configuration
#
CONFIG_SYSLOGD=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_KLOGD=y
# CONFIG_FEATURE_KLOGD_KLOG_LOAD is not set
CONFIG_LOGGER=y
# ... 几百行

每一行的格式是 CONFIG_选项名=y(启用)、# CONFIG_选项名 is not set(禁用)、或 CONFIG_选项名=值(数值选项)。直接手改 .config 虽然可行但不推荐——依赖关系需要 menuconfig 来维护。