本帖最後由 twu2 於 2013-12-2 14:05 編輯
最近發現 Superuser 在推出新版本時, 如果有更新 su 的執行檔, 會在這個更新的動作失敗 (還好並不像 SuperSU 之類的其它軟體一樣, 更新失敗後就會跳出, 無法使用), 所以, 雖然不更新 su 也可以正常使用, 不過... 每次進去都要問一次也不太好...
看了一下 Superuser 的原始碼, 看起來在 remount /system 為可讀寫的動作時, 是使用
- mount -orw,remount /system
複製代碼
這個指令, 而我們在 A1-810 上頭所使用的修正 wrapper.sh 是針對
- mount -o rw,remount /system
複製代碼
來處理, 也就是.... 差了一個空白, 對於參數的判斷會不正確, 所以不會正常運作.
把 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" ])) || [ $2 == "-oremount,rw" ] || [ $2 == "-oremount,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" ])) || [ $1 == "-oremount,rw" ] || [ $1 == "-orw,remount" ]; 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
複製代碼
這樣子就可以正常的處理了.
我記得當初有也其他的軟體不能正常 remount /system, 應該也是同樣的問題吧 (不過, 我沒用這些軟體... 不清楚這樣改了之後是不是就正常了).
至於.... 怎麼更新這個檔案呢? 如果你不懂 Linux 的指令, 或對命令列不熟, 建議.... 就不要改了, 畢竟沒弄好, 重開機可能會開不起來 (mount 動作無法正常運作).
如果不怕的話, 可以自己用 adb 去處理吧 (看不懂 adb 是什麼就建議不要做了).
上頭那個 wrapper.sh 放這兒:
https://mega.co.nz/#!ZI5ljLjK!XvTgqnNCU7qqm7ddziEgCANZlIU6Bdva9LMZLN-OOfw
包含這個修正的 a1su.tgz (如果你要用 toolkit 重做的話, 用這個換掉 bin/a1/a1su.tgz 這個檔案.
https://mega.co.nz/#!tBZEEBwa!d3G2FC3xj2WrOX-wn-BffwYjBPpzvjRDnDmLIaclXko
|