Busybox的配置、编译与安装

转载 2012年03月24日 21:58:37

1Busybox1.00

1.1BusyBox 的诞生

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

2busybox-1.13.4

2.1arm-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.1busybox-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”目录,进入该目录,可以看到其中有四个子目录:binlinuxrcsbinusr

也可直接修改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.gzjffs2.img文件。

注意:以上的部分操作步骤可能需要超级用户的权限。

3busybox 详解

http://www.diybl.com/course/6_system/linux/Linuxjs/2008619/126715_2.html

我们也可以对 BusyBox环境进行配置,例如包括对 NSA(美国国家安全代理)的安全增强 LinuxSELinux),指定要使用的编译器(用来在嵌入式环境中进行交叉编译)以及 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基于文本的配置工具

menuconfigN-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库,它是为嵌入式系统开发的;而不要使用标准的 glibcGNU 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,还包含了一些更大、更复杂的工具,例如 grepfindmount以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox称为 Linux工具里的瑞士军刀。本文将探索 BusyBox的目标,它是如何工作的,以及为什么它对于内存有限的环境来说是如此重要。

Busybox的配置、编译与安装

1       Busybox1.00 1.1      BusyBox 的诞生 BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编...
  • wujiangguizhen
  • wujiangguizhen
  • 2013年09月17日 19:39
  • 7072

Busybox 配置、编译与文件系统构建

宿主机:Fedora13 目标机:s3c2440 交叉编译器:arm-linux-gcc-3.4.1 交叉编译器路径:/usr/local/arm/3.4.1 busybox版本:1.17.2...
  • GN202
  • GN202
  • 2014年09月11日 19:59
  • 2536

Busybox1.27.1make menuconfig配置界面

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-12/49878p2.htm 跟...
  • qq_36788698
  • qq_36788698
  • 2017年08月03日 19:39
  • 509

rootfs的制作(busybox)和安装

1、创建根文件系统的目录 [root@localhost fs]# ls [root@localhost fs]# mkdir myrootfs [root@localhost fs]# cd my...
  • chuanzhilong
  • chuanzhilong
  • 2016年07月03日 17:21
  • 947

Ubuntu16.04编译安装BusyBox

简述Ubuntu16.04LTS编译安装BusyBox,出现问题及解决方案。下载源码下载BusyBox源码 选择一个扩展名为.tar.bz2文件下载 本例中使用busybox-1.27.2.ta...
  • haofan_
  • haofan_
  • 2017年10月27日 21:27
  • 705

BusyBox 的配置

 BusyBox (http://www.busybox.net) 将数以百计的常用Unix/Linux命令集成到一个可执行文件中(名为busybox).它体积小巧, 功能却不失强大. 常用Linux...
  • ling1874
  • ling1874
  • 2009年11月24日 00:18
  • 5300

Busybox 交叉编译

Busybox 交叉编译初衷由于项目需要,需要使用到syslogd,但是可惜的是busybox编译时没有开启此功能,故心生在我们的平台重新编译busybox的想法,以前没有编译过,只能摸索着尝试了。总...
  • cwm_meng
  • cwm_meng
  • 2016年05月26日 12:23
  • 466

busybox1.26.2编译(1)

ubuntu:16 busybox:1.26.2 arm-linux-gnueabi:  gcc-6 使用ssh客户端的时候出现/opt/Linux/linux-3.5/scripts/kconf...
  • rfidunion
  • rfidunion
  • 2017年01月19日 16:04
  • 968

给openwrt里的busybox添加新命令,比如tree命令

通过往openwrt源码里的busybox添加新命令来实现。 1;下载tree命令的源代码 http://mama.indstate.edu/users/ice/tree/ 2;更改openwrt...
  • flexman09
  • flexman09
  • 2016年07月01日 14:27
  • 2266

busybox交叉编译+移植

更新历史 20151217,10:51,v1.0 初稿,略 前言 移植这个,其实是为了wifi模块移植做准备。 一、环境准备 1.源码获取 推荐的办法是: $ cd A20/camlinu...
  • zhuran0822
  • zhuran0822
  • 2015年12月17日 10:54
  • 2393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Busybox的配置、编译与安装
举报原因:
原因补充:

(最多只允许输入30个字)