"Hot"-writing on the / dir? - Android Q&A, Help & Troubleshooting

Hello!
I'd like to know if there's a way to write files into the main directory just before the system shutdown, something like this:
End all processes (-> unmount disks?) -> mount /sdcard rw and / rw -> copy files from /sdcard to / -> unmount disks -> shutdown/reboot
Same with boot image (flash, in this case, and not copy / mod files)... is it possible? Or do I require to boot into recovery for these operations? I know I can remount as rw my system directory via ADB
Also, is it possible to do the same thing with the build.prop file? This, or during startup (before mounting partitions with standard permissions).
Of course, this having root (but not a special kernel to enable this kind of "before mounting" thing).
Thanks

I don't know about shutdown, but you can use init.d scripts to execute stuff like that. Look for a thread called something like 'enhanced init.d support' and go from there.
Sent from my LG-P999 using xda premium

Thanks. For what I know, init.d is a script in /etc which should initialize the daemons, thus the system should already be mounted as r...

Basically, it's a folder called init.d as far as what I've seen the scripts are just shell scripts. System, data, etc will be mounted but usually /system is mounted as r/o, so you would have to have the script mount it as r/w. From my experience a kernel is needed to even get past the manufacturer's logo, I think it's key to some of the earliest operations which android requires for booting, so that you would have to do via a cwm script/zip.
Sent from my LG-P999 using xda premium

If the boot image (which contains the kernel) is just read and put to RAM, you should be able to write on it during uptime... just like what you do on the linux ditributions.

Questions or Problems Should Not Be Posted in the Development Forum
Please Post in the Correct Forums & Read the Forum Rules
Thanks ✟
Moving to Q&A

Related

write permission on / (not /system)

Hi all, probably mine is a noob question, since in android I'm quite a noob. I've been using gentoo for years though so I'm somehow confident with the shell and I'd love it to work on it on my rooted sgs2
So, basically, I searched but I didn't find (/me fool). When asking for write permission everyone is talking about /system, but not / in general. Is there a reason? If I need to copy&paste or just create a file directly in / how can I do?
Giving a #mount command shows me only this about "/" :
rootfs on / type rootfs (ro,relatime)
so there is no indication about a /dev/block adress or a "real fs" information (which for what I know is ext4). Also those informations looks like a "pseudo-filesystem" partition, like sysfs or fusefs for instance.
Looking at the rest of the "#mount" output (aka "cat /proc/mounts") I see the only other partition mounted in ro is /system, but it has a block device association and I can remount it in rw easily. Not the same with /
Can anyone clarify me please? Is there a way to mount / in rw?
This is because that's where we want to use. The system area is where modifications of the device (done by people who should know exactly what they are doing; e.g changing build.prop codes) is made. It can easily be made r/w but only if your device is rooted and in many cases S-OFF'ed. If you have root (and for some devices S-OFF), then you can just use a file explorer (which supports root functions e.g Root Explorer) to mount it as r/w (this is the easiest way).
Yes, my phone is rooted and S-OFF'd and everything's fine, I have no particular problem to fix, just wondering.
So what if anything goes corrupted in / (outside /system, /data or any other separate partition) and we need to restore it or just create a script or anything changing permissions or writing data on the / partition? Btw: for what I know about linux, the root partition (I mean "/" not "/root") must be a "real partition" with a proper fs and mount point, and not anything cached somewhere. Guess it must be the same in android too. So, where is it?
johnnystuff said:
Yes, my phone is rooted and S-OFF'd and everything's fine, I have no particular problem to fix, just wondering.
So what if anything goes corrupted in / (outside /system, /data or any other separate partition) and we need to restore it or just create a script or anything changing permissions or writing data on the / partition? Btw: for what I know about linux, the root partition (I mean "/" not "/root") must be a "real partition" with a proper fs and mount point, and not anything cached somewhere. Guess it must be the same in android too. So, where is it?
Click to expand...
Click to collapse
For Android (about corruption for the first question), people usually just reflash the rom since you wouldn't be able to boot the phone (at least fully) to be able to replace a missing file(s). Where is "/" you ask, if you open Root Explorer that's where you'll be.
I know where is "/" in that sense, I meant where is the partition or the mount point
anyway..... not a big issue. I must deduce in android, in any present past and future device, the /efs directory is mounted on a separate partition. All my guessing came mostly from that point, since I wanted to backup and most of all _restore_ that dir using the shell. Again, I don't need it now, I did my backup and I hopefully will never need a restore. Most of all in my sgs2 /efs is on a rw partition, so no issue at all even in case of deep trouble (/efs deletion).
And yep, I know about EFS Pro and similar tools, but wanted to try the sh way and to understand something more of android in general
why is the trouble EFS deletion? what is EFS partition for?
Sent from my Nexus S using XDA App
Speaking on this subject, I have tried but cannot remove the file "/sys/devices/virtual/sec/ts/touchkey_led" (trying to turn off lights behind capacitive buttons).
Does anyone know how to move/delete this?
No, led hack doesn't work on my device if you are wondering.
why is the trouble EFS deletion? what is EFS partition for?
Click to expand...
Click to collapse
/efs is where your IMEI and other critical (and legal) information of your device are stored. You should backup it as soon as you root your phone, before any other mod. Hence comes the troubles, since if you delete it for any reason, you are in deep troubles, expecially if you didn't backup it.
I have tried but cannot remove the file "/sys/devices/virtual/sec/ts/touchkey_led"
Click to expand...
Click to collapse
I'm not totally sure about what I'm saying on android, but on linux /sys is an in-memory filesystem, meaning it is generated by the system after (at) boot and it's where all your device are linked in for the kernel, so it basically manged by the kernel itself. That could be the reason why you cannot delete anything in there. But again, I'm somehow guessing so, wait for someone else to confirm (or deny)
johnnystuff said:
That could be the reason why you cannot delete anything in there. But again, I'm somehow guessing so, wait for someone else to confirm (or deny)
Click to expand...
Click to collapse
Actually you can delete items in there... but they will just be re-created .

