明星廓(http://www.65803.net)全站已换成自适配模板,大家在电脑和手机都可以顺畅浏览本站内容。

busybox是什么意思(busybox是如何工作的)

百科知识大全 aty25 1次浏览 0个评论

  

BusyBox的诞生BusyBox最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。

 

  

busybox是什么意思(busybox是如何工作的)

 

  BusyBox的诞生。

  BusyBox最初是由Bruce Perens在1996年为Debian GNU/Linux安装盘而写的。目标是在软盘上创建一个可引导的GNU/Linux系统,它可以用作安装盘和急救盘。一张软盘可以存储大约1.4-1.7兆字节的内容,所以没有太多的空间给Linux内核和相关的用户应用程序。

  BusyBox是一个软件,集成了300多个最常用的Linux命令和工具。BusyBox包含一些简单的工具,如ls、cat、echo等。它还包含一些更大、更复杂的工具,如grep、find、mount和telnet。

  有些人把BusyBox称为Linux工具中的瑞士军刀。简而言之,BusyBox就像一个大工具箱,它集成并压缩了许多Linux的工具和命令,还包含了安卓系统的独立外壳。

  BusyBox揭示了这样一个事实,即许多标准的Linux工具可以共享许多公共元素。例如,许多基于文件的工具(如grep和find)需要代码来搜索目录中的文件。当这些工具被合并成一个可执行程序时,它们可以共享这些相同的元素,这可以产生一个更小的可执行程序。

  实际上,BusyBox可以将大约3.5兆字节的工具打包成大约200兆字节。这为使用Linux的可引导磁盘和嵌入式设备提供了更多功能。对于Linux内核版本2.4和2.6,我们可以使用BusyBox。

  BusyBox是如何工作的?

  为了使一个可执行程序看起来像许多可执行程序,BusyBox开发了一个很少使用的特性,用于传递给c语言主函数的参数。回想一下,c语言中主函数的定义如下。

  int main( int argc,char *argv?。

  要手动配置BusyBox,请使用以下命令?。

  $ make menuconfig。

  $ make!

  这为我们提供了可以调用的BusyBox的二进制文件。下一步是围绕BusyBox构建一个环境,包括将标准Linux命令重定向到BusyBox二进制文件的符号链接。我们可以使用以下命令简单地完成这个过程。

  $制作安装。

  默认情况下,这将创建一个新的本地子目录_install,其中包含基本的Linux环境。在这个根目录下,你会发现一个链接到BusyBox的linuxrc程序。这个linuxrc程序在构建安装盘或急救盘(允许预先模块化引导)时非常有用。在这个根目录中,还有一个包含操作系统二进制文件的/sbin子目录。

  还有一个包含用户二进制文件的/bin目录。当构建软盘分发或嵌入式初始内存磁盘时,我们可以将这个_install目录迁移到目标环境。我们也可以使用make程序的PREFFICE选项将安装目录重定向到另一个位置。例如,以下命令使用/tmp/newtarget根目录来安装这些符号链接,而不是。/_安装目录。

  $ make PREFX =/tmp/new target install!

  用安装make目标创建的符号链接来自busybox.links文件。该文件是在编译BusyBox时创建的,它包含已配置的命令列表。安装时,将检查busybox.links文件,以确定要创建的符号链接。

  也可以在运行时使用BusyBox动态创建到BusyBox的命令行链接。此功能可通过CONFIG_FEATURE_INSTALLER选项启用,该选项可在运行时执行,如下所示?。

  美元。/busybox – install -s。

  $!

  -s选项强制创建这些符号链接(否则将创建硬链接)。此选项要求系统中存在/proc文件系统。

  BusyBox编译选项。

  BusyBox包含几个编译选项,可以帮助我们编译和调试正确的BusyBox。

  表1 .BusyBox的几个制作选项。

  当定义配置时,我们只需要输入make来实际编译BusyBox二进制文件。例如,要为所有应用程序编译BusyBox,我们可以执行以下命令。

  $ make allyesconfig!

  $ make。

  $。

  BusyBox命令支持的选项!

  BusyBox中的命令不支持所有可用选项,但它们都包含常用选项。如果我们需要知道一个命令可以支持哪些选项,我们可以使用- help选项来调用这个命令。

  美元。/busybox wc – help。

  BusyBox 1 . 1 . 1(2006 . 04 . 09-15:27+0000)多调用二进制。

  用法:wc [OPTION]…[文件]..。

  打印每个文件的行数、字数和字节数,如果。

  指定了多个文件。没有文件时,读取标准输入。

  选项。

  -c打印字节计数。

  -我打印换行符。

  -我打印最长一行的长度。

  -w打印字数。

  $。

  这些特定数据只能在启用CONFIG_FEATURE_VERBOSE_USAGE选项时使用。没有这个选项,我们无法获得这些详细的数据,但是它可以节省大约13 KB的空间。

  向BusyBox添加新命令。

  向BusyBox添加新命令非常简单,因为它有一个定义良好的体系结构。第一步是为新命令的源代码选择一个位置。我们应该根据命令的类型(网络、外壳等)来选择位置。)并使其与其他命令保持一致。

  这一点非常重要,因为这个新命令最终会出现在菜单配置菜单中(在下面的示例中,是杂项实用程序菜单)。

  对于这个例子,我把这个新命令叫做newcmd,并把它放在。/miscutils目录。这个新命令的源代码如下!

  #包括busybox.h。

  int newcmd_main( int argc,char *argv[])!

  {。

  int I?。

  printf(newcmd调用:\ n)。

  对于(I = 0;i argci++) {。

  printf(arg[%d] = %s\n,I,argv[I])!

  {}。

  返回0。

  {}。

  接下来,我们将把这个新命令的源代码添加到所选子目录中的Makefile.in中。在这个例子中,我更新了它所创建的。/miscutils/Makefile.in文件。按字母顺序添加新命令,以保持与现有命令的一致性。

  MICUTILS-$(CONFIG _ MT)+= MT . o?。

  MISCUTILS-$(CONFIG _ NECMD)+= NECMD . o!

  MISCUTILS-$(CONFIG _ RUN LEVEL)+= RUN LEVEL . o。

  接下来,更新。/miscutils目录,以便在配置过程中可以看到新命令。文件名为Config.in,新命令按字母顺序添加。

  config CONFIG _ NEWCMD。

  bool newcmd。

  默认n?。

  帮助?。

  newcmd是一个新的测试命令。

  这个结构定义了一个新的配置项(通过config关键字)和一个配置选项(CONFIG_NEWCMD)。新命令可以启用或禁用,因此我们对配置的菜单属性使用布尔值。

  这个命令在默认情况下是禁用的(n表示否),所以我们可以在最后放一个简短的帮助描述。在。/scripts/config/kconfig-language . txt文件的源代码树,我们可以看到完整的配置语法语法。

  接下来,您需要更新。/include/applets.h文件来包含这个新命令。将下面一行添加到该文件中,并记住按字母顺序排列。维护这个订单非常重要,否则我们的订单将找不到。

  将命令添加到小程序中。

  使用_新目录(小应用程序(新目录、新目录、主目录、用户目录、SUID目录)。

  这定义了命令名(newcmd),它在Busybox源代码中的函数名(newcmd_main),应该在哪里为这个新命令创建一个链接(在这种情况下,它在/usr/bin目录中),以及这个命令是否有权设置用户id(在这种情况下,否)。

  倒数第二步是向添加详细的帮助信息。/include/usage.h文件。从这个文件的例子中可以看出,使用信息可能非常详细。在这个例子中,我只添加了一点信息,这样我就可以编译这个新命令。

  将帮助信息添加到用法中。

  #定义newcmd _平凡_用法无?。

  #定义新cmd _ full _用法无。

  最后一步是启用新命令(通过进行菜单配置,然后在杂项实用程序菜单中启用此选项),然后使用make编译BusyBox。

  有了新的BusyBox,我们可以测试这个新命令。

  美元。/busybox newcmd参数1!

  newcmd呼叫。

  arg[0] = newcmd。

  参数[1] =参数1。

  美元。/busybox newcmd -帮助。

  BusyBox 1 . 1 . 1(2006 . 04 . 12-13:47+0000)多调用二进制。

  用法:newcmd无。

  没有人。

  这样,BusyBox开发人员开发了一个优秀但易于扩展的工具BusyBox。

  结束语。

  BusyBox是一个很好的工具,可以用有限的内存和基于软盘的系统来构建嵌入式系统。BusyBox将许多必要的工具放入一个可执行程序中,并允许它们共享代码的相同部分,从而大大减小了它们的大小。BusyBox对于嵌入式系统来说是一个非常有用的工具,所以值得花些时间去探索。

  工作busybox是什么。


明星廓 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明busybox是什么意思(busybox是如何工作的)
喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址