git: https://git.busybox.net/busybox/在新窗口打开

Busybox是在linux内核启动后加载运行的用户空间程序,在源码设计上是基于C语言完成设计和开发的。与常规程序一样,Busybox的入口同样是main(),定义在libbb/appletlib文件的末尾处。

代码目录结构

在较老版本的Busybox中,对于Busybox的多个程序是全部塞进了一个名为utility.c的文件中,后来更改了Busybox的整体源码结构和设计,将这些程序拆分成了各个工具模块。

目录名称功能说明
docs相关支持文档
applets实现applets框架的文件。目录中包含了几个main()的文件
applets_sh此目录包含了几个作为shell脚本实现的applet示例。在“make install”时不会被自动安装,需要使用时,手动处理
testsuite命令测试套
includebusybox项目的头文件
configsbusybox自带的默认配置文件
libbb与busybox实现相关的库文件(可复用函数)
arch包含用于不同体系架构的makefile文件。约束busybox在不同架构体系下的编译构建过程
archival与压缩相关命令的实现源文件。
debianutils针对Debian的套件。
initinit进程的实现源码目录
console-tools与控制台相关的一些命令
klibc-utilsklibc命令套件
e2fsprogs针对Linux Ext2 FS prog的命令。例如chattr、lsattr
coreutils常用的一些核心命令。例如chgrp、rm、cat等
editors常用的编辑命令。例如diff、vi等
networking与网络相关的命令,例如arp
findutils用于查找的命令,例如find、grep等
libpwdgrplibpwdgrp相关的命令
loginutils与用户管理相关的命令
mailutils与mail相关的命令套件
miscutils该文件下是一些杂项命令,针对特定应用场景
modutils与模块相关的命令
printutilsPrint相关的命令
procps与内存、进程相关的命令
runit与Runit实现相关的命令
shell与shell相关的命令,例如ash、mash等
sysklogd系统日志记录工具相关的命令
util-linuxLinux下常用的命令,主要与文件系统操作相关的命令。