Why does my /system & /etc mount as R/W on boot? How to fix?

Of the 20+ Android phones I have had, and each being rooted and ROM'd, this is the first that I have seen.
On the TPC ROM, when my phone boots, my /system & /etc are mounted by default as Read/Write rather than Read Only. I have no such problem when I flash SAUROM.
I can set it to R/O, reboot, it becomes R/W again.
I asked the question in the ROM thread but got no help. It seems that others don't have this problem.
Why is this and how do I fix it?
Thanks.
Edit: The mount point is /dev/block/mmcblk0p24 for /system and /etc. There are some remount commands in a file located in init.d. Could that be the cause?
I'm no dev, but have you looked at the superuser logs to see what app might be changing r/rw modes? You say when you reboot it changes back. So that makes me think an app you have auto starting is mounting the system rw to make a change and failing to mount back to R.
Go in SuperUser.. clear the logs, set it to R, make note that it saved that change in the log using whatever program you use it to set with... Reboot, check Superuser logs to see what gained root and changed it back.
snovvman said:
Of the 20+ Android phones I have had, and each being rooted and ROM'd, this is the first that I have seen.
On the TPC ROM, when my phone boots, my /system partition is mounted by default as Read/Write rather than Read Only. I have no such problem when I flash SAUROM.
I can set it to R/O, reboot, it becomes R/W again.
I asked the question in the ROM thread but got no help. It seems that others don't have this problem.
Why is this and how do I fix it?
Thanks.
Click to expand...
Click to collapse
jb0nd38372 said:
I'm no dev, but have you looked at the superuser logs to see what app might be changing r/rw modes? You say when you reboot it changes back. So that makes me think an app you have auto starting is mounting the system rw to make a change and failing to mount back to R.
Go in SuperUser.. clear the logs, set it to R, make note that it saved that change in the log using whatever program you use it to set with... Reboot, check Superuser logs to see what gained root and changed it back.
Click to expand...
Click to collapse
Thanks for the suggestion. I removed all the apps that requested SU on boot, but the ROM still had /system as R/W. I don't think it's an app doing it.
Is there a way for me to add something into a boot script to set it as R/O?
Thanks.
I'm still trying to track down this problem.
I noticed that /etc also mounts as R/W by default. I see that both /system and /etc share the same mount point: /dev/block/mmcblk0p24.
I look in init.d and found one file which contained these lines:
#mount fs for faster IO speeds
mount -o remount,nodev,noatime,nodiratime /dev/block/mmcblk0p24 /system
mount -o remount,noauto_da_alloc,nodev,noatime,nodiratime /dev/block/mmcblk0p25 /data
mount -o remount,noauto_da_alloc /dev/block/mmcblk0p26 /cache
Would the first line cause this?
Is there something I can add to init.d to re-mount as R/O?
I'm still curious as to what is causing this. Thanks for any help.
Through trial and error, I found this command works to set /system and /etc to RO:
mount -o remount,ro /dev/block/mmcblk0p24 /system
I added it to init.d, and it works. Once the phone completes the boot, those directories are RO. It's just a patch.
But nevermind that--I am still very interested in the "why" and if there is some other script/boot command somewhere that is causing this.
I'd appreciate some guidance. Thanks.

Setting system root as RW default

