使用Busybox制作根文件系统
1、BusyBox简介
BusyBox 是很多标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet;有些人将 BusyBox 称为 Linux 工具里的“瑞士军刀”。
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。实际上,BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。
我们平时用的那些Linux命令就好比是分立式的电子元件,而BusyBox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,BusyBox有非常广的应用。
2、BusyBox的用法
可以这样用BusyBox
#busybox ls
他的功能就相当运行ls命令
最常用的用法是建立指向BusyBox的链接,不同的链接名完成不同的功能.
#ln -s busybox ls
#ln -s busybox rm
#ln -s busybox mkdir
然后分别运行这三个链接:
#./ls
#./rm
#./mkdir
就可以分别完成了ls、rm和mkdir命令的功能.虽然他们都指向同一个可执行程序BusyBox,但是只要链接名不同,完成的功能就不同, BusyBox就是这么的神奇。
3、配置编译BusyBox
下载
首先需要下载BusyBox源代码。可从上直接下载最新版BusyBox。例如当前最新版为1.5.1。
解压:
tar xvf busybox-1.5.1.tar.bz2
配置
BusyBox的配置程序和Linux内核菜单配置方式简直一模一样,十分方便易用。使用make menuconfig命令就可以进行配置。
配置过程主要有几点需要修改的:
l 因为我们要将BusyBox交叉编译成ARM可执行程序放在开发板上执行,所以需要使用交叉编译器arm-li
nux-gcc来编译BusyBox。所以需要修改BusyBox根目录下的Makefile,到
ARCH ?= $(SUBARCH)
CROSS-COMPILE ?=
修改成ARM的配置,如下:
linux怎么读取windows文件ARM ?= arm
CROSS-COMPILE ?= arm-linux-
l 在BusyBox配置界面里修改几个配置:
Busybox Settings --->
Build Options
Build BusyBox as a static binary (no shared libs)
这个选项是一定要选择的,这样才能把BusyBox编译成静态链接的可执行
文件,运行时才独立于其他函数库,否则必须要其他库文件才能运行。
Busybox Settings --->
Installation Options
Don’t use /usr
这个选项也是要选上的,否则make install 后BusyBox将安装在原系统
的/usr下,这将覆盖系统原有的命令。选择这个选项后,make install后会在BusyBox目录下生成一个叫_install的目录,里面有BusyBox和指向他的链接。
Init Utilities --->
init
这个选项最好选上,这样BusyBox就可以初始化脚本inittab,可以用来
初始化Linux系统。
如果要让BusyBox包含一个可以用于解释Linux命令的shell,需要配置BusyBox的Shells选项里的内容:
Shells --->
这里可选的shell有多种,包括ash,hush,lash,msh。最好使用ash,
因为它是功能最全也最类似于一般Linux系统中的BASH的。同时注意第一行的:
Choose your default shell (none) --->
这里需要回车进去选择默认的Shell,例如选择了ash后,第一行的内容
就会变成:
Choose your default shell (ash) --->
这样BusyBox才会生成sh的链接并且将这个sh指向对应的shell(ash)。
l 其他选项都是一些Linux基本命令选项,可以根据自己的需要选择配置,第一次的话用默认的设置即可。
编译
如果配置好了BusyBox,就可以使用make命令编译了。
#make
#make install
默认情况下,make install完成后会在BusyBox目录下创建一个新的本地
子目录 _install,其中包含了基本的 Linux 环境。在这个目录中,会有一个
链接到 BusyBox 的 linuxrc 程序。这个 linuxrc 程序在构建安装盘或急救盘(允许提前进行模块化的引导)时非常有用。同样在这个目录中,还有一个包
含操作系统二进制文件的 /sbin 子目录。还有一个包含用户二进制文件的
/bin 目录。在构建软盘发行版或嵌入式初始 RAM 磁盘时,可以将这个
_install 目录迁移到目标环境的根目录中。
4、制作完整的根文件系统
BusyBox虽然为我们创建了Linux根系统中最基本的shell和一些常用命令,但是一个根文件系统还不只包含这些,还需要其它的一些内容。
创建一个比较完整的根文件系统目录结构
本章第一节已经介绍了根文件系统中的一些目录,这些目录是Linux正常
运行时所必需的。我们可以在BusyBox的_install基础上创建完整的根文件系
统目录,一般步骤如下:
l 在PC上创建一个目标根文件系统的目录,例如/rootfs,将BusyBox里
的_install目录里所有内容复制到这个文件夹里:cp –r _install /rootfs
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论