[Linux/Docker] BusyBox : 开源、轻量级的Unix工具集

news/2025/9/20 22:43:33/文章来源:https://www.cnblogs.com/johnnyzen/p/19102994

0 序

Docker时代,软件程序的最小化、轻量化部署趋势

  • BusyBox 现在越来越流行,特别是在 Docker 用户中,许多 Docker 镜像使用 BusyBox 为你提供最小镜像

BusyBox := 原 Linux 发行版预装的 GNU Coreutils 在 Docker 容器时代的替代品

  • 如果你认为 Linux 命令是理所当然的,这可能会让许多用户感到特别困惑,你认为 lsmv 和其他此类命令是 Linux 的一部分,而事实是这些命令是 GNU Coreutils 软件包的一部分,并且大多数 Linux 发行版都预装了它。

  • GNU Coreutils 几乎是各种 UNIX/Linux 命令的事实上的提供者,几乎是因为总是有替代品,而 BusyBox 就是 GNU Coreutils 的替代品之一。

1 概述: BusyBox

  • BusyBox 是一个开源、轻量级的工具集合,专为嵌入式系统和资源受限环境设计。

它将多个常用的 Unix 工具(如 lscpcatgrep 等)合并为一个可执行文件,从而显著减少系统的存储空间资源占用
提供了大约 400常见 UNIX/Linux 命令的精简实现。

image

https://busybox.net

  • BusyBox 的特点
  • 精简性: 将多个工具整合为一个文件,减少存储空间。
  • 可定制性: 支持通过编译选项选择需要的工具,进一步减小文件大小。
  • 兼容性: 提供与传统 Unix 工具类似的命令行接口,方便替代传统工具。

2 安装部署

编译安装方式

# 安装依赖
yum -y install gcc gcc-c++ glibc glibc-devel make# 下载源码
wget https://busybox.net/downloads/busybox-x.x.x.tar.bz2# 解压并进入目录
tar -xvf busybox-x.x.x.tar.bz2
cd busybox-x.x.x# 配置编译选项
make menuconfig# 选择静态编译:Settings --> Build Options --> [*] Build static binary (no sharedlibs)
# 编译并安装
make
make install
  • 安装完成后,将 BusyBox 的路径添加到系统的 PATH 环境变量中,便可直接使用其工具。

  • 常见问题与解决

  • 编译错误:检查依赖是否安装齐全,确保编译选项正确。
  • 命令无法执行:确认 BusyBox 的路径已添加到 PATH 环境变量。
  • 工具功能异常:检查编译选项是否包含所需工具,必要时重新编译。

Ubuntu 便捷式安装

如果您只是想在当前的 Linux 发行版上体验 BusyBox,您可以使用发行版的包管理器(如 Apt 或 DNF 或Yum )安装它。

sudo apt install busybox

Docker 镜像式安装

  • 拉取镜像
docker pull busybox
  • 从镜像运行一个容器并进入 BusyBox shell:
docker run -it --rm busybox

3 使用方法

BusyBox 的使用方式非常灵活,可以通过以下方式运行:

  • busybox后直接跟原命令

之后,如果要运行 BusyBox 版本的命令,则必须在其前面添加 busybox。

busybox ls
busybox cat sample.txt

如果 BusyBox 未实现目标命令,则会引发“找不到小程序”的错误。

abhishek@LHB:~$ busybox xyz
xyz: applet not found
  • 直接将busybox重命名

例如:

cp busybox tar
  • 创建符号链接

此方法最方便,但为busybox中每个命令都创建一个软链接,相当费事,busybox提供自动方法:busybox编译成功后,执行make install,则会产生一个_install目录,其中包含了busybox及每个命令的软链接

ln -s busybox rm
rm file.txt

此外,运行 busybox --help 可以查看支持的所有命令。

文件系统修复

  • 查看可用的文件系统修复工具
busybox --list | grep fsck
  • 修复 ext4 文件系统
busybox fsck.ext4 /dev/sda1

网络配置

  • 配置 IP 地址和子网掩码
busybox ifconfig eth0 192.168.1.10 netmask 255.255.255.0
  • 添加默认网关
busybox route add default gw 192.168.1.1 eth0

Y 推荐文献

  • BusyBox
  • https://busybox.net
  • https://git.busybox.net/busybox
  • https://busybox.net/downloads/busybox-x.x.x.tar.bz2

