资料介绍
BusyBox 的诞生
BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。
BusyBox 许可证
BusyBox 是按照 GNU General Public License(GPL)许可证发行的。这意味着如果我们在一个项目中使用 BusyBox,就必须遵守这个许可证。我们可以在 BusyBox Web 站点(请参看本文后面参考资料一节的内容)上看到这个许可证的内容。BusyBox 团队似乎正忙于监视违反这个许可证的情况。实际上,他们维护了一个 “Hall of Shame” 页面来说明违反者的情况。
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。实际上, BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。
BusyBox 是如何工作的?
为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的 main 函数的参数开发了一个很少使用的特性。回想一下 C 语言的 main 函数的定义如下:
POSIX 环境尽管 BusyBox 的目标是提供一个相当完整的 POSIX(可移植操作系统接口)环境,这是一个期望,而不是一种需求。这些工具虽然并不完整,但是它们提供了我们期望的主要功能。
清单 1. C 的 main 函数
int main( int argc, char *argv[] )
在这个定义中,argc是传递进来的参数的个数(参数数量),而argv是一个字符串数组,代表从命令行传递进来的参数(参数向量)。argv的索引 0 是从命令行调用的程序名。
清单 2 给出的这个简单 C 程序展示了 BusyBox 的调用。它只简单地打印argv向量的内容。
清单 2. BusyBox 使用 argv[0] 来确定调用哪个应用程序
// test.c
#include 《stdio.h》
int main( int argc, char *argv[] )
{
int i;
for (i = 0 ; i 《 argc ; i++) {
printf(“argv[%d] = %s\n”, i, argv[i]);
}
return 0;
}
调用这个程序会显示所调用的第一个参数是该程序的名字。我们可以对这个可执行程序重新进行命名,此时再调用就会得到该程序的新名字。另外,我们可以创建一个到可执行程序的符号链接,在执行这个符号链接时,就可以看到这个符号链接的名字。
清单 3. 在使用新命令更新 BusyBox 之后的命令测试
$ gcc -Wall -o test test.c
$ 。/test arg1 arg2
argv[0] = 。/test
argv[1] = arg1
argv[2] = arg2
$ mv test newtest
$ 。/newtest arg1
argv[0] = 。/newtest
argv[1] = arg1
$ ln -s newtest linktest
$ 。/linktest arg
argv[0] = 。/linktest
argv[1] = arg
BusyBox 使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于 BusyBox 中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用 BusyBox 了。BusyBox 然后可以通过argv[0]来调用内部工具。
配置并编译 BusyBox
我们可以从 BusyBox 的 Web 站点上下载最新版本的 BusyBox(请参看参考资料一节的内容)。与大部分开放源码程序一样,它是以一个压缩的 tarball 形式发布的,我们可以使用清单 4 给出的命令将其转换成源代码树。(如果我们下载的版本不是 1.1.1,那就请在这个命令中使用适当的版本号以及特定于这个版本号的命令。)
清单 4. 展开 BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。
BusyBox 是按照 GNU General Public License(GPL)许可证发行的。这意味着如果我们在一个项目中使用 BusyBox,就必须遵守这个许可证。我们可以在 BusyBox Web 站点(请参看本文后面参考资料一节的内容)上看到这个许可证的内容。BusyBox 团队似乎正忙于监视违反这个许可证的情况。实际上,他们维护了一个 “Hall of Shame” 页面来说明违反者的情况。
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。实际上, BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。
BusyBox 是如何工作的?
为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的 main 函数的参数开发了一个很少使用的特性。回想一下 C 语言的 main 函数的定义如下:
清单 1. C 的 main 函数
int main( int argc, char *argv[] )
在这个定义中,argc是传递进来的参数的个数(参数数量),而argv是一个字符串数组,代表从命令行传递进来的参数(参数向量)。argv的索引 0 是从命令行调用的程序名。
清单 2 给出的这个简单 C 程序展示了 BusyBox 的调用。它只简单地打印argv向量的内容。
清单 2. BusyBox 使用 argv[0] 来确定调用哪个应用程序
// test.c
#include 《stdio.h》
int main( int argc, char *argv[] )
{
int i;
for (i = 0 ; i 《 argc ; i++) {
printf(“argv[%d] = %s\n”, i, argv[i]);
}
return 0;
}
调用这个程序会显示所调用的第一个参数是该程序的名字。我们可以对这个可执行程序重新进行命名,此时再调用就会得到该程序的新名字。另外,我们可以创建一个到可执行程序的符号链接,在执行这个符号链接时,就可以看到这个符号链接的名字。
清单 3. 在使用新命令更新 BusyBox 之后的命令测试
$ gcc -Wall -o test test.c
$ 。/test arg1 arg2
argv[0] = 。/test
argv[1] = arg1
argv[2] = arg2
$ mv test newtest
$ 。/newtest arg1
argv[0] = 。/newtest
argv[1] = arg1
$ ln -s newtest linktest
$ 。/linktest arg
argv[0] = 。/linktest
argv[1] = arg
BusyBox 使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于 BusyBox 中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用 BusyBox 了。BusyBox 然后可以通过argv[0]来调用内部工具。
配置并编译 BusyBox
我们可以从 BusyBox 的 Web 站点上下载最新版本的 BusyBox(请参看参考资料一节的内容)。与大部分开放源码程序一样,它是以一个压缩的 tarball 形式发布的,我们可以使用清单 4 给出的命令将其转换成源代码树。(如果我们下载的版本不是 1.1.1,那就请在这个命令中使用适当的版本号以及特定于这个版本号的命令。)
清单 4. 展开 BusyBox
$ tar xvfz busybox-1.1.1.tar.gz
$
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?
- 第六课 数控机床电路详解 0次下载
- 详解SUNLORD顺络LED照明 18次下载
- 开关电源的工作原理及电路组成详解 285次下载
- 开关电源原理及输入电路详解 126次下载
- Linux系统中EXP命令详解质量汇总 1次下载
- Power BI服务所包含的信息及数据详解 0次下载
- BLE实验详解之蓝牙温度计设计方案 25次下载
- BLE实验详解之蓝牙血压计设计方案 39次下载
- 自动控制原理习题详解第二版下载 0次下载
- 《Python开发技术详解》-随书附带程序 0次下载
- 实验五 基于busybox的根文件系统制作实验-2016 10次下载
- 嵌入式MostaVistaLinux操作系统的BusyBox构建 0次下载
- busybox-1.23.2 1次下载
- 用Busybox制作嵌入式Linux根文件系统
- 详解MySQL多实例部署 1.1k次阅读
- 全志Tina Linux下busybox init简介 1.9k次阅读
- Linux轻量级工具集合Busybox的特点和使用 2.4k次阅读
- kafka相关命令详解 1.9k次阅读
- BGA和CSP封装技术详解 4.7k次阅读
- STM32库函数SystemInit()详解 5.7k次阅读
- 无功补偿原理基础知识详解 1.6k次阅读
- WAT技术详解 1.8k次阅读
- 物理设计中的问题详解 1.7k次阅读
- LC振荡电路原理详解 4.1k次阅读
- 积分与微分电路原理详解 3.2k次阅读
- 详解String对象的内存分配 2.8k次阅读
- 在QEMU上用Busybox模拟ARM文件系统的步骤 4.1k次阅读
- Prelink的交叉编译和使用详解 4.5k次阅读
- DNA螺旋台灯制作详解 4.4k次阅读
下载排行
本周
- 1FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
- 4.22 MB | 2次下载 | 免费
- 2AC/DC 225W 开板电源 LOF225-23BxxR2系列数据手册
- 2.70 MB | 1次下载 | 1 积分
- 3晶振技术解析---电子设备的“时钟心脏”
- 1.55 MB | 1次下载 | 免费
- 4AU6830M 集成音频 DSP 的 2 × 41W 数字型 Class D 音频功率放大器数据手册
- 1.86 MB | 次下载 | 免费
- 5AU6815E 集成音频 DSP 的2×32W数字型 Class D 音频功率放大器数据手册
- 1.21 MB | 次下载 | 免费
- 6I-PEX 82652-100B-02-D_CABLINE-CA系列40P极细同轴线束SI设计图纸
- 293.34 KB | 次下载 | 免费
- 7I-PEX 82863-100B-02-D_CABLINE-CA系列PCIe/USB4极细同轴线图纸
- 301.83 KB | 次下载 | 免费
- 8YA-002S屏幕挂灯说明书
- 1.25 MB | 次下载 | 免费
本月
- 1人形机器人执行、感知系统技术及市场解析
- 3.52 MB | 5次下载 | 免费
- 2WD431产品规格书
- 1.32 MB | 3次下载 | 免费
- 3A-29回音消除模块
- 1.28 MB | 2次下载 | 免费
- 4 双麦阵列回音消除及降噪模块 A-47 说明书
- 1.96 MB | 2次下载 | 免费
- 5FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
- 4.22 MB | 2次下载 | 免费
- 6A-68语音处理模组规格书V1
- 1.47 MB | 1次下载 | 免费
- 7A-29P回音消除模块
- 1.42 MB | 1次下载 | 免费
- 8瑞芯微RK3562开发板资料-飞凌嵌入式
- 2.80 MB | 1次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935137次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233095次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191469次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183361次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81608次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73836次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App





创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论