第19章强大的命令系统BusyBox讲述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第19章 强大的命令系统BusyBox BusyBox是嵌入式系统常用的一个命令系统,它的功能强大、占用存储容量小,这些优点都适合嵌入式系统。本章从BusyBox的原理出发介绍了BusyBox的编译安装,以及如何应用在嵌入式系统。BusyBox的编译安装都是比较容易的,读者可以轻易的把BusyBox移植到嵌入式开发板上。本章主要内容如下: BusyBox起源 BusyBox工作原理 在PC机上安装BusyBox 移植BusyBox到ARM开发版 19.1 BusyBox简介 BusyBox是Linux平台的一个工具集合。BusyBox可以包含最基本的系统命令如ls和cat,还可以包含功能更复杂的程序如grep和find,甚至可以把HTTP服务器也集成在一个软件包内。BusyBox把Linux系统常用的命令和工具以及服务程序集成在一个可执行文件内,通常体积在1MB字节左右。如果单独存放每条命令,可能需要几MB甚至几十MB存储空间,这对存储空间紧张的嵌入式系统来说是很难接受的。BusyBox是很适合嵌入式系统的,本节介绍BusyBox的工作原理和安装流程。 19.1.1 简单易懂的BusyBox BusyBox项目最初是在1996年发起的,当时嵌入式系统并没有开始流行。BushBox最初的目的是被设计为一个安装在软盘上的命令系统,因为当时还没有可以移动的大容量可擦写存储介质,软盘是最常用的存储介质。使用过软盘的读者知道,它的容量很小,对于今天的计算机来说几乎没有什么用武之地。BusyBox可以把常见的Linux命令打包编译成一个单一的可执行文件。通过建立链接,用户可以像使用传统的命令一样是用BusyBox。 BusyBox的出现是基于Linux共享库。对于大多数Linux工具来说,不同的命令可以共享许多东西。如查找文件的命令grep和find,虽然功能不完全相同,但是两个程序都会用到从文件系统搜索文件的功能,这部分代码可以是相同的。BusyBox的聪明之处在于把不同工具的代码,以及公用的代码都集成在一起,从而大大减小了可执行文件的体积。 19.1.2 BusyBox工作原理 BusyBox利用了shell传递给C语言main()函数的参数,回想一下C语言main()函数的定义: int main( int argc, char *argv[] ) 19.1.3 安装BusyBox 安装BusyBox需要从源代码开始编译。首先是获取源代码,从BusyBox的官方网站(/downloads/)下载。这个链接里有多个版本,但是高版本的BusyBox存在一些问题,编译过程中容易出错。 19.2 交叉编译BusyBox BusyBox最大的特点是占用存储空间小,在PC机使用优势不明显。本节介绍如果在嵌入式系统上配置安装BusyBox。交叉编译BusyBox需要有交叉编译环境,在第18章已经讲解如何建立交叉编译环境,现在使用已经建立好的环境为例介绍交叉编译BusyBox。 (1)首先查看19.1.3节编译得到的busybox可执行文件的类型: (2)在交叉编译BusyBox之前先分析一下BusyBox的Makefile。 (3)至此,已经找到如何使用交叉编译,下面可以编译ARM开发板使用的BusyBox了。 (4)使用“make menuconfig”命令进入BusyBox的配置界面,选择Build Options子菜单。 (5)配置完毕后,保存退出。重新编译BusyBox,编译完成后,查看可执行文件类型。 19.2 交叉编译BusyBox 19.3 使用BusyBox 使用BusyBox的最终目的是在嵌入式开发板上应用。本节从BusyBox在嵌入式系统中的初始化过程出发,介绍如何移植到开发板。其中,需要读者了解第16章介绍的嵌入式Linux启动流程,便于理解本节的内容。 19.3.1 BusyBox初始化 在第16章Linux启动流程介绍了Linux内核的初始化代码kernel/init/main.c里有几个语句如下: if (execute_command) execve(execute_command,argv_init,envp_init); execve(/sbin/init,argv_init,envp_init); 19.3.2 目标板BusyBox安装 了解了BusyBox的工作流程后,安装BusyBox就变得很简单了。主要的任务是设置好BusyBox与Linux内核的结合点。 可以通过两种手段设置BusyBox到开发板。一种方法是在PC机上制作cramfs镜像。这种方法好处是便于操作,但是需要注意的是BusyBox的路径不能搞错。缺点是出错后修改麻烦,每次都需要烧写开发板的Flash。 19.4

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档