在Android模擬器下添加busybox

1 什麼是busybox?
     BusyBox 是一個集成了一百多個最常用linux命令和工具的軟件。BusyBox 包含了一些簡單的工具,例如ls、 cat 和 echo等等,還包含了一些更大、更復雜的工具,例如 grep、find、mount 以及 telnet。有些人將 BusyBox 稱爲 Linux 工具裏的瑞士***。簡單的說BusyBox就好像是個大工具箱,它集成壓縮了 Linux 的許多工具和命令。也包含了 Android 系統的自帶的shell.其官網是:http://www.busybox.net/


   爲什麼要在Android中加入busybox?

   用過adb shell的人應該知道,在默認情況下,adb shell下是不能用clear,grep, find,vi等指令的,甚至連Tab鏈自動補全功能都不能用,對於已經習慣了使用這些指令的碼農們來說,這是件比較悲摧的事情。幸運地是,我們有了busybox.

2 下載busybox
打開下載界面:http://www.busybox.net/downloads/binaries/ ,如下圖:

\

選擇最新的版本: 1.19.0, 然後進入下一個界面:
20120407031636826.png
選擇適合你的設備的版本進行下載,這裏我們爲Android模塊器下載busybox-armv6l,現在可以下載busybox-armv71,下載下來後,將其重命名爲busybox:

$mv busybox-armv7l busybox

$chmod 755 busybox


3 放入模擬器
首先用adb shell進入模擬器,在/data目錄下新建一個busybox的目錄,然後將busybox放入此目錄下.


#cd /data 
#mkdir busybox 
#exit 
$adb push busybox /data/busybox 

如下圖:

\


 

4 安裝並運行busybox所提供的工具
重新adb shell連接上模擬器,進入到/data/busybox目錄下,然後輸入

#./busybox clear試試是不是就可以生效了呢?呵呵

可是這樣還是不是很好使用,因爲每次使用 busybox命令時都得在命令行前面加上./busybox前綴,這個很麻煩,因此,我們先將bosybox提供的這些命令安裝到模擬器下,就可以省去這些麻煩了。

安裝:

在/data/busybox當前目錄下,輸入: 

#./busybox --install ./
--install 後面的./表示安裝到當前目錄,之所以要安裝到當前目錄,是因爲默認安裝到/system/bin目錄下或/system/xbin目錄下是不能成功的,因爲沒有足夠的權限.

然後在當前目錄下再次輸入:

#./clear可以看到clear命令生效了,比之前已前進了一步了.不過還是不是很好,因此運行 busybox所提供的指令必須進入到/data/busy目錄或在指令中輸入./data/busybox/clear,諸如這些的指令,還是比較麻煩,因此,接下來需要修改一個PATH的值:

# export PATH=/data/busybox:$PATH
然後試着在任何目錄下運行clear,可以看到已經OK了。恭喜你,終於安裝busybox成功了!

不過,還是有些東西不是很方便,至少還存在以下三個不足之處:

[plain] 1 Tab 鍵的自動補全功能還是不行. 
2 #號前沒有顯示當前路徑,這使我們經常不知當前已經進入到目錄的哪一層了. 
3 退出adb shell後再次進入,得重新設置PATH值才能恢復方便使用busybox工具. 
1 Tab 鍵的自動補全功能還是不行.
2 #號前沒有顯示當前路徑,這使我們經常不知當前已經進入到目錄的哪一層了.
3 退出adb shell後再次進入,得重新設置PATH值才能恢復方便使用busybox工具.
至於前面這個問題,其實busybox下有一個ash的shell,直接運行它:

# ash 

然後我們就可以試試,看看是不是tab鍵自動補全功能還顯示當前路徑的功能已經有了呢.OK,前面兩個問題已經解決,下次我去使用bosybox的時候,首先先運行ash就可以了.這樣運行之後,原本沒有任何顏色的顯示也會變成豐富多彩起來,如下圖所示:

\


 

還剩下最後一個問題.最後一個問題的解決方法,在adb shell後,Android模擬器根目錄下有一個init.rc文件.如上圖,用vi打開(vi也是busybox提供的工具),在最後一行加入如下指令:

[plain] # export PATH=/data/busybox:$PATH 
# export PATH=/data/busybox:$PATH然後保存,系統提示當前文件爲只讀文件,不能保存.看來沒有寫的權限,需要獲取足夠權限後再來修改此文件,然後保存才能解決此第三個問題.

估計在adb 下是不能修改它的,使用串口連接,串口連接爲root權限,這樣便可以修改init.rc文件。



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