2025-05-17

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, 然後進入下一個界面:

選擇適合你的設備的版本進行下載,這裡我們為Android模塊器下載busybox-armv6l.
下載下來後,將其重命名為busybox:
  

 

[plain] $mv busybox-armv6l busybox 
$chmod 755 busybox 
$mv busybox-armv6l busybox
$chmod 755 busybox

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

[plain] $adb shell 
#cd /data 
#mkdir busybox 
#exit 
$adb shell push busybox /data/busybox 
$adb shell
#cd /data
#mkdir busybox
#exit
$adb shell push busybox /data/busybox
如下圖:

  

 

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

[plain] #./busybox clear 
#./busybox clear試試是不是就可以生效瞭呢?呵呵

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

安裝:

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

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

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

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

[plain] # export PATH=/data/busybox:$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,直接運行它:

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

  

 

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

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

隻可惜此文件為隻讀權限,我試瞭安裝z4root軟件獲取root權限,修改default.prop等諸多方法,都沒能保存修改init.rc的內容。。。估計在adb 下是不能修改它的,要是有誰知道方法的話,還請告知一下!

我知道的另一種方法就是在源碼下的out目錄下修改 init.rc文件,然後重新生成鏡像文件,再重新啟動模擬器,但是這種方法相當於重新刷機。有一定的局限。

 

 

摘自  放飛夢想,成就未來
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *