Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
466 views
in Technique[技术] by (71.8m points)

system - Android: how to mount filesystem in RW from within my APK? (rooted, of course)

I'm trying to write an app that copies something to the /system partition at run time. I've already implemented the ability to run terminal commands as root by requesting SU permissions. I can run a lot of commands successfully (after granting the permission request with SuperUser). However, when I try to remount /system as read/write, nothing happens. I don't get an error or a crash, and the command seems to go through just fine, but the partition stays as read-only. Here's the command I'm running (Droid X): mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system, and it works just fine if I run the same command from Terminal. And here's my code to execute root commands from within my app:

String cmd = "mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system";
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(cmd + "
");          
os.writeBytes("exit
");  
os.flush();

And then I have some code that checks the stdout and stderr streamd to see what happened. Can anyone give me an idea why this doesn't work?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I figured it out -- the command was actually successful, but it appears that the RW status only applies to the session in which it was applied. So that after one set of commands was executed under SU, the next set of commands gets the /system in RO state. All I had to do was add the command to copy the files before exiting the SU session.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...