Hey there?
I've got a question which I can't seem to find anywhere else and YES I have searched this forum and google. However, I may miss it.
Anyway, I've mapped my android phone as a network drive using Samba and changed the smb.conf file to show the System Root directory as well. However, system root is default set as R/O so to mange files USING my computer I need to change the permission to R/W using a file manager (such as root explorer). This is annoying, as I have to keep doing this in order to write to certail directories.
What I wish to do is create a massive guide on all of this to help out the community, however I need one little bit of information.
I would like the / directory (root) to be mounted as R/W as default so that I can quickly edit files on my PC without having to constantly change it to R/O.
If this has been answered before, I do apologize.
Thanks in advance.
Regards,
xxSHABSxx
EDIT:
To make things a bit clearer.
I want something that will automatically mount my phone's root dir into rw upon boot, without custom apps/having to manually mount as rw everytime it reboots. And yes I understand there are apps that do this.
Yes, the root file system is read-only, but it's also volatile. It's restored from the initramfs in the boot image each time you reboot the phone, so only mounting it writeable, doesn't do you very much anyway.
In /init.rc you find a line:
Code:
mount rootfs rootfs / ro remount
This remounts your root read-only. Remove this, and it'll stay writeable. But again, all edits to the root file system are volatile. To change this, you must flash a new boot.img
An easier way would be a root-app remounting it writable again after boot.
kuisma said:
Yes, the root file system is read-only, but it's also volatile. It's restored from the initramfs in the boot image each time you reboot the phone, so only mounting it writeable, doesn't do you very much anyway.
In /init.rc you find a line:
Code:
mount rootfs rootfs / ro remount
This remounts your root read-only. Remove this, and it's stay writeable. But again, all edits to the root file system are volatile. To change this, you must flash a new boot.img
An easier way would be a root-app remounting it writable again after boot.
Click to expand...
Click to collapse
Ahh I figured as much, since Google didn't offer any solutions to me. And flashing is way much more effort than simply having an app that does it for you.
Anyway thanks for the reply!
xxshabsxx said:
Ahh I figured as much, since Google didn't offer any solutions to me. And flashing is way much more effort than simply having an app that does it for you.
Click to expand...
Click to collapse
Or do like I did, move the root to a real ext3 non-volatile file system instead.

[Q] Unable to change file permission on rooted Samsung Galaxy S III

