您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

如何在 Linux 上使用 BusyBox

时间:2021-10-11 09:52:20  来源:Linux中国  作者:Seth Kenlon

BusyBox 是一个开源(GPL)项目,提供了近 400 个常用命令的简单实现。

我们很容易认为 linux 的命令是理所当然的。当你安装 Linux 时,它们与系统捆绑在一起,而我们常常不问为什么它们会在那里。一些基本的命令,如 cd、kill和 echo,并不总是独立的应用程序,而是实际上内置于你的 shell 中。其他如ls、mv和cat是核心工具包(通常是 GNUcoreutils)的一部分。但在开源的世界里,总是有一些替代品,其中最有趣的是BusyBox。

 

Linux 中的 BusyBox 简介

BusyBox 是一个开源(GPL)项目,提供近 400 个常用命令的简单实现,包括 lsmvlnmkdirmorepsgzipbzip2targrep。它还包含了编程语言awk、流编辑器sed、文件系统检查工具fsckrpmdpkg软件包管理器,当然还有一个可以方便的访问所有这些命令的 shell(sh)。简而言之,它包含了所有 POSIX 系统需要的基本命令,以执行常见的系统维护任务以及许多用户和管理任务。

事实上,它甚至包含一个 init命令,可以作为 PID 1 启动,以作为所有其它系统服务的父进程。换句话说,BusyBox 可以作为systemd、OpenRC、sinit、init 和其他初始化系统的替代品。

BusyBox 非常小。作为一个可执行文件,它不到 1MB,所以它在 嵌入式、边缘计算和物联网领域很受欢迎,因为这些场景的存储空间是很宝贵的。在容器和云计算的世界里,它作为精简的 Linux 容器镜像的基础镜像也很受欢迎。

 

极简主义

BusyBox 的部分魅力在于它的极简主义。它的所有命令都被编译到一个二进制文件里(busybox),它的手册只有 81 页(根据我对man送到pr管道的计算),但它涵盖了近 400 条命令。

作为一个例子的比较,这是 “原版” 的 useradd —help的输出:

 -b, --base-dir BASE_DIR       base directory for home
 -c, --comment COMMENT         GECOS field of the new account
 -d, --home-dir HOME_DIR       home directory of the new account
 -D, --defaults                print or change the default config
 -e, --expiredate EXPIRE_DATE  expiration date of the new account
 -f, --inactive INACTIVE       password inactivity
 -g, --gid GROUP               name or ID of the primary group
 -G, --groups GROUPS           list of supplementary groups
 -h, --help                    display this help message and exit
 -k, --skel SKEL_DIR           alternative skeleton dir
 -K, --key KEY=VALUE           override /etc/login.defs
 -l, --no-log-init             do not add the user to the lastlog
 -m, --create-home             create the user's home directory
 -M, --no-create-home          do not create the user's home directory
 -N, --no-user-group           do not create a group with the user's name
 -o, --non-unique              allow users with non-unique UIDs
 -p, --password PASSWORD       encrypted password of the new account
 -r, --system                  create a system account
 -R, --root CHROOT_DIR         directory to chroot into
 -s, --shell SHELL             login shell of the new account
 -u, --uid UID                 user ID of the new account
 -U, --user-group              create a group with the same name as a user

而这是是同一命令的 BusyBox 版本:

 -h DIR    Home directory
 -g GECOS  GECOS field
 -s SHELL  Login shell
 -G GRP    Group
 -S            Create a system user
 -D            Don't assign a password
 -H            Don't create home directory
 -u UID    User id
 -k SKEL   Skeleton directory (/etc/skel)

这种差异是一种特性还是一种限制,取决于你是喜欢你的命令拥有 20 个选项还是 10 个选项。对于一些用户和某些用例来说,BusyBox 的极简主义刚刚满足所需。对于其他人来说,它是一个很好的最小化环境,可以作为一个后备工具,或者作为安装更强大的工具的基础,比如 Bash、Zsh、GNUAwk等等。

 

安装 BusyBox

在 Linux 上,你可以使用你的软件包管理器安装 BusyBox。例如,在 Fedora 及类似发行版:

$ sudo dnf install busybox

在 Debian 及其衍生版:

$ sudo apt install busybox

macOS 上,可以使用 MacPorts或Homebrew。在 windows 上,可以使用Chocolatey。

你可以将 BusyBox 设置为你的 shell,使用 chsh —shell命令,然后再加上 BusyBoxsh应用程序的路径。我把 BusyBox 放在/lib64中,但它的位置取决于你的发行版的安装位置。

$ which busybox
/lib64/busybox/busybox
$ chsh --shell /lib64/busybox/sh

用 BusyBox 全盘替换所有常见的命令要复杂一些,因为大多数发行版都是“硬接线”,会在特定的软件包寻找特定的命令。换句话说,虽然技术上可以用 BusyBox 的 init替换系统的init,但你的软件包管理器可能会拒绝让你删除包含init的软件包,以免你担心删除会导致系统无法启动。有一些发行版是建立在 BusyBox 之上的,所以从新环境开始可能是体验 BusyBox 系统的最简单方法。

 

试试 BusyBox

你不必为了尝试 BusyBox 而将你的 shell 永久改为 BusyBox。你可以从你当前的 shell 中启动一个 BusyBox shell。

$ busybox sh
~ $

不过你的系统仍然有安装的非 BusyBox 版本的命令,所以要体验 BusyBox 的工具,你必须把命令作为参数发给 busybox可执行文件:

~ $ busybox echo $0
sh
~ $ busybox ls --help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.

Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...

List directory contents

 -1  One column output
 -a  Include entries that start with .
 -A  Like -a, but exclude . and ..
 -x  List by lines
