LV05-04-根文件系统-03-busybox-01-busybox简介

本文主要是rootfs——busybox简介的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.2的64位版本
VMware® Workstation 17 Pro 17.6.0 build-24238078
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04
linux内核 linux-4.19.71(NXP官方提供)
点击查看本文参考资料
分类 网址 说明
官方网站 https://www.arm.com/ ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.nxp.com.cn/ NXP官方网站
https://www.nxpic.org.cn/NXP 官方社区
https://u-boot.readthedocs.io/en/latest/u-boot官网
https://www.kernel.org/linux内核官网
点击查看相关文件下载
分类 网址 说明
NXP https://github.com/nxp-imx NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库
nxp-imx/linux-imx/releases/tag/v4.19.71 NXP linux内核仓库tags中的v4.19.71
nxp-imx/uboot-imx/releases/tag/rel_imx_4.19.35_1.1.0 NXP u-boot仓库tags中的rel_imx_4.19.35_1.1.0
I.MX6ULL i.MX 6ULL Applications Processors for Industrial Products I.MX6ULL 芯片手册(datasheet,可以在线查看)
i.MX 6ULL Applications ProcessorReference Manual I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网)
Source Code https://elixir.bootlin.com/linux/latest/source linux kernel源码
https://elixir.bootlin.com/u-boot/latest/source uboot源码

一、busybox简介

1. busybox是什么

img

官网的简介是这样写的:BusyBox - about

BusyBox: The Swiss Army Knife of Embedded Linux

BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.

BusyBox has been written with size-optimization and limited resources in mind. It is also extremely modular so you can easily include or exclude commands (or features) at compile time. This makes it easy to customize your embedded systems. To create a working system, just add some device nodes in /dev, a few configuration files in /etc, and a Linux kernel.

BusyBox is maintained by Denys Vlasenko, and licensed under the GNU GENERAL PUBLIC LICENSE version 2

简单来说busybox是一个开源的、轻量级的软件工具集合,旨在提供一个精简的Unix工具集,适用于嵌入式系统和资源受限的环境。它将许多常用的Unix工具(如ls、cp、cat、mv、grep、find、telnet等)合并为一个可执行文件,从而减少了系统的存储空间和资源占用。

2. 发展历史

GNU Coreutils + Bash 的组合一直是各大 Linux 发行版中的“黄金搭档”,如今几乎所有的 Linux 发行版默认都会使用它们作为默认的 Shell 和基础工具包,Coreutils 包含了一系列每个 Linux 用户都再熟悉不过的命令:ls、cat、grep…几乎所有我们熟悉的“开箱即用”的 Linux 工具都是 Coreutils 的一部分。

不过在桌面发行版中广受欢迎的它却在嵌入式开发中遇到了一个问题,一个永恒的、经典的问题:成本,或者换句话来说,体积。Coreutils 丰富功能的代价之一就是体积的膨胀,这使得它不适用于嵌入式环境这种对体积要求极为严苛的环境,于是 BusyBox应运而生。

BusyBox 做的最关键的一件事就是:压缩体积,它在诞生之初便是为了塞进一张软盘而设计的(当时流行的 3.5 寸软盘容量约为 1.44 MB),这样它既可以作为当时流行的 Debian 系统的急救盘、也可以成为它的安装盘,BusyBox 把原来数十个乃至数百个程序实现的功能塞进了一个可执行文件中,这种高度的集成带来的是体积的极致压缩,因为这样做它便不会受到多个 ELF 文件中冗余文件头的影响,同时多个功能也可以调用同一个库中的代码,进一步压缩了体积。1996 年,初版 BusyBox 诞生了,之后便被广泛应用在各种嵌入式项目和精简发行版中,成为了嵌入式操作系统的事实标准之一,不只是 Linux,FreeBSD 等项目中也不乏 BusyBox 的身影。

2. 特点

  • 精简:Busybox的设计理念是将多个工具合并为一个可执行文件,从而减少了系统的存储空间和资源占用。

  • 可定制性:Busybox提供了许多编译选项,可以根据需求选择需要的工具,并排除不需要的工具,从而进一步减小可执行文件的大小。

  • 兼容性:Busybox的工具与传统的Unix工具具有相似的命令行接口和功能,因此可以方便地替代传统的Unix工具。

二、参考资料

busybox的官网在这里:BusyBox

image-20241127230022621

我们可以在这里找到官方的帮助文档以及源码的下载链接。

三、源码获取

1. 源码下载

我们可以在这里下载:Index of /downloads。我下载的是 busybox-1.22.1.tar.bz2 这个压缩包并将其存放于 ubuntu 下的共享文件夹下:

image-20241128074042740

下载的时候可能会非常慢,要是特别慢的话,有条件的可以科学处理一下,哈哈。也可以通过这个命令下载:

1
wget https://www.busybox.net/downloads/busybox-1.36.1.tar.bz2
image-20241128074313793

2. 拷贝解压

然后我们可以将这个源码文件拷贝解压到 ubuntu 中,方便后边编译,我们可以在终端执行以下命令:

1
2
cd ~/7Linux
tar -xf busybox-1.36.1.tar.bz2 # 解压

然后我们可以得到下边这些文件(通过 ls 命令查看):

image-20241128074453329

3. 目录说明

一些目录的说明如下:

image-20241128220616957

参考资料

嵌入式 Linux 的瑞士军刀:BusyBox - LinuxStory

BusyBox - 维基百科,自由的百科全书

【Busybox】Busybox源码分析-01 | 源码目录结构和程序入口-CSDN博客