Busybox增加新功能软件需要遵循以下步骤:
- 编译菜单中添加
- 制作Applet的原型
- 修改Makefile
- 移植Applet
- 调试Applet
一、编辑菜单
1、在Busybox源码根目录下创建「mtd-utils」目录
mkdir mtd-utils
2、创建「mtd-utils/Config.in」文件
touch mtd-utils/Config.src
3、在根目录下的「Config.in」文件中追加
source modutils/Config.in
source mtd-utils/Config.in ←追加
source util-linux/Config.in
4、在「mtd-utils/Config.src」的文件内容如下所示
menu "MTD utils"
config MTD_DEBUG
bool "mtd_debug"
default n
help
Enable support mtd_debug
endmenu
5、查看UI界面配置
make menuconfig


二、制作Applet的原型
设计一个Applet原型,简单起见,只输出「hello」字符。大体需要下面3部:
- 在Applet源文件中定义<Applet_name>_main函数
- 在「include/applets.h」文件中添加<Applet_name>_main函数声明
- 在「include/usage.h」文件中添加Applet帮助
1、创建「mtd-utils/mtd_debug.c」文件
#include "libbb.h"
int mtd_debug_main(int argc, char **argv) {
printf("hello");
}
2、在「include/applets.src.h」文件中添加<Applet_name>_main函数声明
IF_MTD_DEBUG(APPLET(mtd_debug, BB_DIR_BIN, BB_SUID_DROP))
3、在「include/usage.src.h」文件中添加Applet帮助
#define mtd_debug_trivial_usage \
"\n"
#define mtd_debug_full_usage "\n\n" \
"\n"
#define mtd_example_usage \
"\n"
4、创建「mtd-utils/Kbuild.src」文件
lib-$(CONFIG_MTD_DEBUG) += mtd_debug.o
INSERT
三、修改Makefile
libs-y:= \
archival/ \
(...)
modutils/ \
mtd-utils/ \ ←这里
(..)
四、配置编译项
make menuconfig后选择「mtd_debug」后编译。如果有以下输出则表示修改正确。
$ ./busybox mtd_debug
hello