18. busybox根文件系统的构建¶
18.1. 什么是busybox¶
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。
18.2. 下载源码¶
https://busybox.net/ 可以到官网下载
点击左侧的Download Source
下载当前最新版本busybox-1.33.1.tar.bz2 也可以使用我们提供的文件
18.3. 安装一些依赖文件¶
1 | sudo apt-get install zlib1g-dev unzip gcc g++ aptitude lib32stdc++6-4.8-dbg make build-essential libncurses5 libncurses5-dev u-boot-tools traceroute sudo gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
|
18.4. busybox构建¶
将busybox-1.33.1.tar.bz2放置到一个你熟悉的目录,我这里选择为 /home/lhf 解压 busybox-1.33.1.tar.bz2
1 2 3 | tar -vxf busybox-1.33.1.tar.bz2
cd busybox-1.33.1
make menuconfig
|
18.5. 配置busybox¶
18.5.1. 修改Makefile¶
在第164行,将 CROSS_COMPILE ?= 修改为 CROSS_COMPILE :=arm-linux-gnueabihf- 注意: **arm-linux-gnueabihf-**为你交叉编译器前缀,若编译其他soc请使用官方提供的交叉编译工具
1 2 | #CROSS_COMPILE ?=
CROSS_COMPILE :=arm-linux-gnueabihf-
|
18.5.3. 编译¶
执行 make 和 make install
1 2 | make
make install
|
默认生成在busybox目录下的_install文件夹中 我们进入到 _install 目录进行一些修改
1 2 3 4 5 6 7 | cd _install
mkdir dev etc lib var proc tmp home root mnt sys
cd ./dev
sudo mknod console c 5 1
sudo mknod null c 1 3
cd ../etc
vi inittab
|
在 inittab 中添加一句
1 | console::askfirst:-/bin/sh
|
:wq 保存退出
将 _install 目录下的文件拷贝到我们的nfs中进行测试 注意: ./目录是_install目录 /home/lhf/nfs是你的nfs网络文件系统根目录,若未搭建nfs网络文件系统,请 参考6.5小节 搭建NFS网络系统
1 2 | cd ../ #从etc目录回到_install目录
cp -rf ./* /home/lhf/nfs
|
重启开发板 等开发板启动成功后我们进入了我们编译好的busybox根文件系统 我们看看根文件系统整体大小为 du -sh
18.6. 小结¶
仅占1.5M,虽然占用空间是小了,但是功能也非常少,若要安装某项功能还需自行交叉编译到文件系统。仅适合对存储比较敏感且只需完成某一项功能的系统使用。如果想使用较全的功能对存储不敏感的用户可以使用debain根文件系统。我们将会在下一节讲解ubuntu根文件系统的构建