Android系统中添加busybox工具

来源:互联网 发布:新加坡老巴刹 知乎 编辑:程序博客网 时间:2024/05/09 10:45
目的

Android自带了命令工具集,但是使用起来很不方便,且很多linux上常用的命令都不支持,如不能使用cp,grep,tab补全,回格删除,上下方向键记忆等等。所以,我们需要在Android系统中添加linux系统常用的工具集——busybox。

环境说明

硬件环境:DM3730 EVM

软件环境:TI_Android_FroYo_DevKit-V2.2

Host主机环境:Ubuntu10.04

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

配置ADB工具

ADB( Android Debug Bridge)工具一个调试和桥接工具,普遍地运用于Android系统和PC之间。可以有如下用途。

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

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

u 调试应用程序

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

ADB连接Host和board可通过如下方式:

u USB (Linux和Windows)

u USB Ethernet

u Ethernet

3.1几个ADB常用命令

查看设备

$> adb devices

登录设备shell

$>adb shell

从电脑上发送文件到设备

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

从设备上下载文件到电脑

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

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

显示帮助信息

  $>adb help

  这个命令将显示帮助信息

3.2通过USB来连接ADB

说明,此种方式上传文件到target上失败,但是可以从target上下载文件到PC。

使用mini-usb cable(USB OGT端口)连接DM3730和PC机,在虚拟机的右下角USB图标处点击选择连接USB设备,此时在Windows上会弹出安全卸载的提示。

进入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 //杀死在运行的server

sudo ./adb start-server //创建新的server

* daemon not running. starting it now *

* daemon started successfully *

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

List of devices attached

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

3.3通过Ethernet连接ADB
3.3.1 Target板上设置

设置IP地址:

target #> netcfg

lo UP 127.0.0.1 255.0.0.0 0x00000049

eth0 UP 192.168.0.111 255.255.255.0 0x00001043 //设置ip地址可以在图形界面中的ethernet配置中设置,也可以通过命令配置。

配置ADB后台程序:

target #> setprop service.adb.tcp.port 5555

重启adb服务

target #> stop adbd

target #> start adbd

3.3.2 Host主机端设置

设置adb连接:

$> export ADBHOST=192.168.0.111 //此IP时上边板上设置的。

$> adb kill-server //关闭ADB服务

$> adb start-server //重开ADB服务

检测adb设备:

$> adb devices

List of devices attached

emulator-5554 device //通过ethernet连接的ADB是以emulator开头的

编译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

5.1将编译的busybox传送到target上

$ ./adb push busybox /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命令

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

5.2拷贝bin和sbin文件到data/busybox目录中

$ ./adb push bin /data/busybox/bin //可以使用如cp,grep等命令

$ ./adb push sbin /data/busybox/sbin //可以使用如ifconfig,insmod,lsmod等命令

target #export PATH=/data/busybox/bin:/data/busybox/sbin:$PATH

//添加bin和sbin到路径中,不过要将bin和sbin放在Android系统中自带的/system/sbin和/system/bin前面,不然会优先使用Android系统的命令。

target # $PATH

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

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

5.3修改启动文件init.rc

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

# setup the global environment

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

#export PATH /sbin:/system/sbin:/system/bin:/system/xbin

//这样在启动系统时,便会自动添加busybox工具路径。如果在Android系统中不好修改,可以将这个文件通过ADB工具传送到linux系统中修改好后在传回来。

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

service console /data/busybox/bin/sh //使用busybox的shell

console

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

遗留问题

在通过USB连接的ADB工具中,不能上传文件到DM3730板上系统中。


from:http://www.61ic.com/Mobile/Android/201206/42661.html

原创粉丝点击