各位老铁们,大家好,今天由我来为大家分享BusyBox 是什么以及它在哪里使用?,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
BusyBox 是开源的,并根据GPL 授权。它创建于1995 年,旨在将可引导系统安装在一张软盘上。将命令捆绑到二进制文件中可以减少开销,并允许在看似独立的应用程序之间共享代码。
BusyBox 包含什么?
BusyBox 提供日常便利命令,通常感觉它们是shell 的一部分。尽管像ls 和cat 这样的用户态工具无处不在,但它们实际上驻留在独立于shell 的单独实用程序包中。许多Linux 发行版通过GNU coreutils 提供这些命令,但其他发行版则使用BusyBox。
该项目的工作原理是将熟悉的命令名称从/usr/bin 符号链接到BusyBox 二进制文件中。然后,可执行文件调用与作为其第一个参数传递的名称相对应的函数。
使用BusyBox命令mkdir运行
/usr/bin/busybox mkdir 使用GNU Coreutils 命令mkdir 运行
/usr/bin/mkdir 安装BusyBox 后,您可以透明地使用mkdir、passwd、ps、tar 和wget 等命令。命令以“小程序”的形式实现,并组合成强大的BusyBox 发行版。全套重约1MB。小程序是可移动的,因此可以进一步减小二进制文件的大小。您可以通过运行不带参数的busybox 来检查安装中可用的内容。
由于BusyBox 是为小型可启动系统创建的,因此它涵盖了在用户空间中启动和管理POSIX 系统所需的一切。这使得init 能够作为进程ID 1 运行并支持系统服务的最小实现。您可以采用BusyBox 作为常规init 或systemd 守护进程的轻量级替代品。
由于BusyBox 被有意设计为最小化,因此并非每个命令都实现其GNU 对应命令的所有功能。在异常情况下,您可能会发现一些缺失的标志或行为差异。这是BusyBox 精简特性的权衡之一。
BusyBox用在哪里?
BusyBox 可以在您需要监视磁盘使用情况的任何地方找到。它由Alpine 等最小操作系统以及嵌入式设备和移动外壳等特殊场景使用。
不运行传统操作系统发行版的Unix 衍生设备很可能会使用BusyBox。您可以在网络路由器、智能电视、现代汽车和物联网设备上找到它。这些设置中的每一个都需要在资源严重受限的环境中运行核心用户空间工具。
发送单个一体化二进制文件会更有效。它允许所有命令共享通用代码,而无需在磁盘上存储单独的库,从而减少冗余。由于BusyBox 提供了与其他实现的良好兼容性,并且在GPL 下获得许可,因此它通常是需要一组轻量级实用程序的环境的首选。
嵌入式设备供应商也受益于BusyBox 的模块化特性。物联网产品可能只需要几个关键实用程序即可提供其功能。分发修改后的BusyBox 二进制文件可以释放更多KB 的磁盘空间,这可以节省大量资金。
如何尝试BusyBox
您可以安装BusyBox,而无需替换当前的实用程序。使用包管理器添加busybox,然后将您选择的命令附加到busybox 二进制文件以运行小程序:
busybox mkdir test 这可确保使用命令的BusyBox 版本而不是shell 默认路径中的版本。
尝试BusyBox 的另一种方法是通过其官方Docker 镜像:
docker run -it –rm busybox 如果您安装了Docker,这将使您进入BusyBox 的shell 实现。您可以通过在图像名称后添加以下内容来运行特定命令:
docker run -it –rm busybox mkdir demousyBox 还有一个JavaScript 模拟器,允许您在Web 浏览器中尝试这些实用程序。
在大多数Linux 发行版上,您无法用BusyBox 完全替换coreutils。特定于发行版的命令和包通常是硬连线的,期望coreutils 实用程序可用。您的发行版通常会拒绝卸载此软件包,因为如果init 删除它,可能会导致系统无法运行。
如果您想依赖BusyBox,最好从使用它的发行版开始,然后将其他软件放在上面。 coreutils 当您需要检查小程序在特定场景中的响应方式时,如上所示添加BusyBox 效果很好。
综上所述
usyBox 是打包为单个二进制文件的用户级UNIX 实用程序的轻量级实现。您可以将其与Linux 内核结合起来创建一个没有其他依赖项的功能系统。
BusyBox 针对空间受限的环境进行了优化。这使其成为物联网设备等嵌入式产品的理想选择。您还可能会发现BusyBox 安装在最小但多功能的Linux 发行版上,例如Alpine Linux。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/146212.html
用户评论
铁树不曾开花
我之前完全没听过BusyBox!这篇博文解释得很清楚啊,原来它是嵌入式系统里常用的工具集,难怪那么小巧强大!以后遇到类似场景的话,一定优先考虑用BusyBox解决问题。
有11位网友表示赞同!
珠穆郎马疯@
终于明白为什么我的路由器和手机上可以用简单的命令就能完成很多操作了,原来它们使用了BusyBox!这真是太酷了!感觉自己马上要成为黑客了…
有6位网友表示赞同!
一生荒唐
这篇文章写得真好,一下子就明白了什么是BusyBox。我之前做嵌入式开发的时候,总是用各种大型软件包,现在想想如果当初使用BusyBox,那得多省事啊!
有8位网友表示赞同!
千城暮雪
虽然是入门级的介绍,但是对新手来说非常有帮助啊!我本来以为理解BusyBox需要专门学习一段时间的,看来只要看这篇博客就能搞清楚基本的概念了。
有8位网友表示赞同!
你身上有刺,别扎我
这篇文章好干货!里面有很多实际案例的说明,更容易让我理解BusyBox的使用场景。如果能再详细介绍一下一些常用的命令,那就更好了!
有14位网友表示赞同!
花海
BusyBox真是太小巧精进了啊。有时候遇到系统问题,可以用BusyBox来修复就足够了,省去安装各种软件包的麻烦!
有18位网友表示赞同!
有你,很幸福
我试着在Linux下使用BusyBox的时候遇到了很多问题,因为它和标准Linux命令不完全兼容。希望作者能完善这方面的说明。
有12位网友表示赞同!
拥抱
这篇博客写的太简单了,对已经熟悉嵌入式开发的人来说简直就是重复废话!如果能深入一些,讲解一下BusyBox的底层架构和实现原理,那才更吸引人阅读啊!
有5位网友表示赞同!
搞搞嗎妹妹
这个博客没有提到BusyBox的起源和历史发展,这对我来说还算是一个遗憾。能够了解BusyBox是如何诞生的,对它的理解会更加深入。
有14位网友表示赞同!
终究会走-
BusyBox确实很方便,但对于一些需要高性能的操作,它还是不够 robust 的啊…
有18位网友表示赞同!
抓不住i
我之前尝试用 BusyBox 编译一个简单的程序,遇到了很多问题,估计是由于它不支持最新的 compiler …
有5位网友表示赞同!
念旧是个瘾。
这篇文章介绍的例子比较少,希望能增加一些更实用的案例,这样更容易理解BusyBox的使用场景。
有13位网友表示赞同!
墨染天下
我觉得 BusyBox 作为入门级工具非常不错,但对于复杂的项目来说,还是需要使用更强大的开发工具箱吧…
有8位网友表示赞同!
面瘫脸
如果能提供更多关于 BusyBox 的资源链接,比如官方文档、社区论坛等,会更加方便大家深入学习和探讨。
有10位网友表示赞同!
强辩
BusyBox 这种类型工具非常实用,希望未来会有更多类似的开源项目出现,为开发者带来更多便利!
有18位网友表示赞同!
来自火星球的我
这篇博客介绍得不错,但我个人更想了解 BusyBox 和其他流行嵌入式开发工具的关系…
有5位网友表示赞同!
还未走i
我还在学习Embedded 系统,Busybox 是必不可少的一部分,希望能通过这篇文章进一步深入理解它.
有11位网友表示赞同!