[Q] kitkat mount and verify /system as rw - Java for Android App Development

I'm struggling to get an app to run a "mount -o rw,remount /system" command and correctly verify that it is in actual fact remounted as rw. The code is doing it's job, and can write to the system partition, but only if I bypass the verification step which (by design, obviously) stops it from progressing.
I'm not at my computer right now, but I can provide the code if need be.
I'm currently using the source of an existing app, and just tinkering at the moment, as the app in question currently doesn't work on 4.4.2.
Thank you in advance!!
Sent from my GT-I9300 using XDA Premium 4 mobile app

UPDATE
With a bit of terminal emulator experimentation on device, I've identified that as an unprivileged user, even if remount to rw was successful, running "mount | grep system" still shows the flag "ro". Yet running "su -c mount | grep system" shows "rw".
So this narrows done my question. How can I get the app to query the same info as root to obtain the true flag? I'm pretty new to Java and android programming and not having much luck understanding the android API.
Thanks again!
Sent from my GT-I9300 using XDA Premium 4 mobile app

Related

[Q] adb help

Can somebody please explain the difference between these two commands.
1) mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
2) mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
In adb I'm using the latter to mount my system dir as rw. I perform what I have to then issue the next command:
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
But it tells me the device is busy and to try again later. Well it never lets me remount as ro so I just exit, perform a reboot of the phone, and it is back to ro. I can't help think this is not a good way of doing it though. So I was gonna try this other command but don't know what exactly either is or the difference between the two. Anyway some help would be greatly appreciated.
***EDIT***
OK I finally got it to work. Seems you can not enter adb, root, exit adb, then enter adb again, attempt to unroot. The unroot takes and all works until I try to remount as ro, then I get above problem. Now when I root, exit adb, reboot phone, re-enter adb, and attempt to unroot everthing goes as expected with remounting as ro.
So thanks for anybody that at least took a look at the thread. Seems I have it squashed though. If you are wondering I'm testing some things out that is why I'm rooting, and unrooting back to back.
I don't even bother remounting. I just type #reboot. It will remount, by default, when the system starts up.
Str0ntium said:
I don't even bother remounting. I just type #reboot. It will remount, by default, when the system starts up.
Click to expand...
Click to collapse
Yeah that's what I had to resort to, but as I stated. I just can't help think that's not a good practice to get into.
Anyway I found what was causing my trouble and remounting as ro with the previous command works fine.
Sent from my DROIDX using Tapatalk
To answer your question about the difference in the two commands... The yaffs2 or ext3 is the specifying the you're off file system you are mounting as.
overfiendx2 said:
Can somebody please explain the difference between these two commands.
1) mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
2) mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
In adb I'm using the latter to mount my system dir as rw. I perform what I have to then issue the next command:
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
But it tells me the device is busy and to try again later. Well it never lets me remount as ro so I just exit, perform a reboot of the phone, and it is back to ro. I can't help think this is not a good way of doing it though. So I was gonna try this other command but don't know what exactly either is or the difference between the two. Anyway some help would be greatly appreciated.
***EDIT***
OK I finally got it to work. Seems you can not enter adb, root, exit adb, then enter adb again, attempt to unroot. The unroot takes and all works until I try to remount as ro, then I get above problem. Now when I root, exit adb, reboot phone, re-enter adb, and attempt to unroot everthing goes as expected with remounting as ro.
So thanks for anybody that at least took a look at the thread. Seems I have it squashed though. If you are wondering I'm testing some things out that is why I'm rooting, and unrooting back to back.
Click to expand...
Click to collapse
Sent from my DROIDX using XDA App
SysAdmin-X said:
To answer your question about the difference in the two commands... The yaffs2 or ext3 is the specifying the you're off file system you are mounting as.
Click to expand...
Click to collapse
Thanks for the response. Could you explain in more detail. I don't understand what you mean. Again thank you for taking time with such a noob thing.
Sent from my DROIDX using Tapatalk
mount command line options...
"-t <option>"
"t" stands for "type" and <option> = the linux filesystem type. Linux supports many. "yaffs" = "yet another flash file system" (lot's of tongue-in-cheek developers work on linux). "yaffs2" is v2 of this type of file system.
ext3 is a widely used linux file system.
essentially, the filesystem type tells linux how the data is actually organized on the disk.
the /dev/... that follows is the raw device to associate the filesystem type with.
So I take it that the phone or more directly adb can handle either file system? What of the mtdblock4 and mmcblk1p21 entries? I guess i just don't understand how two so different commands can mount/unmount the same folder. Again thank you very much for your time.
Sent from my DROIDX using Tapatalk
well, adb is just a way to open a terminal session on your phone. Think of it like opening a command prompt on windows. So it is the linux OS on your DX that is processing (handling) the command.
The two commands mount different raw devices (that actually are formatted with different filesystems) to the same "/system" mountpoint. In linux, a mountpoint is kind of like a drive letter would be in dos. What's cool about linux is that you can mount a raw device anywhere in the filesystem tree (where the root is specifiied as "/"). Windows provides that same functionality now with it's ability to map devices to folders.
I believe I'm beginning to wrap my head around it. Been fool'n w/ computer for awhile. I really have no excuse to be so illiterate on linux. I really need to just dig in. Any suggested starting points? I really loved dos and miss it so. lol. So I'm thinking I will probably enjoy linux more.
Sent from my DROIDX using Tapatalk
+5 to sleuth's response! I forgot to kinda expand on the rest of the command. Thnx sleuth for filling in the rest.
Sent from my DROIDX using XDA App

My first script!

So I got sick of typing
$su
#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
#chmod 777 /system
So I wrote a script and I just click on it in gscript.
Does this officially make me a white belt, lowest rank possible dev? Aahaha
Pm me and I can send you the script if you want haha.
(Yes, you are all supposed to laugh and make fun of me now)
Sent from my HTC Vision using XDA App
Ill give you a pat on the back. That's one small step to being a scripter
Also note you can do things in dos for adb
Sent from my T-Mobile G2 using XDA App
might as well post it publicly, i'd be interested in that script, i'll send pm as well
jontornblom said:
So I got sick of typing
$su
#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
#chmod 777 /system
So I wrote a script and I just click on it in gscript.
Does this officially make me a white belt, lowest rank possible dev? Aahaha
Pm me and I can send you the script if you want haha.
(Yes, you are all supposed to laugh and make fun of me now)
Sent from my HTC Vision using XDA App
Click to expand...
Click to collapse
Atleast u know how to do a script, I dnt even know how to use ADB.. root guided by youtube, I dnt mod my phone w/o watching video carefully n step by step method..
Cheers.. future DEV
Sent from my HTC Vision using XDA App
Congrats on the script! It's get's easier now that you have the concept - then it gets hard again lol.
While we're on the subject of scripting - any reason you choose that system rw mount script? There's 3 ways I've seen it done and they are all completely different... maybe the have different functions?
Again, good job and I like your idea. I saves a lot of typing especially with those commands since we type them a lot.
I think just by writing a successful script.. you are already above MANY xda users.
Kudos.
jontornblom said:
$su
#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
#chmod 777 /system
Click to expand...
Click to collapse
So this is the part where you tell me what it does, right?
omarsalmin said:
So this is the part where you tell me what it does, right?
Click to expand...
Click to collapse
His script mounts the system as rw.
Sent from my T-Mobile G2 using XDA App
Nice script
What I do is a little different. I have it saved as my initial command for terminal, so it starts whenever I use terminal.
The code I use is this:
export PATH=/data/local/bin:$PATH
su
mount -o rw,remount /system
I am obvlious though as to why you put yaffs2 and mtdblock3 and all that, I never thought it was necessary since it works just fine without it. I'm not too keen on linux syntax though so its probably obvious but I'm curious anyway.
Sent from my HTC Vision using XDA App
mejorguille said:
Nice script
What I do is a little different. I have it saved as my initial command for terminal, so it starts whenever I use terminal.
The code I use is this:
export PATH=/data/local/bin:$PATH
su
mount -o rw,remount /system
I am obvlious though as to why you put yaffs2 and mtdblock3 and all that, I never thought it was necessary since it works just fine without it. I'm not too keen on linux syntax though so its probably obvious but I'm curious anyway.
Sent from my HTC Vision using XDA App
Click to expand...
Click to collapse
That's what my question was too lol. It's a great script especially for his first but now he should make it less bulky. If it's being ran in terminal as a script then all he would really need is this:
Code:
#!/system/bin/sh
mount -o remount,rw /system
I don't believe you need to use su before running it but I always do just in case.
Of course you'll want to make a /system ro script (unmount) too so you're not always in mounted in rw access.
funkadesi said:
I think just by writing a successful script.. you are already above MANY xda users.
Kudos.
Click to expand...
Click to collapse
Haha, thanks!
I found that leaving out the yaffs2 etc didn't work. I read somewhere that you need this line with certain kernels. I wish I could give you a more learned answer though.
I'm thinking it's a good idea to put the system back in ro too, actually. Now I'll have made two scripts haha
Sent from my HTC Vision using XDA App
Not positive on all of this, so someone can correct me if I'm wrong, but
Code:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
is used to mount system by accessing the NAND (hence the yaffs2 filesystem and mtdblock device). Many of the older Android guides use this command (since the older phones all used raw flash).
The Vision (and many of the newer phones) use an eMMC though, which has an FTL to present the NAND as a block device to the OS (just like a hard drive). This is why in many of the guides written nowadays, you'll see something more like this:
Code:
mount -o rw,remount -t ext3 /dev/block/mmcblk0p25 /system
This accesses the eMMC as a native block device (hence the ext3 filesystem). This is probably the "more correct" way of mounting the partition as it utilizes the actual FTL controller on the NAND as opposed to the more inefficient linux virtual block driver (what mtdblock does), so it's a little cleaner from a software development standpoint. Both commands accomplish the same thing though, so you could really use either.
The shortened form of the remount is what others have been listing:
Code:
mount -o rw,remount /system
Basically, since the system partition had already been mounted by the OS on boot, it should already know the proper way to remount it (i.e., you don't have to retell it the device or filesystem used). I don't believe this command will work on every ROM out of the box though (requiring either Busybox to have been installed or ro.secure=0 to be set in your default properties, maybe both).
Excellent and informative post! So is the reason why the
Mount -o rw,remount /system
Command doesn't't work for me is because busybox isn't installed? I'll test this out right now...
Also, I was thinking chmod 777 might be redundant because the system is already rw. Is this true? My understanding is the chmod 777 simply sets whatever path after it as modifyable. Is there a difference between rw and being able to modify files in linux?
Sent from my HTC Vision using XDA App
Hmm. When I try the stripped down command, I get the usage message...
Sent from my HTC Vision using XDA App
jontornblom said:
Excellent and informative post! So is the reason why the
Mount -o rw,remount /system
Command doesn't't work for me is because busybox isn't installed? I'll test this out right now...
Also, I was thinking chmod 777 might be redundant because the system is already rw. Is this true? My understanding is the chmod 777 simply sets whatever path after it as modifyable. Is there a difference between rw and being able to modify files in linux?
Sent from my HTC Vision using XDA App
Click to expand...
Click to collapse
Well if you want to know if you have busybox just do this:
Code:
su
cd /system/bin
busybox
That should start busybox. It will say 'not found' if you don't have it - so if you need it the easy way is to use titanium backup to install it.
Btw, ianmcquinn that was very informative and well written. Thanks for explaining it so well.
Definitely have busybox. Definitely still just gives me the usage information...weird.
How do I set secure=0?
Sent from my HTC Vision using XDA App
ro.secure=0 is standard on most roms, so I asume you are just using a rooted stock build? You will need to unpack your kernel, change the ro.secure from a 0 to a 1, and repack the kernel. If you don't know how to do that, use this.
jontornblom said:
Definitely have busybox. Definitely still just gives me the usage information...weird.
How do I set secure=0?
Click to expand...
Click to collapse
What ROM you are using now? VillainROMZ?
Sent from my HTC Desire Z, using magic XDA app
AllWin said:
What ROM you are using now? VillainROMZ?
Sent from my HTC Desire Z, using magic XDA app
Click to expand...
Click to collapse
Virtuous 0.9.0
Sent from my HTC Vision using XDA App
I don't use Virtuous, but I would be shocked if it didn't already have ro.secure=0 set already. You can check by typing this in terminal:
Code:
getprop ro.secure
It should return a 0. This property is set in the ramdisk within your boot.img. To set it yourself, you would have to unpack the image, modify the setting in the default.prop file, repack the image, and then flash it back to your phone. As was said earlier though, pretty much all of the custom roms set this for you already.
Not sure what is going on in your case then. Maybe try running the mount command explicitly through busybox to see if that is the problem.
Code:
busybox mount -o rw,remount /system
If this works, sounds like you may want to reinstall busybox since the symlinks were not properly set up. Another thing maybe worth trying is to swap the order of remount and rw in the options. I've seen reports of this making a difference for some people, but have no clue why it should (maybe different versions of the mount command/busybox). Kind of a long shot. So try either of these commands:
Code:
mount -o remount,rw /system
busybox mount -o remount,rw /system
EDIT: In case you were curious, here's a link I had bookmarked about how to edit the boot.img. I'm sure there are others out there as well.

[Tip] Make getting read/write access easier

If you are having trouble getting read/write access, try the following code in either Terminal Emulator on the device or through 'adb shell' from your computer:
Code:
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
That has worked for me without fail on multiple Android devices (Hero CDMA, NS4G, Sprint Galaxy Tab w HC, Samsung Moment). Obviously, you need to have Busybox/Superuser installed.
This is useful for removing stubborn, factory-installed applications (Sprint, I'm looking at you!). However, you need to type this every time you want get read/write access which can be very hard using Terminal Emulator and tiny soft keyboards on the device. One way around it is creating a simple shell script. One example is below. I named mine 'readwrite' but you are free to name it whatever you want.
Disclaimer: I am not responsible if this screws your phone up, blows your phone up, or makes your phone hate you. It usually is pretty safe but still proceed with caution and type commands exactly as shown. Your mileage may vary.
Code:
su
cd /system
cat > readwrite
#! /system/bin/sh
echo -n "Mounting file system as read/write"
mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
echo -n "Finished mounting system as read/write"
exit
Press <ctrl><d> when done. Usually, <ctrl> is Vol-Dn button on most devices. Check 'Special Keys' section within Terminal Emulator to be sure.
Now time to make the script executable. Type in
Code:
chmod a+rwx readwrite
To double check that readwrite is executable, type in
Code:
ls -al
The the first column of the row containing readwrite should read "-rwxrwxrwx"
Now, to get read/write access anytime you wish on the go, just type in the following in Terminal Emulator:
Code:
su
cd /system
sh readwrite
That should do it
PS: If you have Root Explorer, by all means use that. My understanding is that the application is not free. This tutorial is for cheapstakes like me
This isn't easy, this is pretty difficult for the noobs.
An easy way would be to download 'mount /system rw/ro' from the market, enable it to run after boot, mount rw and grant it su access. Now that's simple.
Sent from my GT-P1000 using XDA Premium App
I agree this is not the easiest way to do it but is just another option. I for one hate installing applications if I can get the job done myself
GANJDROID said:
This isn't easy, this is pretty difficult for the noobs.
An easy way would be to download 'mount /system rw/ro' from the market, enable it to run after boot, mount rw and grant it su access. Now that's simple.
Sent from my GT-P1000 using XDA Premium App
Click to expand...
Click to collapse
manfa said:
I agree this is not the easiest way to do it but is just another option. I for one hate installing applications if I can get the job done myself
Click to expand...
Click to collapse
heheheh....so why use windows when you can use DOS?

Cant acquire root privileges

Im having trouble with root privileges, I rooted my phone for the first time the ohter day using the user guild for noobs and had a froend help who knew what he was doing. Everything went well and the phones running a treat. Only issue I got is I dont have root privileges and I dont know why? Any suggestions?
Not sure what info you may require.
Explain how you rooted and your software (os) version so we can help you better.
Sent from my GT-I9000M using Tapatalk
xxbeanxx said:
Explain how you rooted and your software (os) version so we can help you better.
Sent from my GT-I9000M using Tapatalk
Click to expand...
Click to collapse
I used the noob guide on this site
http://forum.xda-developers.com/showthread.php?t=1139050
and these files
GT_I9000_XXJVQ_XXJVQ_OXAJVQ_Sbl.exe
CSC_OXAJVQ.tar.md5
PDA_XXJVQ_Sbl.tar.md5
PHONE_XXJVQ.tar.md5
using
Odin_v1.82_and_512.pit_513.pit_803.pit_files.exe
So you flashed the CF rooted kernel?
Try putting your phone in debug mode and open a shell to it using adb. Once inside check to see if the su binary is in /system/xbin.
ie:
Code:
adb shell
$ ls -l /system/xbin/su
if you see something like this, you're golden:
Code:
-rwsr-sr-x root root 26264 2011-08-16 15:49 su
(also notice the permissions, it needs to be setuid, although I would guess if it is there it is unlikely it is not setuid)
if you see this, something's wrong:
Code:
/system/xbin/su: No such file or directory
if you have su, have you installed the superuser app from the market?
if not, you have to figure out why..for example, do you have space on your /system filesystem?
Code:
$ df /system
Filesystem Size Used Free Blksize
/system 275M 256M 19M 4096

Error installing clockwork recovery

Not sure why it's doing this, but whenever I try to install clockwork via the terminal based instructions, terminal comes back with "cannot create system/etc/install-recovery.sh: read-only system file"
I seem to have a real root, I have no trouble running apps that require root and have superuser app in there.
I keep messing in terminal with different commands but it always hangs up there.
Any ideas?
Sent from my ThinkPad Tablet using xda premium
try Terminal Emulator from Market. There you have to type everything on your tablet.
hope it will help.
I should have been more specific, but that is what I'm using on my thinkpad.
Type: su
Prompt changes to #
Type: mount -o rw,remount /system
Now you should be able to write the file.
After that type: mount -o ro,remount /system

Categories

Resources