其實, 只是用來看看影片, 似乎也沒有 root 需求. 不過看到有 Toolkit 出來, 還是手癢試了一下.
雖然上頭說的方法似乎很簡單, 不過.... 由於我買的是台灣的版本, 不是國際版, 據說直接刷 system.img.gz進去會造成重開機無窮迴圈 (其實有解, 只是等於整個刷成國際版了). 所以... 就只抓 toolkit 回來, 到 linux 底下做.
首先找台 Linux 的機器來用, 如果沒有的話 (對, 我也沒有, 我都是當 server 用, 其他用的機器都是 Windows), 就抓個 Ubuntu 或其他有 live cd/dvd 的版本都可以, 或者是用 SystemRescueCD (我是用這個) 來用就可以了.
1. 打開一個終端機, 如果不是 root, 就 sudo su - 切到 root 的環境.
2. 把 toolkit 抓下來, 解開來, 放在可以執行的目錄下, 例如: /root/toolkit
3. 如果你用的環境沒有 sudo (我用 SystemRescueCD 就沒有, 直接就是 root), 就修改 /root/toolkit/.toolkit.py 的內容, 把 sudo 都換成空白. (如果有 sudo 就不用)
4. 把 A1 用 USB 接上去 (先充飽電吧, 刷一半沒電可能就掛了), 先到設定 -> 顯示, 把休眠改成永不.
5. 如果你的開發人員選項沒打開, 請到設定 -> 關於平板電腦, 好像是影像版本 (或版本號碼, 忘了是那一個), 連續點七下以上, 就會打開開發人員選項.
6. 到設定 -> 開發人員選項, 開啟開發人員選項, 把偵錯 -> USB 偵錯打勾.
7. 執行 /root/toolkit/toolkit.sh
8. 選 2 => A1-810
9. 選 1 => root
10. 選 1 =>Root from scratch
11. 告知需要 10 分鐘, 按 enter 開始做吧 (後面會有一堆問題, 都是按 Enter 就可以).
12. 等出現 Successfully added su binary to system.img 這個時候, 可以按 Ctrl-C 跳開. (你要繼續做也可以, 不過我做到最後, 是有 /system/bin/su, 權限也對, 不過就是不能執行.
13. 這時你就有了一個你的 A1 dump 下來的 system.img.gz 在 /root/toolkit/ 下面.
14. 如果你不嫌檔案太大, 可以抓 toolkit 那討論串第一篇文章裡頭的 system RW workaround 那個連結的 system.img.gz 回來 (有 500MB 左右), 或者直接抓我下面這個檔案 (只抓取那個 system.img.gz 裡頭我們要用的檔案):
a1_su_system_rw.tgz (1.5 MB)
http://www.multiupload.nl/KE8QZ97Z3M
15. 先 gzip -d /root/toolkit/system.img.gz 成為 /root/toolkit/system.img.gz
16. mkdir /mnt/a1
17. mount -o loop/root/toolkit/system.img /mnt/a1
18. 如果你是抓上頭的個 a1_su.tgz 回來, 把它放在 /root/ 底下, 然後 cd /mnt/a1; tar zxvf /root/a1_su.tgz 就可以.
19. 如果你是抓另外那一個 system.img.gz 回來的, 把他放到 /mnt 或其他路徑下,一樣 gzip -d 解成 system.img, 然後 mkdir /mnt/a1_2; mount -o loop /mnt/system.img /mnt/a1_2
20. 用 cp -a 把 /mnt/a1_2/bin/ 下面的 busybox, wrapper.sh 與 wrap.ext (目錄) 複製一份到 /mnt/a1/bin/
21. 用 cp -a 把 /mnt/a1_2/xbin/ 下面的 su 複製一份到 /mnt/a1/xbin/ (還有 /busybox 與一堆 softlink 到 busybox 的指令)
22. 用 rm -f 把 /mnt/a1/bin/su 刪除 (如果有的話)
23. 用 cp -a 把 /mnt/a1_2/app/ 下面的 SuperSU.apk 複製一份到 /mnt/a1/app/
24. 然後 cd /root; umount /mnt/a1; umount /mnt/a1_2
26. 接著執行 gzip -9v /root/toolkit/system.img 把它再壓回 system.img.gz
26. 把 system.img.gz 放到 /root/toolkit/system_image/ 下 (或者copy 到 Windows 的環境下)
27. 再執行一次 /root/toolkit/toolkit.sh (如果你是放到 Windows 下, 就是執行 toolkit.exe, 我是在 linux 試了一次沒有成功, 就到 Windows 下用了, 不確定是 toolkit 那一段沒寫好還是我弄錯了)
28. 重複一開始的動作, 選 2 => A1-810
29. 選 1 =>root
30. 這次選 2 => Root with prerooted system.img.gz
31. 接下去應該就都是 Enter 了, 到刷好為止.
32. 刷好就拔 usb, 電源鈕按著選關機, 然後等關機再按電源鈕開機, 開機後應該就是 root 的環境了.
如果你不想自己動手做, 也不怕抓個 500MB 的大檔案, 可以直接抓我做的 system.img.gz (就是上頭那些步驟做出來的, 我的版本是 Acer_AV052_A1-810_RV18RC11_TWN_GEN1, 如果不是這個, 最好先 OTA 升級到這個版本再用, 如果你是要全部自己動手做就不用管版本):
system.img.7z.001 (100 MB)
http://www.multiupload.nl/HWZ26J92KS
system.img.7z.002 (100 MB)
http://www.multiupload.nl/VBBKSD3JQB
system.img.7z.003 (100 MB)
http://www.multiupload.nl/100Z8U6GKM
system.img.7z.004 (100 MB)
http://www.multiupload.nl/7CEP3B2XCW
system.img.7z.005 (100 MB)
http://www.multiupload.nl/B5N17J854J
system.img.7z.006 (5.3 MB)
http://www.multiupload.nl/AZY694L20A
檔案全抓下後用 7z解回 system.img.gz (不要解過頭成為 system.img 了), 放到 toolkit 下的 system_image 目錄下再執行 toolkit.exe 去 root 就可以了.
2013/7/25 更新:
有修正 /system 寫入的問題, 如果有需要就檔案再抓一次吧.
2013/7/30 更新:
之前對 /system 讀寫的修正是使用 sodaFR 所提供的方案, 由於系統本身多數的指令是透過 /system/bin/toolbox 來處理, 不過對於 mount 指令, 會限制不能把 /system remount 為可讀寫的模式. 而 sodaFR 的解決方法是加入一個 busybox 的程式, 然後透過 busybox 去 mount 就可以避開這個限制.
他寫了一個 /system/bin/wrapper.sh 的指令, 透過它去判斷是否要去 remount /system 為 rw 的狀態, 如果是, 就透過 /system/xbin/mount (softlink 到 busybox) 去處理. 其他就丟給原本的 /system/bin/mount (softlink 到 toolbox). 然後做一個 /system/bin/busybox 的 softlink 到 /system/bin/wrapper.sh, 這樣子, 只要是透過 /system/bin/busybox 去做 remount 的動作就會成功. 不是的話就會失敗.
不過.... 似乎很多程式在 remount /system 時, 並不是透過 /system/bin/busybox 去做 (為什麼要這樣做, 在 Android 有什麼限制要之樣子處理嗎? 一般 linux 的系統, 不都是直接呼叫 mount 指令來處理嗎?), 所以執行的結果就不正常. (所以上一篇我會對 OTA RootKeepert 做修正)
所以... 我就對這個再做了一點修正:
1.由於 busybox 是依據 softlink 的名稱來決定要執行什麼功能, 所以, 我們仍需要一個指到 /system/xbin/busybox 的 mount 指令, 但又不能用 /system/bin/mount 或 /system/xbin/mount, 所以... 就建一個目錄 /system/xbin/.mount_wrapper/ , 然後在裡頭做一個叫 mount 的 softlink 指到 /system/xbin/busybox, 如:
shell@android:/system/xbin/.mount_wrapper # ls -la
ls -la
lrwxrwxrwx root root 2013-07-30 10:09 mount -> ../busybox
2.把 /system/bin/wrapper.sh 改成這個樣子:
#!/system/bin/sh
CMD=`basename $0`
ARG="$*"
NEWARG="-o remount,rw /system /system/"
LArg=$(eval echo \$$#)
case "$CMD" in
"busybox")
if [ $1 == "mount" ] && [ $2 == "-o" ] && ([ $3 == "rw,remount" ] || [ $3 == "remount,rw" ]); then
if [ $LArg == "/system" ] || [ $LArg == "/system/" ]; then
/system/xbin/.mount_wrapper/mount $NEWARG
# return $?
return 0
fi
fi
/system/xbin/busybox $ARG
# return $?
return 0
;;
"mount")
if [ $1 == "-o" ] && ([ $2 == "rw,remount" ] || [ $2 == "remount,rw" ]); then
if [ $LArg == "/system" ] || [ $LArg == "/system/" ]; then
/system/xbin/.mount_wrapper/mount $NEWARG
# return $?
return 0
fi
fi
/system/bin/toolbox mount $ARG
# return $?
return 0
;;
esac
exit 0
3.然後把 /system/bin/busybox, /system/bin/mount, /system/xbin/mount 都用 softlink 的方式指到 /system/bin/wrapper.sh, 如:
shell@android:/system/xbin # ls -la mount
ls -la mount
lrwxrwxrwx root root 2013-07-30 10:09 mount -> ../bin/wrapper.sh
shell@android:/system/xbin # cd ../bin
cd ../bin
shell@android:/system/bin # ls -la mount
ls -la mount
lrwxrwxrwx root root 2013-07-30 10:01 mount -> wrapper.sh
shell@android:/system/bin # ls -la busybox
ls -la busybox
lrwxrwxrwx root root 2013-07-30 10:01 busybox -> wrapper.sh
經過這樣子的處理之後, 不管是執行 /system/bin/mount 或 /system/xbin/mount (通常都是用這兩個吧) 或 /system/bin/busybox 來做 remount /system 的動作, 都可以正常執行. 我試過沒改過的 OTA RootKeeper 或 ES File Explorer 都可以正常運作.
我把相關的檔案連同 koush 的 Superuser.apk 與 su 打包成為 su.tgz, 可以由這兒下載:
http://www.multiupload.nl/9XZ7BJ6ZH0
如果要重做 system.img.gz 的話, 就抓回去解開來用就可以. 如果已 root 的機器, 會下指令就依照上頭的方式自己做, 或直接拿 su.tgz 到 /system 解開來用也可以.
這個是 TWN RV18RC11 版本以上面說的方式做出來的 system.img.gz (因為用 dd 清過, 所以壓起來小了許多), 如果需要請自己抓回去用吧.
system.img_20130730.7z.001 (100 MB)
http://www.multiupload.nl/OG1RK9HYT9
system.img_20130730.7z.002 (100 MB)
http://www.multiupload.nl/FI6XFN8YOC
system.img_20130730.7z.003 (100 MB)
http://www.multiupload.nl/BHEPGDGXAN
system.img_20130730.7z.004 (100 MB)
http://www.multiupload.nl/KJFEVR3J6P
system.img_20130730.7z.005 (7.5 MB)
http://www.multiupload.nl/8AHGTHL6CD
解開來的 system.img.gz 的檢查碼為:
File: system.img.gz
CRC-32: ed63aebd
MD4: dbd6eafff674c4428248e6f77cc80304
MD5: f63b516201fe8d484cae9ee733bee39c
SHA-1: 1d610b9aa7339591651252404858d4601643c20e
原則上, 如果已經 root 的機器, 應該自己用 adb 進去改一改比較好, 當然.... 想重刷也可以. (不過重刷的風險畢竟比較大一些)
2013/9/19:
這是 RV21RC03_TWN root 之後的 system.img.gz, 抓回去自行改名為 system.img.gz 用 toolkit 就可以了.
File: RV21RC03_TWN.rooted.img.gz
CRC-32: adbdcb27
MD4: cf7206efec5f47991e9c3f9d71639fc3
MD5: 5bf5706461b7941e9c7199c7b373b0e7
SHA-1: 007730b4c70106d86e14e8c88aeb551542442658
RV21RC03_TWN.rooted.img.gz
https://mega.co.nz/#!hNhAlYpI!Ka7ha02qf8peTj4HV_bF1XpXC_4mUgYwSURJlTsUoss
2013/10/8:
toolkit 0.7.5 把上面的 /system rw workaround 加進去了, 以後用 Root from scratch 直接處理就可以了, 不用上面那麼多步驟停下來自己去加料了.
2013/12/2:
更正 Superuser 無法更新 su 的問題.
http://www.mobile01.com/topicdetail.php?f=605&t=3470158&p=8#47510164#47510164