Android系統中添加busybox工具

一 目的

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板上系統中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章