知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
[Android 實作問題]How about running root privilege in Android OS
1樓

 I have a question about running some unit test program (shell script program, *.sh) which need root privilege in Android OS (terminal emulator). Those unit test programs are developed to test the kernel drivers and device.

Normally, the file system in Android OS are mounted with read-only and also have no setuid tool provided.  Users could not run the program which need root privilege.

How do we make the shell script program to be run by users properly in Android OS (terminal emulator)? Or install some toolkits to get the root privilege before running the program.

 

2樓
依照你的問題描述,若希望在Android 模擬器上能夠取得Root權限,
讓一些shell script能在模擬器中執行需要root權存才能存取的資料夾,或是指令.

你可以使用以下的簡單方式讓你的Android模擬器可以取得root權限.

1.啟動模擬器
2.開啟命令提示字元視窗, 輸入   adb shell  (連結進入Android 模擬器 terminal  模式中)
3.mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
4.cd /system/bin
5.cat sh > su
6.chmod 4755 su
7. su

由於上述這些指令每次重開模擬器後都要重下,你可以整理寫成一個shell script檔,進去後直接run即可.

第7步執行完後你的模擬器就有root權限,你可以試著去讀寫system/目錄下的資料,原先沒有root時會
是出現read-only, root後就可以存取了.


PS:需要注意部份:
很多人在進行root的動作時執行到cat sh > su 這個指令時會出現out off memory的錯誤訊息.
這是由於你的摸擬器是透過Eclipse的AVD管理軟體去啟動的. 就會出現這個錯誤 你需要在啟動
模擬器時自行指定-partition-size 但在Eclipse的AVD中沒有地方可以讓你去手動下emulator 指令
的參數
所以你必須使用手動下指令的方式去啟動模擬器,相關指令如下:

emulator -avd your_device_name -partition-size 128

其中your_device_name 指的就是你的AVD裝置的名稱.




3樓

Thanks for Tr. Jarey’s rapid response.

 

But those test programs are not run on 模擬器and don’t use “adb shell” to start the terminal mode. They should be run on the released Android target platform (“user” version, not “eng” version) and provide to users for testing their devices.

I could not do the “mount” and “chmod 4755 xxxx” command in the Android target platform (terminal) due to permission denied.