Related
Hello, all!
I'm trying edit a file in /etc/ and adb says 'Failed to copy: Read-only filesystem'
Now, is this actually true? Or is this simply a permissions issue? I'm doing this on a non-rooted phone, so I can't 'touch' anything without permission errors, but is it a futile task if the filesystem is read only anyway?
I'm trying to do this from a non-rooted environment as I had intended on making this into an application, but I imagine that if I can't touch or push these files from an adb shell then I won't be able to from the application space either.
It's frustrating not to be able to edit the filesystem of my own phone, I'll be rooting if this is just a permissions problem and not an issue of a non-writable filesystem. Perhaps I could still make an application for rooted-only phones.. hrm..
Any thoughts on this?
/etc is an alias for /system/etc, and /system is a partition mounted as ro (you can confirm this yourself by running mount)
Ah, bugger. So this is hopeless (without modifying and then reflashing)?
Thanks very much.
you need to mount it read write,
mount -oremount,rw /dev/block/mtdblock3 /system
then it will be read/write
try adb remount. if it failes you need root sorry.
Hello, i have the same error and I have root. i have tried adb remount and the mount -oremount,rw /dev/block/mtdblock3 /system
still dotn work. I want to move a script to /
so i only have to type sh debian.sh
nvm I figured it out. i just put it on system and then just type sh debian.sh on the terminal and it works
Rafase282 said:
Hello, i have the same error and I have root. i have tried adb remount and the mount -oremount,rw /dev/block/mtdblock3 /system
still dotn work. I want to move a script to /
so i only have to type sh debian.sh
Click to expand...
Click to collapse
what is the error message? saying it dont work doesnt provide enough info for us to help....
it says sh: cant open aw.sh
so i still have to put the path or cd to where the file is. Is there a way to make /system my home?
no you cant make system your home, system is system, home is home. you can make a symlink if you are familiar with linux - might want to read up about shell commands
korndub said:
you need to mount it read write,
mount -oremount,rw /dev/block/mtdblock3 /system
then it will be read/write
Click to expand...
Click to collapse
Thanks it really worked!! for me i had the same problem as the other guy.
Rafase282 said:
Hello, i have the same error and I have root. i have tried adb remount and the mount -oremount,rw /dev/block/mtdblock3 /system
still dotn work. I want to move a script to /
so i only have to type sh debian.sh
nvm I figured it out. i just put it on system and then just type sh debian.sh on the terminal and it works
Click to expand...
Click to collapse
You *CAN'T* modify the / filesystem. It is part of your BOOT partition, which CANNOT be remounted rw. You would have to read, modify, and write the boot partition.
Rafase282 said:
Hello, i have the same error and I have root. i have tried adb remount and the mount -oremount,rw /dev/block/mtdblock3 /system
still dotn work. I want to move a script to /
so i only have to type sh debian.sh
nvm I figured it out. i just put it on system and then just type sh debian.sh on the terminal and it works
Click to expand...
Click to collapse
Maybe you're typing it in too literally. It should actually read like this:
mount -o remount,rw /dev/block/mtdblock3 /system
There was a typo with -oremount, there should be a space after -o.
Hope that helps.
PS. That command worked for me on a device where everything else failed.
dhkr123 said:
You *CAN'T* modify the / filesystem. It is part of your BOOT partition, which CANNOT be remounted rw. You would have to read, modify, and write the boot partition.
Click to expand...
Click to collapse
actually, / can be mounted rw, but changes are lost on reboot
new user
Firerat said:
actually, / can be mounted rw, but changes are lost on reboot
Click to expand...
Click to collapse
Hi I have my Asus Prime rooted and installed a virtuous Rom and I tried to put a fonts on the System/ fonts folder using root explorer using a instructions to fix some error on some games that need that tis fonts exist on the tablet but it said it cant because file system is read only I'm new and I don't know how to do this commands any help on how to do in a easy (explained) form.
egalpr said:
Hi I have my Asus Prime rooted and installed a virtuous Rom and I tried to put a fonts on the System/ fonts folder using root explorer using a instructions to fix some error on some games that need that tis fonts exist on the tablet but it said it cant because file system is read only I'm new and I don't know how to do this commands any help on how to do in a easy (explained) form.
Click to expand...
Click to collapse
I would recommended not posting in the g1 section. The Asus forums would be a lot more helpful.
egalpr said:
Hi I have my Asus Prime rooted and installed a virtuous Rom and I tried to put a fonts on the System/ fonts folder using root explorer using a instructions to fix some error on some games that need that tis fonts exist on the tablet but it said it cant because file system is read only I'm new and I don't know how to do this commands any help on how to do in a easy (explained) form.
Click to expand...
Click to collapse
Download EStrong File Manager and within the settings of it, enable mounting of the system as read/write.
Or, download Terminal Emulator and type this in:
Code:
mount -o remount,rw /dev/block/mtdblock3 /system
Or, try typing this in terminal/cmd:
Code:
adb remount
Or, if you plan on doing it all from recovery you could do:
Code:
adb shell "mount system"
and then you could do it all from there.
Next time, please post in the proper forum.
Read-Only /system... i just deleted the file, tich push should update/replace and then it worked... only had this bug when i was trying to modify Trebuchet.apk (homescreen)
Hi guys
Not being a linux expert, i'm stuck with the following problem..
i'm using a program who uses low level adb commands to write on the phone extSdCard...
problem: this extSdcard is seen as a readonly filesystem.
What has to be done to make this FS RW instaed of RO ?
This does not happen under windows where I can write to the extSd without problems
thks in advance for the tip
Couldn't find any topic about this, so sorry if I've missed it.
Does anyone know where I can export the PATH variable, so that it does that everytime I start the Terminal app?
Edit: aha, apparently setting it in /init.rc works... now to edit my boot.img.
Making PATH Stick
Tested on G1 With JF 1.43 (you dont need to edit your boot.img)
There is a file called init.rc that be found in /system/init.rc
This is loaded on Start-up
So here we go
1.Type su on Terminal Emulator to get root
2. Type (This will make your system path writable)
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
3. On a system with the Android SDK Installed type
adb pull /system/init.rc c:\init.rc
4. Add the line To the File (I use notepad++ to edit on windows because it saves with linux brakelines)
export PATH /data/busybox:/usr/bin:/usr/sbin:/bin:/sbin:/system/sbin:/system/bin:/system/xbin:/system/xbin/bb:/data/local/bin
You can edit this to sute your needs. This is mine for busybox.
5. Type
adb push c:\init.rc /system/init.rc
6. Reboot your Phone
Ah excellent, that's working.
I just symlinked everything instead
I don't have a init.rc in /system , but there is one in root.
I'm running ADP1.1h.
Should I just create a new init.rc in /system ?
Check the One is / It should call the one in system from that file somewhere.
If thats there you should be Fine to create one.
The one in root doesn't call one in system... hmm...
That odd i am using the ADP 1.1h (JF 1.43) firmware
I'm not using JF, just pure ADP1.1
Sorry if this has been answerd, tried searching but didnt find it. (I am driving and looking at same time...ya i know)
Im trying something and i need to put a file in the system folder on the phone. I tried cut/copy and past from my sd card to it and says failed in linda file mgr. I tried in terminal and it gave me cross device link error, if i even put commands in correctly. Linux is new to me, lol.
I am on 1.5 h build for referance
Thanks in advance
You might have to do it in ADB.
adb remount
adb shell
[your command]
besides that, you cannot mv across file systems either. mv is essentially a renaming tool, if you want to move something use cp and rm.
billc.cn said:
besides that, you cannot mv across file systems either. mv is essentially a renaming tool, if you want to move something use cp and rm.
Click to expand...
Click to collapse
I presume you have little *nix background... 'mv' essentially performs both cp and rm functions in one fell swoop. I use it on my desktop and laptop daily. It will copy before it deletes as well, so if you are interrupted, the source files wont be gone with a corrupt destination.
Get Terminal Emulator
this is easily accomplished via terminal emulator, if u have a recent haykur0 build it should include busybox what u would do in the termial type
Code:
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
busybox cp /sdcard/namofyour.file /system/nameofyour.file
thanks guys. got same error when used shell. got it done using:
adb push file.name /system
The focus of this thread is to sort out the Apps2SD issue in cyanogenmod-darch 2.1 ROM (like the title says). Please do not post here unless it relates to this issue.
That being said, here is where I was at in the original darchstar 2.1 thread:
watzone69 said:
Taken from the instructions darchstar gave in the first post of his thread...
Code:
adb remount
adb push e2fsck /system/bin
adb shell
cd /system/bin
chmod a+x e2fsck
a2sd
reboot
First, the "chmod a+x e2fsck" command doesn't work for me (EDIT: I discovered that it WILL work in recovery mode). I had to use "chmod 777 e2fsck". After entering "a2sd" it gets enabled. After rebooting, apps2SD is NOT enabled anymore. I realized this by doing this test:
Code:
adb shell
cd /data/app
pwd
If your apps2sd is enabled, you will get "/system/sd/app" returned to you.
If you get "/data/app" returned instead then apps2sd is NOT enabled!
Click to expand...
Click to collapse
Gbhil then replied...
gbhil said:
After you restart, can you re-enable a2sd by running a2sd from a terminal as root?
If so, do all your apps still appear and are they usable?
If the above is true, try adding this to the end of gumbo.sh
Code:
su -C a2sd
for a quick fix.
Start a thread (to keep things less cluttered) about it and I'll help you guys dig into the boot image and see why it's not sticking.
Click to expand...
Click to collapse
So, I rebooted and tried to run "a2sd" from the android terminal but it spits out a long string of errors:
Code:
--- Checking ext filesystems
e2fsck 1.41.6 (30-May-2009)
ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /dev/block/mmcblk0p2 is mounted.
/dev/block/mmcblk0p2: clean, 13/249856 files, 31387/499713 blocks
mount: permission denied. (are you root?)
chown: /system/sd: Read-only file system
chmod: /system/sd: Read-only file system
mkdir failed for /system/sd/app, Read-only file system
chown: /system/sd/app: No such file or directory
chmod: /system/sd/app: No such file or directory
cp: cannot create '/system/sd/app/android.tether.apk': No such file or directory
cp: cannot create '/system/sd/app/android.tether.usb.apk': No such file or directory
cp: cannot create '/system/sd/app/at.abraxas.mountusb.apk': No such file or directory...
(etc.)
...rm: cannot remove '/data/app/org.gmote.client.android.apk': Permission denied
rm: cannot remove '/data/app/org.hermit.substrate.apk': Permission denied
rm: cannot remove '/data/app/org.iplatform.android.apk': Permission denied
rm: cannot remove '/data/app/org.mikeyin.livewallpaper.apk': Permission denied
mkdir failed for /system/sd/app-private, Read-only file system
chown: /system/sd/app-private: No such file or directory
chmod: /system/sd/app-private: No such file or directory
cp: can't open '/data/app-private/com.android.aldiko.apk': Permission denied
cp: can't open '/data/app-private/com.protocol.x.su.fbs.apk': Permission denied
cp: can't open '/data/app-private/com.rerware.android.MyBackupPro.apk': Permission denied
rm: cannot remove '/data/app-private/com.android.aldiko.apk': Permission denied
rm: cannot remove '/data/app-private/com.protocol.x.su.fbs.apk': Permission denied
rm: cannot remove '/data/app-private/com.rerware.android.MyBackupPro.apk': Permission denied
ln: /data/app/app: Permission denied
ln: /data/app-private/app-private: Permission denied
+++ Apps-to-SD successfully enabled
So, there is no "app" or "app-private" in the "system/sd". Is a2sd supposed to generate those directories or are they supposed to be there before hand?
Anyway, the result is that I lose all of my shortcuts to the apps and market shows them as not installed even though they are.
BTW, I am not a dev or even that great at code or linux but I can usually pick stuff up fairly quickly. Just want to help fix this!
EDIT: The only thing I have found to work is to flash this kernel:
http://forum.xda-developers.com/showpost.php?p=5712377&postcount=1406
However, some people get stuck in a boot loop after flashing this.
Running into the same issues as Watzone so I can confirm that he is doing it correctly. =P
Here are all of the related commands that have been suggested whenever the question of apps2sd has come up in the darchstar 2.1 thread.
Code:
adb remount
adb shell
mkdir /system/sd
Code:
adb remount
adb shell
busybox --install /system/xbin
a2sd
Code:
cd C:\android-sdk-windows\tools
adb remount
adb shell
chown system.system /data/app
chmod 0771 /data/app
For the next command, boot into recovery and do the following:
Code:
adb shell
mount /system
exit
adb push e2fsck /system/bin
adb shell
cd /system/bin
chmod 777 e2fsck
Now, boot normally and go back to your CMD prompt...
Code:
adb remount
adb shell
a2sd
EDIT: In other threads I have seen the command...
Code:
apps2sd on
...used to enable apps2sd.
Doing all of these WILL allow the final "a2sd" command to enable (testing with the "pwd" command) but it all goes KAPUT after a reboot.
why it's not being enabled at boot time is because the init.rc isn't calling /system/etc/init.d/04apps2sd . I'll be sure that we fix that in my next release
And there you go.
It works here, but now I know why. I'm still using an old version of the boot image that looks for /system/bin/a2sd to load it, and an older version of the ROM. No sense in me to keep flashing fixes until I'm done tweaking the kernel. When darch says the kernel is good, then I'll catch up lol.
We might as well use this thread to learn to play with the boot image though, that is if you guys want to.
Awesome can't wait for the next release then! Lotsa apps out there calling out to me! Thanks guys =)
gbhil said:
We might as well use this thread to learn to play with the boot image though, that is if you guys want to.
Click to expand...
Click to collapse
You bet. It's about time I got my hands dirty.
I'm game let me know if you need me to test anything!
Cool deal. You need Linux to extract and compress the boot.img, and you need to be current with Perl and running jre5 or higher.
Ubuntu 9.04+ is set up out of the box, but any version can be made to work.
Then grab these files from Lox -
http://forum.xda-developers.com/attachment.php?attachmentid=231902&d=1254004933
http://forum.xda-developers.com/attachment.php?attachmentid=234040&d=1254622769
and extract them into your sdk/tools dir. (or any dir in your path)
get all that, then pick a boot.img from a rom and put it in a work folder.
Holler when you get that far, or if you have any q's.
I wanna learn myself. This should apply to mac os as well?
I have Mint on another machine. Gimme a bit to get caught up...
david279 said:
I wanna learn myself. This should apply to mac os as well?
Click to expand...
Click to collapse
Darwin might work. Never tried
watzone69 said:
I have Mint on another machine. Gimme a bit to get caught up...
Click to expand...
Click to collapse
np. I'm @work so going slow is better anyway lol.
ok i just ran the files in terminal. so i guess it might work.
I'm back
Inisde the work folder you dropped the boot.img into, run this from a term:
extract-kernel.pl boot.img
extract-ramdisk.pl boot.img
it will give you several files and a new directory. That dir is the unpacked ramdisk. The init.rc file is the one we're looking for. Open it with a Unicode editor and read it. It has it's own syntax, but it's almost like bash and not too hard to figure out. Hopefully you loaded a bootimg that has a2sd in it. Look near the bottom of the file for the a2sd start up line. It will have a2sd, apps2sd, a2sd004 or something like that. Once you find it so you can see the name used, search the rest of the file for that name.
Those lines will show you how a service gets declared and called at boot time.
I'm up and running now. I downloaded python 2.6.4. Do I need to install it or just extract it somewhere? Please forgive my linux noobness.
The other 2 zip files are extracted and in my tools folder. I'm getting the boot.img now.
idk if this will work as i too am a newb to android and the way they deal with the boot process is somewhat a bit different from what i'm used to, but heres a new boot.img if you guys want to flash it to see if apps2sd works. note, this is not a zip, remove that suffix.
to flash it to your phone just move the boot image to your sdcard then reboot into recovery. from there go into adb and mount your sdcard, then flash the new boot image.
Code:
adb shell
mount /sdcard
flash_image boot /sdcard/newBoot2.img
reboot
tell me if it fixes your apps2sd problem or not.
watzone69 said:
I'm up and running now. I downloaded python 2.6.4. Do I need to install it or just extract it somewhere? Please forgive my linux noobness.
The other 2 zip files are extracted and in my tools folder. I'm getting the boot.img now.
Click to expand...
Click to collapse
try it without doing anything to Python first....especially since I meant perl
Just try my last post and see if it works for ya. I'll edit my first post
gbhil said:
try it without doing anything to Python first....especially since I meant perl
Just try my last post and see if it works for ya. I'll edit my first post
Click to expand...
Click to collapse
Nope, I got "command not found" both times.
darchstar said:
idk if this will work as i too am a newb to android and the way they deal with the boot process is somewhat a bit different from what i'm used to, but heres a new boot.img if you guys want to flash it to see if apps2sd works. note, this is not a zip, remove that suffix.
to flash it to your phone just move the boot image to your sdcard then reboot into recovery. from there go into adb and mount your sdcard, then flash the new boot image.
Code:
adb shell
mount /sdcard
flash_image boot /sdcard/newBoot2.img
reboot
tell me if it fixes your apps2sd problem or not.
Click to expand...
Click to collapse
Thanks darchstar, I'll try that in a bit.
watzone69 said:
Nope, I got "command not found" both times.
Click to expand...
Click to collapse
you gotta make it executable
inside the directory with the perl scripts do this
Code:
chmod a+x ./
hey,
whenever i flash a new rom i edit the zip to replace keylayouts, apps in /system and /data , bootscreens and some other stuff......
i now want to symlink some directories with a script which will be loaded during rom flash because otherwise i would need a pc to access it through adb...
the script i want FOR NOW (i may use it for other things in the future)
is about symlinking the
/system/customize/resource/bootanimation.zip to /data/local/bootanimation.zip
/system/customize/resource/android_audio.mp3 to /data/local/android_audio.mp3
i can do this through adb as i said but i'd prefer it to be done automatically by a script during flash.... i know the commands to use but i need a way to implement the script into the rom.....
i think it's like the a2sd+ script but i am not sure....
if anyone knows please help me
you need to split open your boot.img and modify the init.rc (the file where services are initialised at Android startup)
See this link for notes on working with the boot.img
you can create the symlinks directly in this file, have a look at the syntax and you should be able to work it out. The ln command doesn't work though, use the format:
Code:
symlink /system/customize/resource/bootanimation.zip /data/local/bootanimation.zip
Or you can create a dummy 'service' which executes a file on your filesystem (like /etc/rc.local) and put your "ln -s" commands in there.
Why not just create a custom update.zip with your changes only, then you can apply it after flashing any rom.
Klutsh said:
Why not just create a custom update.zip with your changes only, then you can apply it after flashing any rom.
Click to expand...
Click to collapse
How would you do this?
Say I wanted an update.zip that would remove plurk and add a certain app. How would I go about creating that?
removing and adding is easy with the update signer app.....i just want to add a script that symlinks directories at boot in order to avoid the use of a pc.....i tried the trick st0kes said and i am waiting for the flashing now to complete and send my feedback
nope it didn't work.....is there any specific place to put the command ????
i put it at the very end of the init.rc file
ok after a lot of reading i created a service which runs a folder with scripts...where i have the script that symlinks the files.....
service myscripts /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/myscript.d
oneshot
Click to expand...
Click to collapse
this is the service code
and here is the code i have into the "bootanimation" script which is inside the myscript.d folder
#!/system/bin/sh
mount /system
mount /data
ln -s /system/customize/resource/bootanimation.zip /data/local/bootanimation.zip
ln -s /system/customize/resource/android_audio.mp3 /data/local/android_audio.mp3
Click to expand...
Click to collapse
what am i doing wrong here ????? please someone with knowledge enlighten me!! the script does not run
damn....it's been a long night and still haven't found a way to do it !!!!!!
i tried all the followings:
1) added a file called "myscript" (it contained two lines with the symlink commands) in init.d folder in order to execute when the boot is complete - FAILED
2) added the same file into another folder and added a service at the bottom of the init.rc file that called it
service myscript /system/etc/myscripts/myscript
oneshot
Click to expand...
Click to collapse
-FAILED
3) added the SYMLINK commands into the init.rc file
a)at the bottom -FAILED
b) before the bootanim, bootsound services -FAILED
c) before the bootcomplete = 1 value in init.rc -FAILED
d) after sysinit execution in init.rc -FAILED
e) before sysinit execution in init.rc - FAILED
f) at the top after some lines of code in init.rc - FAILED
i read that HTC change the boot process and to run custom scripts at boot you must add their commands in "bootcomplete.bravo.rc"
i tried that too but FAILED again....i think this is logical cause these scripts are executed after the boot and just when the phone is gonna show the pin dialog....
i think it's something to do with the init.rc file...but i dunno what else to add....
is there anything i have to mount in order to symlink ???? add busybox to something or anything ??????
PLEASE someone with success at scripting like a2sd+ please help me
Try naming your script
Code:
03BootAnim
and place it in
Code:
/system/etc/init.d
Also don't forget to chmod +x it
how to chmod +x ??? nvm i did it...i am now signing it to try it
in adb
Code:
adb shell chmod +x /system/etc/init.d/03BootAnim
chmod 755 does the same, makes it executable by the system
Klutsh said:
Try naming your script
Code:
03BootAnim
and place it in
Code:
/system/etc/init.d
Also don't forget to chmod +x it
Click to expand...
Click to collapse
hey klutsh i tried what you said but it didn't work...
look i created the file
Code:
03BootAnim
and placed it into the
Code:
/system/etc/init.d
the commands i have into the file are these
Code:
#!/system/bin/sh
ln -s /data/local/bootanimation.zip /system/customize/resource/bootanimation.zip
ln -s /data/local/android_audio.mp3 /system/customize/resource/android_audio.mp3
ok i edited the commands like these but no result too.....
Code:
#!/system/bin/sh
busybox mount /system
busybox mount /data
busybox ln -s /data/local/bootanimation.zip /system/customize/resource/bootanimation.zip
busybox ln -s /data/local/android_audio.mp3 /system/customize/resource/android_audio.mp3
i checked with the
Code:
ls -l /system/etc/init.d
command and the permissions are all the same (they are all enabled i think, -rwxr-xr-x )
i wiped everything, flashed, rebooted but no bootanimation!!! the default android logo with the moving shade appears (i have deleted the animation in the system/customize/resource folder in order for the symlink to work)
what am i doing wrong ???? is there something with the script ?
I'm trying to get this working, and so far it is running before the bootanimation, but I get
Code:
run-parts: can't execute '/system/etc/init.d/03BootAnim': No such file or directory
Yet it is available...
what commands do you have in yours ????
maybe a reboot will fix it o yours since it will rescan ?
edit: hey klutsh i logcated my boot and i see that the symlinks do not work cause it says that /system/customize/resource/bootanimation.zip and android_audio.mp3 directories are read-only file systems
That's the problem then.
Already got a fix that you apply once only to a flashed rom then the boot anim runs from /data/local and can be replaced.
http://www.asificanrememberthat.com/DeLite/BootAmin_to_Data.zip
Flash that after any Sense rom that normally has bootanimation in /system/customize
It will delete the 2 files in /system/customize/resource
flash my own bootanimation to /data/local
create the required symlinks that survive reboot's.
You can then just replace the files in /data/local as needed.
as i see you made it with the update sign and packager isn't it ????
nice idea....
BUT why can't we access /system files through boot ???? is there any way to get root access at booting ???
THANKS YOU VERY MUCH for the great effort you made....
is there a way to implement the update-script into the 03BootAnim in order not to have to flah anything ????
the reson i want this is cause i am cooking my roms on my own and i want them to have all i need inside....not having to flash mod1, mod2 etc
It's a feature of the desire, no write access to /system unless in recovery.
You can just take those bit's from my update-script and add them to your own rom's script.
oh yes...this is what i was asking i have tow update-scripts though, one old and one in the android.new folder
i am using dsixda kitchen....in which should i put it ??? does it matter where is it?
edit: found it....signing to flash
HURRAYYYYYYYYYYYYYYYYYYYYYYY
hey klutsh i thank you a lot.....
it was so easy to do it just copy paste the update-script but we (I) took the hard way of READ-ONLY file system....anw i learned A LOT (if you think that i am reading 15hours constantly about this)
PROBLEM SOLVED
You can delete the android.new folder, it isn't used.