[...]

为了获得“完整”的 BusyBox 体验,你可以为每个命令创建一个 busybox的符号链接。这很容易,只要你使用for 循环就行:

$ mkdir bbx
$ for i in $(bbx --list); do 
    ln -s /path/to/busybox bbx/$i 
done

在你的 路径的开头添加这个符号链接目录,并启动 BusyBox:

$ PATH=$(pwd)/bbxPATH bbx/sh

 

用起来

BusyBox 是一个有趣的项目,也是一个可以实现 极简计算的例子。无论你是把 BusyBox 作为你唤醒的古老的计算机的轻量级环境,还是作为嵌入式设备的用户界面,抑或试用一个新的初始化系统,就算是为了好奇,让自己重新认识那些熟悉而又陌生的命令,都会很有意思。

via: https://opensource.com/article/21/8/what-busybox

作者:Seth Kenlon选题:lujun9972译者:wxy校对:wxy

本文由 LCTT原创编译,Linux中国荣誉推出



Tags:usyBox   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
BusyBox 现在越来越流行,特别是在 docker 用户中,许多 Docker 镜像使用 BusyBox 为您提供最小镜像。如果您认为 Linux 命令是理所当然的,这可能会让许多用户感到特别困惑,您认为...【详细内容】
2022-11-18  Tags: usyBox  点击:(0)  评论:(0)  加入收藏
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。功能便捷、强大。安装需要有root权限查询并下载自己手机的CPU型号及对应busybox二进制文件:c:\tmp\fastboot>adb...【详细内容】
2022-04-26  Tags: usyBox  点击:(240)  评论:(0)  加入收藏
BusyBox 是一个开源(GPL)项目,提供了近 400 个常用命令的简单实现。我们很容易认为 Linux 的命令是理所当然的。当你安装 Linux 时,它们与系统捆绑在一起,而我们常常不问为什么它...【详细内容】
2021-10-11  Tags: usyBox  点击:(0)  评论:(0)  加入收藏
▌简易百科推荐
BusyBox 现在越来越流行,特别是在 docker 用户中,许多 Docker 镜像使用 BusyBox 为您提供最小镜像。如果您认为 Linux 命令是理所当然的,这可能会让许多用户感到特别困惑,您认为...【详细内容】
2022-11-18  wljslmz  今日头条  Tags: BusyBox   点击:(0)  评论:(0)  加入收藏
1 常用的 Load 分析方法CPU高、Load高 通过 top 命令查找占用CPU最高的进程PID; 通过top -Hp PID查找占用CPU最高的线程TID; 对于java程序,使用jstack打印线程堆栈信息; 通过pr...【详细内容】
2022-11-09  LinkSLA智能运维管家    Tags:Linux   点击:(11)  评论:(0)  加入收藏
昨天分享了Linux系统的一些初级指令,今天给大家整理了更多的指令介绍。ssh● 功能:登录另一台远程计算机● 语法:ssh [-l login_name] [-p port] [user@]hostname● 用法1:#ssh...【详细内容】
2022-11-09  文字纪  今日头条  Tags:Linux   点击:(9)  评论:(0)  加入收藏
导读:有关 Xfce 4.18 的核心和原生应用程序的功能的全面介绍。本文字数:3573,阅读时长大约: 5分钟经过近两年的开发,Xfce 4.18 将在 2022 年圣诞节期间发布。作为 www.debugpoint...【详细内容】
2022-11-09  Linux 中国  网易号  Tags:Xfce   点击:(22)  评论:(0)  加入收藏
1、在开始之前,先确认系统是否为RHEL 8(Red Hat Enterprise Linux 8),可使用下方命令进行查看;[root@linuxprobe ~]# cat /etc/redhat-release Red Hat Enterprise Linux release...【详细内容】
2022-11-06  九大爷网络  今日头条  Tags:root密码   点击:(15)  评论:(0)  加入收藏
问题描述:最近在工作中遇到这样一个奇葩问题,程序里需使用一个.so库,同份源码用我电脑编译的库放到程序使用出现各种异常问题,其他同事编译出来的没问题。刚开始以为是编译方式...【详细内容】
2022-11-03  linux服务器开发  知乎  Tags:   点击:(8)  评论:(0)  加入收藏
在本教程中,我们将向您介绍在运行systemd的linux系统上如何使用systemctl命令工具有效的控制系统和服务.Systemctl 介绍Systemctl是一个systemd工具,主要负责控制systemd系统...【详细内容】
2022-11-02  爱学习de小乌龟  今日头条  Tags:systemctl   点击:(35)  评论:(0)  加入收藏
IT程序员偏爱 Linux ,将其作为自己的默认操作系统,小编总结了几大原因:强大的命令行、Linux 非常安全、对开发者非常友好、定期更新、有利的社区支持、功耗更低、隐私性强、完...【详细内容】
2022-11-01  青烟小生x  网易号  Tags:Linux   点击:(15)  评论:(0)  加入收藏
前言centos被redhat收购后,centos官方宣布centos Linux项目将停止维护,并使用新推出的centos stream项目替代。新版的centos stream项目在软件更新方式上与centos存在较大差别...【详细内容】
2022-11-01  云马龙  今日头条  Tags:Centos   点击:(56)  评论:(0)  加入收藏
linux常用系统接口mprotectmprotect()函数可以修改调用进程内存页的保护属性,如果调用进程尝试以违反保护属性的方式访问该内存,则内核会发出一个SIGSEGV信号给该进程。#inclu...【详细内容】
2022-10-27  growdu  今日头条  Tags:linux   点击:(22)  评论:(0)  加入收藏
站内最新
站内热门
站内头条