Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

修正 A1-810 在 root 之後, Superuser 無法正確更新 su 執行檔的問題
post by tommy @ 02 十二月, 2013 13:06

最近發現 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 是什麼就建議不要做了).

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 57 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS