BusyBox 是很多标准 Linux® 工具的一个单个可执行实现
BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox 称为 Linux 工具里的瑞士军刀
本文将探索 BusyBox 的目标,它是如何工作的,以及为什么它对于内存有限的环境来说是如此重要
BusyBox 的诞生 BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的
其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘
一张软盘可以保存大约 1
7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素
例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码
当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序
实际上, BusyBox 可以将大约 3
5MB 的工具包装成大约 200KB 大小
这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能
我们可以对 2
6 版本的 Linux 内核使用 BusyBox
BusyBox 是如何工作的
为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的 main 函数的参数开发了一个很少使用的特性
回想一下 C 语言的 main 函数的定义如下: 清单 1
C 的 main 函数 int main( int argc, char *argv[] ) 在