Busybox

来自资料库(何亚红)
HEYAHONG讨论 | 贡献2023年8月19日 (六) 13:17的版本 →‎目录
跳转到导航 跳转到搜索

源代码

主要

https://git.busybox.net/busybox

备用

https://github.com/mirror/busybox.git

说明

busybox可提供许多UNIX工具(多数是简化版,提供基础的功能),而只需要一个单文件(可使用软连接指向busybox以创建busybox支持的命令)。

busybox常用于存储比较受限的系统,如在Flash的嵌入式系统。

优点是体积小缺点是只支持基本功能。

相关Linux发行版/工具

  • tinycorelinux:一个体积极小的Linux系统项目。作用类似Windows的PE,主要运行一些维护工具或者黑客工具(如WIFI破解)。注意:工具需要自行集成或者下载修改好的镜像。
  • slitaz:安全、高性能的Linux操作系统。
  • alpine:一个基于musl libc与busybox的安全导向的轻量Linux发行版。主要用于docker镜像。
  • openwrt:操作系统。一般用于路由器方案,为减小rootfs体积大小默认采用musl libc+busybox,也可使用glibc+busybox。
  • buildroot:嵌入式Linux构建工具。可创建基于busybox的rootfs,也可创建使用systemd作为init的系统。

以上发行版/工具可用于测试busybox或者参考他们的文件系统。

基本文件系统

目录

一般情况下,若要挂载各种文件系统则需要目录存在,故需要预先创建一个基本的目录结构。

以下目录为约定俗成的Linux最小根目录(保证正常启动及应用执行,不包含编译环境等):

目录 说明
/bin 二进制可执行文件目录,系统级(一般是启动相关)二进制文件。注意:包括可执行的脚本文件。
/boot 启动文件目录,包含内核、设备树、Bootloader相关配置文件。
/dev 设备文件目录,此目录一般挂载为tmpfs,在busybox为主的根目录中一般由mdev管理。
/etc 配置文件目录,一般情况下应用程序的配置文件均存放在此目录。
/home 非root用户家目录。若无其他用户则不需要。
/lib 库文件目录。
/lib/modules/ 对于Linux而言,为内核模块目录。
/lib/firmware/ 对于Linux而言,为固件目录。
/opt 可选软件目录,可选软件一般会在/opt建立一个目录,把所有文件按照类似/usr放入此目录,然后放一些启动脚本、桌面入口等放入(或者软链接)/usr对应的目录中。

可选软件的优点:

  • 便于更新或删除,直接操作/opt目录下的文件即可。
  • 应用可以将自己的所有依赖放入自己的目录,不依赖系统中的部分其他软件。

可选软件的缺点:

  • 由于没有遵循系统目录结构,大量的搜索目录环境变量或者应用自身需要的环境变量需要修改,一般由启动脚本解决。
  • 系统中应用一般情况下在未特殊设置时不能访问可选软件的共享文件,会导致可选软件不能完美嵌入系统,一般由软链接解决,但软链接太多又失去了可选软件的意义。

在嵌入式应用中一般把GUI相关软件应用与库放在/opt目录,修改应用时直接修改/opt下的目录。

/proc proc文件系统挂载目录。十分关键,若不挂载可能导致部分应用不可执行。
/root root用户家目录。
/run 运行目录。主要存放如pid文件、unix文件socket文件、管道文件等,一般用于ipc。可挂载为tmpfs.
/sbin 特权(需要root执行)二进制可执行文件目录,系统级(一般是启动相关)二进制文件。注意:包括可执行的脚本文件。
/sys sysfs文件系统挂载目录。十分关键,若不挂载可能导致部分应用不可执行。
/tmp 临时文件目录。一般挂载为tmpfs,在根文件系统可读写情况下也可不挂载tmpfs.
/usr unix软件资源。非系统级文件级(启动无关,通常是应用)文件目录,包括但不限于二进制可执行文件、二进制库文件、应用共享文件、头文件、源代码文件等。
/usr/bin 类似/bin
/usr/sbin 类似/sbin
/usr/lib 类似/lib,但只包含库文件,不包含Linux内核模块与固件文件。
/usr/local 本地文件目录,目录结构类似/usr(不包含local目录),一般用于存放本地编译的程序(配置文件、二进制文件等)。
/usr/share 共享文件目录,存放应用可共享给其他应用的文件(如man手册等)。对GUI应用而言,此目录包含各种GUI资源。
/var 可变文件目录。主要存放日志、缓存、可变资源文件(如网站数据、数据库数据)等。

init程序

通常是/init与/sbin/init,也可使用init=指定其它文件。在busybox为主的根目录中一般使用软链接将/init与/sbin/init指向/bin/busybox。

笔记

/dev/创建与更新

除了系统调用、proc文件系统、sysfs文件系统之外,在Linux应用打交道最多的便是/dev/,对于使用busybox作为init的系统而言,通常使用mdev作为创建/dev/与维护/dev的工具。

在启动时需要使用mdev -s 创建/dev,使用echo /sbin/mdev >/proc/sys/kernel/hotplug 设置在设备热插拔时更新/dev。

注意:在最新版Linux内核中可启用devtmpfs自动挂载一个/dev。

官方资料

网址:https://www.busybox.net

二进制文件下载:https://busybox.net/downloads/binaries/