Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1906001
  • 博文数量: 496
  • 博客积分: 12043
  • 博客等级: 上将
  • 技术积分: 4778
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 14:26
文章分类

全部博文(496)

文章存档

2014年(8)

2013年(4)

2012年(181)

2011年(303)

2010年(3)

分类: 嵌入式

2011-03-08 17:10:07

  什么是Busybox呢? 

          从名字上直接理解,Busybox是一个“繁忙的盒子”,其实,Busybox可以理解为一个Linux的命令集合,我们在进行Linux操作时所需要的 常用命令,都可以在Busybox里找到,但Busybox又不是简单的将所有的命令集合在一起,它采用了一种非常巧妙的方式,即“使用一个程序完成所有 的事”。 

          平时我们用ls、vi等命令,都要用到glibc的相关调用,所以如果每个命令都静态链接这些调用,每个命令都会很大,因此在通常的发行版中,都会动态链 接glibc,可是glibc的动态库本身就很大,这在PC+Linux平时上还可以接受,但在嵌入式系统中,这就太大了,而且又不是所有的库函数都使 用。

           一般采用两种解决办法,一种是裁剪glibc,另一种就是Busybox的办法,即把ls、vi等程序的main函数改一下名,全部链接在一起,然后静态 链接glibc,这样,只有需要的调用才会链接进来,整个Busybox程序可能都比glibc的动态库小。

            因此,Busybox的工作原理是根据文件名来决定用户想调用的是那个程序,例如,如果你的busybox程序的文件名是ls,运行的就是ls,是vi,就运行vi。 

          下面介绍一下ARM-Linux平台的Busybox-1.00交叉编译与使用步骤:

         1. 编译Busybox
         将文件busybox-1.00.tar.gz拷贝到Linux服务的/home/work目录,执行如下命令解压文件: 
                   #tar xzvf AT91RM9200-busybox-1.00.tar.gz
        当文件解压完成以后,会自动生成busybox-1.00目录,进入该目录,并执行如下命令进行编译:
                   #make clean ;清除旧的编译文件
                   #make menuconfig
         执行该命令以后,进入配置主菜单。
         首先进入菜单Build Options,选择“Do you want to build BusyBox with a Cross Compiler?”选项,并在“Cross Compiler prefix”栏中输入交叉编译器安装的位置,如/usr/local/arm/2.95.3/bin/arm-linux-,注意最后是arm- linux-,不能加其他字符或空格。
          然后在“Any extra CFLAGS options for the compiler”栏中输入需要匹配的arm-linux系统源码目录中头文件所在的位置,如“/home/works/linux-2.4.27 /include”,然后退出返回主菜单。
          再根据系统需要,进入所需命令工具所在的子菜单中,选择相应的命令项。如需要“insmod”命令,就在“Linux Module Utilities”子菜单中选中。
          选择完成所需的全部命令后,保存配置文件退出,并执行如下命令进行编译:
                   #make
                   #make install
          当命令执行完毕以后,会在当前目录中会生成“_install”目录,进入该目录,可以看到其中有四个子目录:bin、linuxrc、sbin和usr。

         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文件。
注意:以上的部分操作步骤可能需要超级用户的权限。

阅读(814) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~