busybox 详解(一篇讲busybox很详细的文章)

busybox 详解(一篇讲busybox很详细的文章)

ID:47360304

大小:153.50 KB

页数:7页

时间:2019-08-03

busybox 详解(一篇讲busybox很详细的文章)_第1页
busybox 详解(一篇讲busybox很详细的文章)_第2页
busybox 详解(一篇讲busybox很详细的文章)_第3页
busybox 详解(一篇讲busybox很详细的文章)_第4页
busybox 详解(一篇讲busybox很详细的文章)_第5页
资源描述:

《busybox 详解(一篇讲busybox很详细的文章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、BusyBox简化嵌入式Linux系统BusyBox最初是由BrucePerens在1996年为DebianGNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘。一张软盘可以保存大约1.4-1.7MB的内容,因此这里没有多少空间留给Linux内核以及相关的用户应用程序使用。BusyBox揭露了这样一个事实:很多标准Linux工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执

2、行程序。实际上,BusyBox可以将大约3.5MB的工具包装成大约200KB大小。这就为可引导的磁盘和使用Linux的嵌入式设备提供了更多功能。我们可以对2.4和2.6版本的Linux内核使用BusyBox。BusyBox源代码树BusyBox的源代码树组织得很好。这些工具都基于它们的用途进行了分类,并存储在单独的子目录中。例如,网络工具和守护进程(如httpd、ifconfig等)都在./networking目录中;标准的模块工具(包括insmod、rmmod和lsmod)都在./modutils目录中;编辑器(例如vi和流编辑器,如awk和sed)都在./editors目录中。m

3、akefile配置、编译和安装所使用的各个文档都在这个目录树的根目录中。多体系结构支持可以简单地为BusyBox指定交叉编译器意味着我们可以为很多体系结构编译BusyBox。要为您的目标体系结构编译BusyBox,我们需要一个交叉编译器和一个已经为特定目标体系结构编译好的C库(uClibc或glibc)。BusyBox是如何工作的?为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox为传递给C的main函数的参数开发了一个很少使用的特性。回想一下C语言的main函数的定义如下:清单1.C的main函数intmain(intargc,char*argv[])在这个定义中,

4、argc是传递进来的参数的个数(参数数量),而argv是一个字符串数组,代表从命令行传递进来的参数(参数向量)。argv的索引0是从命令行调用的程序名。清单2给出的这个简单C程序展示了BusyBox的调用。它只简单地打印argv向量的内容。清单2.BusyBox使用argv[0]来确定调用哪个应用程序//test.c#includeintmain(intargc,char*argv[]){inti;for(i=0;i

5、序的名字。我们可以对这个可执行程序重新进行命名,此时再调用就会得到该程序的新名字。另外,我们可以创建一个到可执行程序的符号链接,在执行这个符号链接时,就可以看到这个符号链接的名字。清单3.在使用新命令更新BusyBox之后的命令测试$gcc-Wall-otesttest.c$./testarg1arg2argv[0]=./testargv[1]=arg1argv[2]=arg2$mvtestnewtest$./newtestarg1argv[0]=./newtestargv[1]=arg1$ln-snewtestlinktest$./linktestargargv[0]=./link

6、testargv[1]=argBusyBox使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于BusyBox中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用BusyBox了。BusyBox然后可以通过argv[0]来调用内部工具。配置并编译BusyBox我们可以从BusyBox的Web站点上下载最新版本的BusyBox(请参看参考资料一节的内容)。与大部分开放源码程序一样,它是以一个压缩的tarball形式发布的,我们可以使用清单4给出的命令将其转换成源代码树。(如果我们下载的版本不是1.1.1,那就请在这个命令中使用适当的版本号以及特定于这

7、个版本号的命令。)清单4.展开BusyBox$tarxvfzbusybox-1.1.1.tar.gz结果会生成一个目录,名为busybox-1.1.1,其中包含了BusyBox的源代码。要编译默认的配置(其中包含了几乎所有的内容,并禁用了调试功能),请使用defconfigmake目标:清单5.编译默认的BusyBox配置$cdbusybox-1.1.1$makedefconfig$make结果是一个相当大的BusyBox映像,不过这只是开始使用它的最简单

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。