http://www.busybox.net/下载busybox-1.22.1.tar.bz

解压到工程顶层目录

在编过平台软件后,系统环境中是有arm-none-linux-gnueabi-交叉编译工具链名路径的

直接进去make 、 make install



Android自带了命令工具集使用不方便,很多linux上常用的命令都不支持,如不能使用cpgreptab补全,回格删除,上下方向键记忆等等。

我们需要在Android系统中添加linux系统常用的工具集—busybox

 

环境说明

      硬件环境:DM3730 EVM

      软件环境:TI_Android_FroYo_DevKit-V2.2

      Host主机环境:Ubuntu10.04

说明,在软件环境中,有ADB工具,可配置后使用。

 

配置ADB工具

      ADB( Android Debug Bridge)有如下用途。

u 从主机下载应用程序到目标板上,安装、运行

u 通过运程shell来启动一个实例

u 调试应用程序      

u 在目标板和虚拟机之间拷贝文件

 

ADB连接Hostboard可通过如下方式:

u USB (LinuxWindows)

u USB Ethernet

u Ethernet

 

几个ADB常用命令

查看设备

$>adb devices

 

登录设备shell

$>adb shell

 

从电脑上发送文件到设备

$>adb push <本地路径> <远程路径>

 

从设备上下载文件到电脑

  $>adb pull <远程路径> <本地路径>

  用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

 

显示帮助信息

  $>adb help

  这个命令将显示帮助信息

 
通过USB连接ADB

 linux系统中,进入文件TI_Android_Froyo_DevKit-V2.2/Tools/Android-sdk-linux_86/Tools中,使用其中的adb可执行文件。

 

验证主机和目标板之间的ADB连接

$> ./adb devices

如果连接成功,则会打印如下信息:

List of devices attached

20100720 device

 

出现如下错误:

List of devices attached

????????????  no permissions

 

解决方法:

sudo ./adb kill-server

sudo ./adb start-server

* daemon not running. starting it now *

* daemon started successfully *

 

sudo ./adb devices    //检测ADB设备

List of devices attached

20100720      device  //检测到ADB设备,ok      

 

编译busybox

$>tar xvf busybox-1.17.0.tar.tar //这里使用现成的busybox,你也可以下载最新的来制作

$>cd busybox-1.17.0/

$>make menuconfig

      Busybox Settings --->

             General Configuration --->

                                  [*]  Don't use /usr--> //要选择此项,不然部分命令会被安装到_install/usr/bin_install/usr/sbin。

                                                                      //busybox-1.18.0中,这项没有用,都会有部分命令安装到_install/usr/bin_install/usr/sbin

                                  //busybox-1.17.0就正常,且此项在Build Options中。

             Build Options --->

                     [*]Build BusyBox as a static binary(no shared libs) //使用静态库编译

                                 (arm-none-linux-gnueabi-)Cross Compiler prefix  //交叉编译工具链名,如果不在PATH中,使用绝对路径

             Busybox Library Tuning --->

                                [*]  Tab completion -> //检测此项是否选择,tab键补全,默认是选择的。

$>make         //生成busybox文件

$>make  install   //busybox命令安装到_install/bin_install/sbin

 

Android系统上安装busybox  

      在板上系统中的/data目录下新建一个busybox文件夹,用来存放busybox的相关文件,并修改文件夹属性。

target #mkdir /data/busybox

target #chmod 777 /data/busybox

 

将编译的busybox传送到target

$ ./adb pushbusybox /data/busybox

846 KB/s (1901380 bytes in 2.192s) //传送成功

 

进入target环境调试:

$ ./adb shell

target # cd data/busybox

target # ls

busybox

target #./busybox ls //执行busybox

busybox

 

执行busybox sh   //添加了busybox/bin,busybox/sbin路径,一切如linux系统一样熟悉,方便使用。

target #./busybox sh    //执行这个命令后,便能正常使用tab补全,回格删除,上下方向键记忆等命令。但是没有cp命令。

                //执行这个命令后显示$(precmd)$USER@$HOSTNAME:${PWD:-?}#

 

 

拷贝bin/sbin/data/busybox/

$ ./adb pushbin /data/busybox/bin      //可以使用如cpgrep等命令

$ ./adb push sbin /data/busybox/sbin  //可以使用如ifconfiginsmodlsmod等命令

 

target #export //查看系统环境变量,发现存在PATH,不用增加,只需用修改即可。

 

target #export PATH=/data/busybox/bin:/data/busybox/sbin:$PATH   //添加binsbin到路径中,

//注意顺序:将binsbinAndroid系统自带的/system/sbin/system/bin前面,不然会优先使用Android系统的命令。

 

target #$PATH

/data/busybox/bin:/data/busybox/sbin:/sbin:/system/sbin:/system/bin:/system/xbin:/data/busybox

             

      

Android系统启动时自动添加busybox工具路径,修改启动文件init.rc

             每次启动Android都能自动启用busybox命令工具,修改Android系统启动文件/init.rc如下: 

# setup the global environment

#export PATH /sbin:/system/sbin:/system/bin:/system/xbin                                                                         //注释掉Android系统PATH

export PATH /data/busybox/bin:/data/busybox/sbin:/sbin:/system/sbin:/system/bin:/system/xbin //优先使用busybox的shell

//如果在Android系统中不好改,可以将这个文件通过ADB传到linux系统中修改好后再传回去

 

#service console /system/bin/sh          //注释掉Android系统自带的shell

service console /data/busybox/bin/sh   //使用busyboxshell

console

      

保存init.rc后,重启系统,就能正常使用busybox的各种工具了!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