Busybox的配置、编译与安装 |
您所在的位置:网站首页 › ubuntu编译文件后的install › Busybox的配置、编译与安装 |
1 Busybox1.00
1.1 BusyBox 的诞生
BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。 1.2 下载http://www.busybox.net/downloads/busybox-1.00.tar.bz2 http://www.busybox.net/downloads/busybox-1.13.4.tar.bz2
2 busybox-1.13.4 2.1 arm-linux-gcc-3.4.4的配置 编译busybox-1.13.4需要GCC3.X以上版本。 下载链接: http://download.pudn.com/downloads127/sourcecode/compiler/83390083arm-linux-cross-3.4.4.rar (或http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/ 上的arm-linux-tools-20061213.tar.gz)解压后为selfmake_cross-3.4.4.tar.gz,将其释放到目录 /usr/local/arm 目录下,编辑 /etc/profile 加入如下内容: PATH=$PATH:/usr/local/arm/3.4.4/bin 并运行: # source /etc/profile 运行 arm-linux-gcc –v后,显示gcc版本为3.4.4。 将busybox-1.13.4目录下的配置文件.config 中的交叉编译目录字段改为: CONFIG_CROSS_COMPILER_PREFIX="/usr/local/arm/3.4.4/bin/arm-linux-" 2.1.1 busybox-1.13.4的配置# make clean # make menuconfig Busybox ConfigurationàBuild Options中,将Build BusyBox as a static binary (no shared libs) 选中,并将Cross Compiler prefix 设置为: “ /usr/local/arm/3.4.4/bin/arm-linux- ” # make # make install 当命令执行完毕以后,会在当前目录中会生成“_install”目录,进入该目录,可以看到其中有四个子目录:bin、linuxrc、sbin和usr。
也可直接修改 busybox-1.13.4 目录下的 “ .config ” 文件。 2.1.2 将编译结果加入ramdisk在/home/work目录下新建一个临时目录tmp,执行如下命令,将原有的ramdisk.gz解压并挂载到该目录下: # gunzip ramdisk.gz # mkdir tmp # mount -o loop ramdisk tmp 然后执行如下命令,将_isntall目录中的文件拷贝到tmp目录,覆盖ramdisk中的原有文件: # cp -af /home/work/busybox-1.00/_install/* /home/work/tmp 拷贝完毕以后,使用系统提供的映像文件制作工具mkfs.jffs2,生成jffs2映像文件,命令如下: # ./mkfs.jffs2 -d ./tmp -o jffs2.img 然后执行如下命令,卸载并压缩ramdisk.gz: # umount /home/work/tmp # gzip ramdisk 当以上操作全部完成以后,即可生成新的ramdisk.gz和jffs2.img文件。 注意:以上的部分操作步骤可能需要超级用户的权限。 3 busybox 详解http://www.diybl.com/course/6_system/linux/Linuxjs/2008619/126715_2.html
我们也可以对 BusyBox 环境进行配置,例如包括对 NSA(美国国家安全代理)的安全增强 Linux(SELinux),指定要使用的编译器(用来在嵌入式环境中进行交叉编译)以及 BusyBox 应该静态编译还是动态编译。图 1 给出了menuconfig的主界面。在这里我们应该可以看到可以为 BusyBox 配置的不同类型的应用程序(applet)。 要手工配置 BusyBox,请使用下面的命令: $ make menuconfig $ make 这为我们提供了可以调用的 BusyBox 的二进制文件。下一个步骤是围绕 BusyBox 构建一个环境,包括将标准 Linux命令重定向到 BusyBox 二进制文件的符号链接。我们可以使用下面的命令简单地完成这个过程:$ make install
使用installmake 目标创建的符号链接都来自于 busybox.links 文件。这个文件是在编译 BusyBox 时创建的,它包含了已经配置的命令清单。在执行install时,就会检查 busybox.links 文件确定要创建的符号链接。
到 BusyBox 的命令行链接也可以使用 BusyBox 在运行时动态创建。CONFIG_FEATURE_INSTALLER选项就可以启用这个特性,在运行时可以这样执行:
清单 10. 在运行时创建命令链接 $ ./busybox --install -s BusyBox 编译选项
BusyBox 包括了几个编译选项,可以帮助为我们编译和调试正确的 BusyBox。 表 1. 为 BusyBox 提供的几个 make 选项 make 目标 说明 help 显示 make 选项的完整列表 defconfig 启用默认的(通用)配置 allnoconfig 禁用所有的应用程序(空配置) allyesconfig 启用所有的应用程序(完整配置) allbareconfig 启用所有的应用程序,但是不包括子特性 config 基于文本的配置工具 menuconfig N-curses(基于菜单的)配置工具 all 编译 BusyBox 二进制文件和文档(./docs) busybox 编译 BusyBox 二进制文件 clean 清除源代码树 distclean 彻底清除源代码树 sizes 显示所启用的应用程序的文本/数据大小
在定义配置时,我们只需要输入make就可以真正编译 BusyBox 二进制文件。例如,要为所有的应用程序编译BusyBox,我们可以执行下面的命令: $ make allyesconfig $ make 压缩 BusyBox 如果您非常关心对 BusyBox 映像的压缩,就需要记住两件事情: 1. 永远不要编译为静态二进制文件(这会将所有需要的库都包含到映像文件中)。相反,如果我们是编译为一个共享映像,那么它会使用其他应用程序使用的库(例如/lib/libc.so.X)。 2. 使用 uClibc 进行编译,这是一个对大小进行过优化的 C 库,它是为嵌入式系统开发的;而不要使用标准的 glibc(GNU C 库)来编译。
BusyBox 命令中支持的选项 BusyBox 中的命令并不支持所有可用选项,不过这些命令都包含了常用的选项。如果我们需要知道一个命令可以支持哪些选项,可以使用--help选项来调用这个命令,如清单 12 所示。
$ ./busybox wc --help BusyBox v1.1.1 (2006.04.09-15:27+0000) multi-call binary Usage: wc [OPTION]... [FILE]... Print line, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, read standard input. Options: -c print the byte counts -l print the newline counts -L print the length of the longest line -w print the word counts
这些特定的数据只有在启用了CONFIG_FEATURE_VERBOSE_USAGE选项时才可以使用。如果没有这个选项,我们就无法获得这些详细数据,但是这样可以节省大约 13 KB 的空间。 BusyBox 是很多标准 Linux? 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox称为 Linux 工具里的瑞士军刀。本文将探索 BusyBox 的目标,它是如何工作的,以及为什么它对于内存有限的环境来说是如此重要。
参考文献 [1] busybox 详解.txt [2] BusyBox——嵌入式Linux中的瑞士军刀.txt [3] ARM-Linux平台的Busybox交叉编译.txt [4] http://www.ibm.com/developerworks/cn/linux/l-busybox/index.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |