busybox简介

引:刚买了一个motomagx平台的智能手机, 据说刷机之后可以使用FTP和telnet功能, 

遂刷之, telnet上手机之后, 却发现只能执行ls, cd等简单命令, 像top,free,vmstat等命令均不支持

看来用shell给自己的手机写个小程序的想法泡汤了

等等, 真泡汤了吗? 

 

 

参考1: http://www.linuxeden.com/html/softuse/20080429/56984.html

参考2: http://www.zhiweinet.com/jiaocheng/2009-05/9360.htm

参考3: http://blog.mcuol.com/User/lyusheng/Article/4797_1.htm

 

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

来自:http://blog.mcuol.com/User/lyusheng/Article/4797_1.htm

 

 


 

  

BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
  1、BusyBox 的诞生
  BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
  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,但是只要链接名不同,完成的功能就不同,很多linux网站都提供busybox的源代码下载。
  3、配置busybox
  busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手.
  #cp busybox-1.00.tar.gz /babylinux
  #cd /babylinux
  #tar xvfz busybox-1.00.tar.gz
  #cd busybox-1.00
  #make menuconfig
  下面是需要编译进busybox的功能选项。
  General Configuration应该选的选项
  Show verbose applet usage messages
  Runtime SUID/SGID configuration via /etc/busybox.conf
  Build Options
  Build BusyBox as a static binary (no shared libs)
  这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作.
  Installation Options
  Don't use /usr
  这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接.
  其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。
  4、编译并安装busybox
  #make
  #make install
  编译好后在busybox目录下生成子目录_install,里面的内容:
  drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
  rwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox
  drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
  其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.

busybox

   BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
  1、BusyBox 的诞生
  BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
  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,但是只要链接名不同,完成的功能就不同,很多linux网站都提供busybox的源代码下载。
  3、配置busybox
  busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手.
  #cp busybox-1.00.tar.gz /babylinux
  #cd /babylinux
  #tar xvfz busybox-1.00.tar.gz
  #cd busybox-1.00
  #make menuconfig
  下面是需要编译进busybox的功能选项。
  General Configuration应该选的选项
  Show verbose applet usage messages
  Runtime SUID/SGID configuration via /etc/busybox.conf
  Build Options
  Build BusyBox as a static binary (no shared libs)
  这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作.
  Installation Options
  Don't use /usr
  这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接.
  其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。
  4、编译并安装busybox
  #make
  #make install
  编译好后在busybox目录下生成子目录_install,里面的内容:
  drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
  rwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox
  drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
  其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值