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。

官方资料

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

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