【Linux】构建根文件系统之busybox

什么是busybox?

根文件系统里面其实就是各种应用程序的集合,例如sh、cd、ps这些命令。如果我们要将这些应用程序的源码都拿来进行编译然后再放进根文件系统里面,就会很麻烦不太实际。而busybox就是这些应用程序的集合,我们执行ls命令,实际上是执行busybox ls命令,因为ls命令实际上是指向busybox的链接,如下图。因此当我们想要知道ls命令做了什么事情的时候,就需要找到busybox的源码,去分析它做了什么事情。
在这里插入图片描述

busybox里面的init程序

上文我们讲到内核挂载根文件系统以后,会去启动第一个可用的init应用程序。但是init应用程序并不是linux启动的最终归宿,我们的最终目的是启动特定功能的应用程序,但是不同的产品,他们的应用程序肯定是不同的,因此init程序要启动哪个应用程序呢?我们猜测,应该会有一个配置文件,而init程序会读取这个配置文件,再去启动配置文件里面的程序,这样就可以根据不同的用户来启动不同的应用程序了。

上面说的配置文件其实就是/etc/inittab文件,这个文件的格式是:

<id>:<保留>:<动作><应用程序名>

其中init程序会读取这个配置文件。
init程序会将id会变成/dev/id,用来做终端,表示这个程序的标准输入,标准输出,标准错误定向到这个终端中。
init程序会根据动作的不同来运行这个应用程序。而init程序运行的这些应用程序,他们里面会调用库里面的函数,因此busybox里面肯定还包含了各种各样的库。

busybox里面的有什么东西?

根据上面的分析,我们知道busybox里面至少应该有下面这些东西:

  1. /dev/console:用来作为应用程序的标准输入、输出、错误
  2. /dev/null:用来当应用程序没有指定标准输入、输出、错误的时候指定它的终端
  3. init进程:第一个应用程序
  4. /etc/inittab中指定的应用程序:配置文件
  5. C库

个人理解

其实busybox更像是我们的应用程序集合,我们的电脑在装完系统以后会安装各种软件方便我们的使用,同样的busybox就是一个应用软件的市场,不过它更加底层,底层到第一个应用程序也是由busybox来生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值