X 参考文献

  • Busybox,这一篇就够了 - CSDN
  • Linux 中的 BusyBox 是什么?如何使用它? - Zhihu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Part03 数据结构 - 教程

Part03 数据结构 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

图解3:幂等使用场景

幂等,API接口和MQ消费重复

推荐一款数据库安全产品:全知科技知形-数据库风险监测系统的价值解析

推荐一款数据库安全产品:全知科技知形-数据库风险监测系统的价值解析在当下数字经济快速发展的浪潮中,数据已被视为企业最核心的生产要素。无论是金融、医疗,还是互联网与制造业,数据库都是数据存储与流转的“中枢…

变量,常量,作用域

变量JAVA是一种强类型语言,每个都必须声明其类型。JAVA变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域。 type varName [=value] [{,varName[=value]}]; //数据类型 变量名 = 值; 可以使用逗号隔…

wireshark 进行snmp 协议加密报文解密查看

转发请注明出处:在环境上进行对数通设备进行 snmp 采集数据,在现网运行环境中运行时,会偶尔出现异常,于是,采用tcpdump抓包,tcpdump 抓包得报文用wireshark打开之后,查询上报设备上报得数据层data格式如下:由于…

linux kernel synchronization 2

Per CPU VariablesA CPU should not access the elements of the array corresponding to other CPU. 每个CPU拥有该变量的独立副本 无需加锁 - 由于每个CPU只操作自己的副本,因此读写自己的副本时不会产生竞争条件 缓…

MySQL高阶查询语句与视图实战指南 - 指南

MySQL高阶查询语句与视图实战指南 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

订单未支付多种方案

1、微服务常用MQ 2、单体情况下常用定时任务

耳鸣针灸学位

耳鸣针灸学位足驷马 中九里 灵骨 叉三 行间 肾关 太溪 牵引针患侧 听宫或者耳门

Twincat 中如何将位变量链接到字节

最近在测试一个EtherCAT IO模块, 参考视频Ethercat总线快速入门教程——1-2TwinCAT基本操作_哔哩哔哩_bilibili 我手里是欧辰的一个模块,它的输入输出都是字节形式的因此小改了下PLC程序 1. 在DUTs中新建了一个结构体…

不管不管,就要你的特殊对待(权限)

特殊权限,文件特殊属性除rwx(读写执行)三种文件权限外,还有哪些权限呢? 一.SUID 1.是什么? “以文件所有者的身份运行程序”。主要作用于可执行文件。 当一个可执行文件设置了 SUID 位时,任何用户在执行该文件时,…

202003_攻防世界_功夫再高也怕菜刀

流量分析,文件分离,WebShellTags:流量分析,文件分离,WebShell 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202003_攻防世界_功夫再高也怕菜刀.zi…

工业软件:重塑协同流程、降低制造成本的关键器具

工业软件:重塑协同流程、降低制造成本的关键器具pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

实用指南:【2025最新版】PCL点云处理算法汇总(C++长期更新版)

实用指南:【2025最新版】PCL点云处理算法汇总(C++长期更新版)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

Gemini Proxy for Xcode 26

总的来说体验一塌糊涂,还不如Cursor/Trae或者是vscode装CLINE/RooCode等插件,更别提用Claude Code(虽然Xcode内置了,但是Claude Code官方明确不给中国大陆使用),需要一些手段来绕过进行使用, Xcode支持open AI 的一些接…

本地布署Qwen-Image全量蒸馏加速模型 - yi

本地布署Qwen-Image全量蒸馏加速模型一,#本机环境检查 执行nvidia-smi,查看右上角。验证显卡驱动已安装最高支持的版本。nvidia-smi执行nvcc -V验证cudanvcc -V执行conda --version验证conda版本conda --version#列出…

Android常用ADB命令

截屏adb shell screencap -p /sdcard/screenshot.png -p参数:保存PNG图片

【2025PolarCTF秋季个人赛】WEB方向部分wp

white 打开靶机,发现可以执行命令,但是进行了严格的过滤 可以执行的命令是一个白名单 ls pwd whoami date echo base64 sh白名单命令下方告知了过滤规则,比如禁止危险函数和过滤特殊字符等。有意思的是,这里虽然说…

电池热失控(Thermal Runaway of the Battery) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …