Busybox:修订间差异
跳转到导航
跳转到搜索
第23行: | 第23行: | ||
以上发行版/工具可用于测试busybox或者参考他们的文件系统。 | 以上发行版/工具可用于测试busybox或者参考他们的文件系统。 | ||
== 基本文件系统 == | |||
=== 目录 === | |||
一般情况下,若要挂载各种文件系统则需要目录存在,故需要预先创建一个基本的目录结构。 | |||
以下目录为约定俗成的Linux最小根目录(保证正常启动及应用执行,不包含编译环境等): | |||
{| class="wikitable" | |||
!目录 | |||
!说明 | |||
|- | |||
|/bin | |||
|二进制可执行文件目录,系统级(一般是启动相关)二进制文件。注意:包括可执行的脚本文件。 | |||
|- | |||
|/boot | |||
|启动文件目录,包含内核、设备树、Bootloader相关配置文件。 | |||
|- | |||
|/dev | |||
|设备文件目录,此目录一般挂载为tmpfs,在busybox为主的根目录中一般由mdev管理。 | |||
|- | |||
|/etc | |||
|配置文件目录,一般情况下应用程序的配置文件均存放在此目录。 | |||
|- | |||
|/home | |||
|非root用户家目录。若无其他用户则不需要。 | |||
|- | |||
|/lib | |||
|库文件目录。 | |||
|- | |||
|/lib/modules/ | |||
|对于Linux而言,为内核模块目录。 | |||
|- | |||
|/lib/firmware/ | |||
|对于Linux而言,为固件目录。 | |||
|- | |||
|/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。 | |||
== 笔记 == | == 笔记 == |
2023年8月19日 (六) 12:05的版本
源代码
主要
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而言,为固件目录。 |
/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。