Hi,
I tried changing file permission on one of the folders where I saved my photos to read-only using "Root Browser Lite".
The following error message came up: "Changing permission was not successful. Please note that some file systems do not allow permission changes".
I tried using ES file explorer but it also failed.
Could someone please tell me how I could change the file or folder permission. I wanted to prevent the photos from being accidentally deleted by my children when I let them browse their photos..
My phone I9300 was rooted using CF Auto Root.
Thanks
Get root explorer, it's much better.
Simply long press on a folder and the permissions option is there.
Sent from my GT-I9300 using xda premium
Don't forget to set to rw at the top of root explorer before attempting to change permissions
If you're talking about the internal memory, you can do chattr +i /data/media/[name of folder] to set the immutable bit. EDIT: You need BusyBox installed for the chattr command
This works because /storage/sdcard0 (JB's usual mountpoint for the internal eMMC) is a fake FAT32 file system Google created for compatibility; the internal eMMC can really be found at /data/media, which is of the ext4 filesystem.
For the external memory, you can try SGS3 Easy UMS and set the read only property on the folder using your computer. (I can't find mattrib for Android.) There is no guarantee that Android/Linux programs will obey the RO attribute, however.
The reason why Root Browser Lite & ES File Explorer didn't work is because they work on UNIX file permissions, while a file system formatted using FAT obviously doesn't understand them - it would expect DOS/FAT attributes. That said, though, have you already backed up the data you consider to be important?
100% work
Try this.....
http://forum.xda-developers.com/showthread.php?t=2038243
this will help you 100%..
qwerty12 said:
If you're talking about the internal memory, you can do chattr +i /data/media/[name of folder] to set the immutable bit. EDIT: You need BusyBox installed for the chattr command
This works because /storage/sdcard0 (JB's usual mountpoint for the internal eMMC) is a fake FAT32 file system Google created for compatibility; the internal eMMC can really be found at /data/media, which is of the ext4 filesystem.
For the external memory, you can try SGS3 Easy UMS and set the read only property on the folder using your computer. (I can't find mattrib for Android.) There is no guarantee that Android/Linux programs will obey the RO attribute, however.
The reason why Root Browser Lite & ES File Explorer didn't work is because they work on UNIX file permissions, while a file system formatted using FAT obviously doesn't understand them - it would expect DOS/FAT attributes. That said, though, have you already backed up the data you consider to be important?
Click to expand...
Click to collapse
=============
Thank you all for your advice. The file system explanation betw FAT and ext4 fs makes sense. I have BusyBox installed.
Via Terminal Emulator, when I did "chattr -i /data/media/DCIM/Camera", I got a "permission denied".
Is there something that prevented me from this?
I'm running ICS.
Thanks
Did you type su before the command..
Just asking..
sent from here, there, somewhere!!
zoot1 said:
Did you type su before the command..
Just asking..
sent from here, there, somewhere!!
Click to expand...
Click to collapse
Thanks Zoot1.
I did that.
Image Gallary is still showing /mnt/sdcard/DCIM/Camera as "writeable".
What is the difference between two folders /data/media/DCIM/Camera and /mnt/sdcard/DCIM/Camera?
Thanks,
Note that I used +i in my example invocation of chattr. - removes the attribute; + sets it, which is what you want
Sent from my GT-I9300 using Tapatalk 2
Thanks qwerty12, after 'chattr +i folder name' , I return to root browser lite to change permission on mnt/sdcard/DCIM/Camera, I still get permission denied. What did I do wrong?
Sent from my GT-I9300 using xda app-developers app
Mount System RW
The problem is that your system is currently in RO (Read-Only) mode.
Even if you are root, can't mess with system files if the setup is like that.
ES File Explorer works because it has an option (that DOES work) to mount the system in RW (Read-write) mode.
On my ES File Explorer Version 3.0.0 it goes like this:
Android menú button--->Tools---->Root Explorer--->Mount R/W.
Set: /system (or all of the options) to: RW----->OK.
Now, explore your files using the ES File Explorer interface on your phone and you should be able to erase every file and apk you want even if they are system files.
Vanyna said:
The problem is that your system is currently in RO (Read-Only) mode.
Even if you are root, can't mess with system files if the setup is like that.
ES File Explorer works because it has an option (that DOES work) to mount the system in RW (Read-write) mode.
On my ES File Explorer Version 3.0.0 it goes like this:
Android menú button--->Tools---->Root Explorer--->Mount R/W.
Set: /system (or all of the options) to: RW----->OK.
Now, explore your files using the ES File Explorer interface on your phone and you should be able to erase every file and apk you want even if they are system files.
Click to expand...
Click to collapse
finally its worked for me thx very much dude:laugh::good:

Deleted /system/vendor folder using ES File Manager Explorer

Hello,
I have Lenovo S720 running on Android 4.0.4 that I recently factory reset because It has only few little internal storage (~1,4 GB), and cannot support many updating apps.
After I do that, whats left in the internal storage is about 500 MB of storage, the rest being taken up by the system (I suppose).
I installed Framaroot to root the device, then System App Uninstaller (ROOT) and ES File Explorer.
First, I try to uninstall any bloatware with the System App Uninstaller -> I didn't get much free internal storage.
Then, I use ES File Explorer to seek, which folder took up the most space.
-> One of the is /system/vendor folder.
-> So, I copied that folder to /mnt/sdcard/backupsys/ (or /sdcard/backupsys/ [little bit forget]), Thinking it would come in handy later.
-> Then, I (foolishly) proceed to delete the folder using the root privileges .
-> It took a moment until all of my app start crashing (including the ES File Explorer!).
-> I turned-off the device, and now it still stuck in the (what I think as) "bootloop" mode.
Fortunately I still can communicate to the phone using adb tools, which I have a little knowledge of. But, the pm and am command cannot function well.
Now, I'm only thinking about moving back the vendor folder from /mnt/sdcard to the /system folder.
But I encounter some problem:
1) I can't (& don't know how to) write to the /system
2) I can't (& don't know how to) read from the /sdcard
- command 'ls' inside this dir returned nothing.
Glad I have the "su" tools from the Framaroot. I searched on the Internet and it seems the problem can be solved with mount tools, but I don't know how.
ls -la tools on root (/) return:
(other dir)
root /system ,,,,,,,,,,other info,,,,,,,
system /sdcard ,,,,,,,,,,other info,,,,,,,
(other dir)
So maybe because I can't gain system account, I can't access the folder and read it...
I try to hard-reset in the recovery mode, but I can't select the options! (I can move the selector with volume up/down) but I cant click it with the power button!
The phone seems to be worse every second.
My main question is: can I recover my phone (copying the vendor folder back) using command tools on my development computer? Or is there any other ways?
I'm willing to install any custom ROM best suited to my phone.
Thanks in advance.
Hello,
Welcome to XDA.
If you have a copy of what you deleted or can get it from somewhere and you want to adb push your missing files and folders back to your device then you need to have the files you want to push stored on your PC and push them from there to the device. For instructions on how to use adb read through the thread linked below and go from there.
http://forum.xda-developers.com/showthread.php?t=2141817
If you have further questions or need further help with using adb then you can post in the Q&A forum linked below:
http://forum.xda-developers.com/android/help

Categories

Resources