[技術] Milestone上安裝Busybox

Written on 1:09 下午 by Yu Lai

最近在Milestone上玩起adb和Terminal,發現原有的shell真的難用到爆,
再加上一堆指令不內建,於是想自己編busybox來用用。

首先先搞定Milestone的Cross-Compiler,不外乎以下幾種方法:
1. 自己手動抓binutil, gcc等回來自己慢慢編成target=ARM。(PS:會很慢)
2. 到Android Open Source Project的網站抓prebuilt.git裡編好的toolchain。
http://android.git.kernel.org/?p=platform/prebuilt.git;a=tree;f=linux-x86/toolchain/arm-eabi-4.4.0;
點選snapshot即可下載,大概是74mb左右.我是抓arm-eabi-4.4.0的。
3. 到CodeSourcery抓Sourcery G++ Lite Edition for ARM
http://www.codesourcery.com/sgpp/lite/arm點選Download。

接著去抓busybox的原始碼回來,解開後先按make menuconfig進選單,
此時記得把cross-compiler的位置指定好,
同時把Build BusyBox as a static binary (no shared libs)勾選起來。
其實勾選static binary是比較花code size的,但沒辦法,
懶得hack busybox去配合Bionic Libc,要花太多effert。
所幸編出來的code size也不至於爆肥到哪去 XD。
接著把要編出來的applet選好,存好後敲make開始編囉。

編出busybox後,由於Android內的/system預設是read-only的,
所以我們使用adb push的方式先將busybox丟到/data下。
./adb push busybox /data
接著使用adb shell操作把/system重新mount再把busybox丟過去。
./adb shell
$ su <- 變root
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock6 /system
# cd /data
# chmod +x busybox
# ./busybox cp busybox /system/xbin <- 因為內建的cp難用
# cd /system/xbin
# ./busybox --install <- 安裝links
# cd /data
# rm busybox
# mount -o ro,remount -t yaffs2 /dev/block/mtdblock6 /system
# exit
$ exit

接著就可以使用到busybox所提供強大的功能啦 :)

Milestone 2.1 root心得

Written on 10:10 上午 by Yu Lai

其實拿到手機第二天就被我root了。 XD
只是我這陣子忙著弄rstp到現在才有空把這些資訊整理出來。

首先Milestone的Boot Loader除了原本Loader的功能(Load Kernel & FS then Go)外,
還具有2個特別的功能:
  1. Program SBF file。
  這個功能是Loader提供了一個介面,讓安裝了RSD Lite的PC透過USB連接線,
  直接將Image(SBF file)直接燒錄到Milestone的flash裡。
  這裡有官方提供的SBF檔,請小心對應版本。
  http://and-developers.com/motorola_milestone:sbf

  2. Recovery Mode.
  這裡提供Apply sdcard:update.zip與factory reset等功能。

而在2.0.1版本前取root的方法不外乎進Loader的Recovery Mode,
將su與Superuser.apk包成update.zip的方式更新到系統中。
但Motorola官方釋出了Milestone 2.1的更新版中的Recovery mode已經使用新的簽證,
所以無法再繼續使用以前的update.zip來騙過系統作假更新,
也就是不吃使用者自訂的update.zip,這導致無法透過此方法取得root。

沒關係,山不轉路轉,既然新的Recovery Mode不能用,我們就把它更新回舊的。
網路上有人把2.0.1的Recovery Mode從2.0.1的更新檔中抽出來并包裝成SBF檔提供使用。
檔案在此:SHOLS_U2_01.14.0_recovery_only.zip (mediafile)或(bandongo)。

接著去下載Motorola工程師專用的RSD Lit軟件並安裝到Windows內,
http://www.multiupload.com/SIYSOH7VTU

然後如果沒有安裝Motorola USB driver,
請先安裝: Windows 32-bit Driver / Windows 64-bit Driver

接著先把Milestone關機,接上USB連接線,把鍵盤推開,
按住"上"鍵不放再按電源鍵啟動Milestone。
等到出現Bootloader裡面後,在Windows裡開啟已安裝的Motorola RSD Lite。
接著在RSD Lite軟件上的Filename裡按 [...],指定剛下載的SBF檔案,
然後按[Start]開始還原,待還原程序完成100%時,手機就會自動重啟。
此時你的Milestone就會具有2.1的System與2.0.1的Recovery Mode。

再來去下載milestone_root.zip到電腦裡,http://www.sendspace.com/file/5cvh9e
把檔名改為update.zip放到Micro SD Card的根目錄 / 內。
接著進到Recovey Mode,有2個方法:
  1. 先關閉milestone電源,然後推開鍵盤,按住"上"鍵不放再按電源鍵啟動Milestone,
  直到看見白色三角形標置。此時可放開按鈕,再長按"音量增大鍵"+"照相鍵"一下,
  便進入了 Recovery Mode。
  2. 使用Android Debuging Bridge Tool (adb tool),# adb reboot recovery。

Recovey Mode用鍵盤的5方向鍵選到Apply SDcard: Update.zip按下去執行等到
"Install from sd card complete"字句出現。接著選擇"Reboot system now"重啟Milestone,
待開完機後檢查app裡有沒有"Superuser whitelist"存在即可知道有否root成功。

[閒聊] 新玩具-Motorola Milestone

Written on 9:15 上午 by Yu Lai

哇哈哈,昨天去敗家了。
敗了一台Moto的Milestone回來,
Android機器人我來啦~。