最近因為上課需要拿到了一張 Android (2.1) 開發板,但是卻發現原生 Image 中沒有編譯 Busybox 進去,導致很多常用的 Linux 指令(如 [ls -a]、[cp ] …)都不能用,再加上這片板子的 Android 版本太舊,無法使用 Busybox App 的自動安裝方式,那就嘗試自己來透過 ADB Shell 裝裝看了。
首先先至 Busybox 官方網站的下載區,下載已編譯好的 Busybox Binary,選擇較符合系統版本的 Busybox,並選對自己設備上的 CPU 架構,可以先以 adb shell 取得板子上的 shell,再透過以下指令查詢:
cat /proc/cpuinfo
從圖中可以看見我這塊板子的 CPU 架構是 armv6l,因此找到對應的 Busybox Binary 下載下來,並透過以下指令由本機 push 進板子中。
adb push busybox /data
或是板子上的 system 分區如已掛載(mount)好,也可以直接 push 到安裝指定的位置
adb push busybox /system/xbin
接著使用 adb shell 至板子上進行操作,如 system 分區尚未掛載或處於 Read-only 狀態,先透過 mount 指令確認 system 分區對應到哪一個 mtdblock
再透過以下指令掛載 system
mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
如果原本是放在 /data 中,由於沒有 Busybox 因此不支援 cp 指令,可以透過以下指令複製到 /system/xbin 中
cat /data/busybox > /system/xbin/busybox
如此一來等同於將 busybox 複製到 /system/xbin 中,接著進入目錄中修改檔案執行權限
cd /system/xbin chmod 755 busybox
並輸入以下指令進行安裝
/system/xbin/busybox --install /system/xbin
無任何錯誤提示並返回 shell 後,可以輸入 ash 以及 cp 指令等等,看看是否有成功安裝 Busybox。
ash 以及 hush 是 Busybox 提供的進階 shell,支援自動完成(Auto-Complete)以及上下鍵取得歷史操作的功能,也就是熟悉的 Linux bash shell。
確認沒問題後即完成 Busybox 在 Android 上的 ADB Shell 方式安裝。
…