0 序
Docker时代,软件程序的最小化、轻量化部署趋势
BusyBox
现在越来越流行,特别是在Docker
用户中,许多Docker
镜像使用BusyBox
为你提供最小镜像。
BusyBox := 原 Linux 发行版预装的 GNU Coreutils 在 Docker 容器时代的替代品
-
如果你认为 Linux 命令是理所当然的,这可能会让许多用户感到特别困惑,你认为
ls
、mv
和其他此类命令是 Linux 的一部分,而事实是这些命令是GNU Coreutils
软件包的一部分,并且大多数 Linux 发行版都预装了它。 -
GNU Coreutils
几乎是各种 UNIX/Linux 命令的事实上的提供者,几乎是因为总是有替代品,而 BusyBox 就是 GNU Coreutils 的替代品之一。
1 概述: BusyBox
BusyBox
是一个开源、轻量级的工具集合,专为嵌入式系统和资源受限环境设计。
它将多个常用的 Unix 工具(如
ls
、cp
、cat
、grep
等)合并为一个可执行文件,从而显著减少系统的存储空间和资源占用。
提供了大约400
个常见 UNIX/Linux 命令的精简实现。
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