Busybox:修订间差异
跳转到导航
跳转到搜索
第57行: | 第57行: | ||
|/lib/firmware/ | |/lib/firmware/ | ||
|对于Linux而言,为固件目录。 | |对于Linux而言,为固件目录。 | ||
|- | |||
|/opt | |||
|可选软件目录,可选软件一般会在/opt建立一个目录,把所有文件按照类似/usr放入此目录,然后放一些启动脚本、桌面入口等放入(或者软链接)/usr对应的目录中。 | |||
可选软件的优点: | |||
* 便于更新或删除,直接操作/opt目录下的文件即可。 | |||
* 应用可以将自己的所有依赖放入自己的目录,不依赖系统中的部分其他软件。 | |||
可选软件的缺点: | |||
* 由于没有遵循系统目录结构,大量的搜索目录环境变量或者应用自身需要的环境变量需要修改,一般由启动脚本解决。 | |||
* 系统中应用一般情况下在未特殊设置不能访问可选软件的共享文件,会导致可选软件不能完美嵌入系统,一般由软链接解决,但软链接太多又失去了可选软件的意义。 | |||
在嵌入式应用中一般把GUI相关软件应用与库放在/opt目录,修改应用时直接修改/opt下的目录。 | |||
|- | |- | ||
|/proc | |/proc |
2023年8月19日 (六) 12:49的版本
源代码
主要
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对应的目录中。
可选软件的优点:
可选软件的缺点:
在嵌入式应用中一般把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。