Read-only file system question - Droid Eris Android Development

Code:
mount -o rw,remount dev/block/mtdblock3 /system
Would somebody mind explaining exactly what each part of that adb command does? I use it to be able to uninstall stock .apks, but I'm not sure HOW it works.
I know the rw= read/write, and the /system is talking about the android system folder, but that's about as far as I've gotten.

Your question is a generic Unix question, not really an Eris or even Android question - much less a "development" question. In the future, put questions like this in the Q&A forum
http://en.wikipedia.org/wiki/Mount_(Unix)
http://linux.die.net/man/8/mount
The "mount" command is one of many, many commands that are common to Linux and other flavors of Unix; the "adb" program in the context you used it (above) is merely used to pass commands to a Unix command interpreter (or "shell") running on the phone.
bftb0
PS BTW, there is a typo in the command you showed in your post.

I only use (apparently Unix) commands when related to the Android system, and the only device I own is an Eris. I don't use linux for anything except playing with terminal, and I'm pretty bad at that. My apologies for not making the connection.
What typo? adb accepted that command without any errors.

Raikalo said:
What typo? adb accepted that command without any errors.
Click to expand...
Click to collapse
I guess the "typo" is only a typo in a different context - if you changed directories at the command prompt. (That's sort of common if you do things at the command line - for instance, poking around inside of /sdcard, or /data, etc.)
The third argument to the mount command as you put it:
Code:
mount -o rw,remount dev/block/mtdblock3 /system
is a "relative file system path": dev/block/mtdblock3
It is relative (to the current directory) because it does not start with a '/'
It works (as you point out) because when you do an "adb shell", the default current directory gets set to '/', so in that case
(relative to '/' ) dev/block/mtdblock3 == /dev/block/mtdblock3
If you wanted to be sure that the command would "just work" no matter what directory you had changed to, you would type it using an "absolute path", as in:
Code:
mount -o rw,remount /dev/block/mtdblock3 /system
Again, this is pretty basic Unix/Linux command line stuff; that's not meant as a put-down, but if you want to learn more about the things you can do with your rooted phone using adb and the command line, there are a lot of excellent on-line resources that discuss Linux command line ("shell") use, and common Linux/Unix commands. More thorough and complete than what you'll find in a phone forum, anyway.
cheers
bftb0

Ah, I see. Makes sense. I've been meaning to start learning about Unix-based systems anyway, so thanks for the resources. I didn't think about the first / missing; it makes sense now that I know what the command actually does. I had been using that command for months when flashing different ROMs so I knew that it worked, but I wasn't sure why. Lol.
I have started using the terminal emulator app on my eris, moving around .apks and things like that....nothing difficult, I'm sure, but I've gotta start somewhere. I realized (after reading your comment about Unix) that the terminal might be called 'terminal' because it works similarly to the Linux terminal. I typed 'su' and wouldn't you know, Superuser granted me permissions to play around in the /data/app folder. I never had to use superuser when connecting the Eris to my computer (running Win7) so I never really thought about it needing permissions. It's probably pretty obvious to others, but now that I know, I know.
Time to learn some Unix. Thanks again.

Related

Terminal Commands?

I seem to be having trouble using the same commands I used to use on my G1.
I used to be able to copy via terminal (cp) and I was able to mount with a simple declaration "mount system" and "mount sdcard". Is that something that was created later on during the life of the G1 and still has yet to make it to the N1 or is it just a whole different set of commands?
I know the move command works in terminal (mv), but I haven't been able to use anything else. I couldn't even use ADB to pull something, is this correct?
(after su and mounting, mount -o rw,remount /dev...etc...)
adb-windows pull /system/build.prop c:/
I keep getting an error, no such file or directory. What am I doing wrong?
do you get a response with adb device? if not, then you don't have a bridge. if you don't have a bridge, you can't give commands
I get a response. "adb-windows devices" detects the device and I can mount the system folder as well as being able to enter adb shell, I just can't seem to get the usual commands (ones I would use with the G1 and adb/terminal) to work.

Remount Failed: Operation Not Permited

Hey guys. I've done commands in adb many times. I'm still new to it, but I never remember having this issue.
I've ran CM6 for months, and nightly's as well. I'm running a custom compiled CM6 right now though.
adb remount I get
remount failed, operation not permitted.. and in default.prop ro.secure is set to 1. I changed to 0 but still can't do remount. Any other suggestions?
Thanks!
For a workaround, try remounting through shell - mount -o rw,remount /system, or the full command (mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system).
is that a temporary fix, or for good. or just a work around?
Just a workaround. It's a command in OS itself that does the same job as "adb remount" - which is, remounts.
I just can't think of anything that would cause adb remount to fail, so I have no suggestions for you to try. But in case you want to be able to do something without getting stuck, and wait for the solution without being in a hurry - I've posted the workaround.
I don't have a solution to solve it once and for all, but every time you want to remount, use
PHP:
adb root
before your commands
excellent.
adb root
adbd is being restarted
adb remount succeeded .
Thanks dude! that will work for now til cooker fixes that. lol
Jack_R1 said:
For a workaround, try remounting through shell - mount -o rw,remount /system, or the full command (mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system).
Click to expand...
Click to collapse
Tried this and it appeared to succeed but I didn't get the results I wanted.
After doing this I tried push c:\com.amazon.mp3.apk \system\app\ and it repeated it back to me, but when I look in that directory, it's not there. What am I doing wrong?
Wrong direction of slashes:
push c:\com.amazon.mp3.apk /system/app/
And you shouldn't be doing it from the ADB shell. The remount is done in the shell, the push is done outside of it.
Jack_R1 said:
Wrong direction of slashes:
push c:\com.amazon.mp3.apk /system/app/
Click to expand...
Click to collapse
Ahhhh, I was wondering about that! Thank you!!
And you shouldn't be doing it from the ADB shell. The remount is done in the shell, the push is done outside of it.
Click to expand...
Click to collapse
So once I perform the remount I exit out of the shell?
operation not permitted.
"adb push" gets you "not permitted"?
try "adb root" first, as suggested above.
Jack_R1 said:
"adb push" gets you "not permitted"?
try "adb root" first, as suggested above.
Click to expand...
Click to collapse
adb root gets me something along the lines of "not supported on a stock build."
EDIT
ok...
adb shell
su
mount -o rw,remount /system
then i get this:
Usage: mount [-r] [-w] [-o options] [-t type] device directory
So it appears it's not actually registering the command?
Then I try
push c:\com.amazon.mp3.apk /system/app/
and I get: failed to copy 'c:\com.amazon.mp3.apk' to '/system/app/com.amazon.mp3.apk' : Read-only file system.
You need to use the full command, since you're running sh, not bash.
Look for the full command in my post.
Yes, currently it doesn't do a thing.
Jack_R1 said:
You need to use the full command, since you're running sh, not bash.
Look for the full command in my post.
Yes, currently it doesn't do a thing.
Click to expand...
Click to collapse
So I tried the full command and exited out to "dos" command prompt and tried again. This time I got "failed to copy.... ....permission denied."
Ok, try without exiting. I'm not sure it'll do anything useful, though.
There is some problem with either your ADB setup or the ROM you're using. Or you're just not rooted.
Jack_R1 said:
Ok, try without exiting. I'm not sure it'll do anything useful, though.
There is some problem with either your ADB setup or the ROM you're using. Or you're just not rooted.
Click to expand...
Click to collapse
Found another thread on another board. I just flashed amon ra's recovery and booted up from there, and it appeared to let me copy!
But then it wouldn't let me cd to system/app. It let me cd to system, but not to app. Weird... I booted back up and there's no evidence of the "copied" apk, anywhere.
What...
the...
****.
Thanks to all for your patience with my super-noobish ass, I'm hoping you're not as frustrated with me as I am with this.
When you're in the recovery, your system isn't mounted. You need to mount it first.
Use almost the same command as for remount, but leave out the "remount" option. Just "-o rw".
Your copy went to void.
Jack_R1 said:
When you're in the recovery, your system isn't mounted. You need to mount it first.
Use almost the same command as for remount, but leave out the "remount" option. Just "-o rw".
Your copy went to void.
Click to expand...
Click to collapse
lol, awesome, thanks. I'll fiddle with it some more in the morning.
Why isn't there a link somewhere to a simple instruction manual? It would be so much easier if I could read up on this myself without bugging all of you guys.
Of course there is. My sig has it in bold, and you can find everything there. It's just that people tend to rush asking questions instead of reading
Jack_R1 said:
Of course there is. My sig has it in bold, and you can find everything there. It's just that people tend to rush asking questions instead of reading
Click to expand...
Click to collapse
I've seen a couple of the basic noob guides to adb and I've seen the google definition of adb functions but it doesn't include instructions on how to do the stuff you're walking me through.
Will take a look at those links shortly. Btw, I'm on a MT3G though I don't think that makes a difference at this level.

[GUIDE] ADB Workshop and Guide for everyone

This workshop was held in #android-learning on irc.freenode.net by XDA Member Adrynalyne. All credit to him for this guide, I simply am taking it and turning it into a guide. Here we go!
You can find the raw IRC log here
Good evening folks, and welcome to my ADB workshop. This is by no means a full explanation on the subject, but more of a crash course to help folks get up to speed, and get more from their devices. There may be some things you already know here, so please be patient and respect those who do not.
Reference Files
http://adrynalyne.us/files/How to install adb.pdf
http://adrynalyne.us/files/Using ADB.pdf
So, lets just start with the basics.
What is ADB?
ADB stands for the android debugging bridge and is used for testing and debugging purposes by developers.
However, we like to get more out of our devices, and its a great way to fix things.
Knowing adb can mean the difference between a paperweight and a working phone.
So, to start with, we will look at installing ADB.
Generally speaking, the Sun/Oracle JDK is required to run all SDK functions.
ADB is but one tool in the SDK arsenal.
So, we begin by downloading and installing the JDK. This can be found here:
https://cds.sun.com/is-bin/[email protected]_Developer
Choose your OS, download and install. I recommend that 64 bit users use the regular x86/32 bit version as well.
Moving ahead, we download the Windows sdk from here:
http://dl.google.com/android/installer_r08-windows.exe
Due to already installing JDK, you won't be stopped by the install process.
Now, if you notice, I installed it to:
C:\android-sdk-windows
I did this because it makes things easier when setting up path variables.
I encourage everyone to do the same, but obviously it is not required.
So, this SDK is handy, but is only good up to 2.2. We want the latest and greatest! (Well I do)
So, we navigate to:
C:\android-sdk-windows\
and we run SDK Manager.exe
If you notice in your PDF file for installing adb, you will notice that you can update, and I made a choice not to include earlier sdk versions.
I won't go into full detail on that, but depending on the version of SDK you have, 8 or 9, it WILL make a difference in using adb.
By default, for version 8 adb.exe resides in C:\android-sdk-windows\tools
By default, for version 9 adb.exe resides in C:\android-sdk-windows\platform-tools
We will assume version 9 in this guide
Really, the SDK is installed and adb is usable right now, but in my humble opinion, its not enough
I like the ability to use adb in ANY directory on my machine.
To do this, we edit Windows's environment variables.
Specifically, the system path.
To do this, we click on start, or the orb (depending on OS), and right click on Computer, left clicking on properties in the menu.
If its windows XP, I believe it brings you into advanced system properties immediatly. Vista and 7 need a second step.
On the left hand side, as you notice I have highlighted in the pdf, left click advanced system settings.
Under advanced tab, we left click environment variables...
There are two boxes here.
We are concerned with system variables, however.
So we scroll down the list and highlight path and click edit.
Ignoring all the extra stuff in here, make sure you are at the end of the line, and type
Code:
;C:\android-sdk-windows\platform-tools
The semicolon allows us to separate it
from the previous path statement.
Click ok all the way out.
We now have ADB setup globally. We can use cmd.exe (I use powershell) and no matter what directory we are in, adb is recognized.
If it is not, make certain you entered the path into system variables, and made no typos.
If you installed to a different location, you will need to adjust the path accordingly.
This concludes the section on installing the Android SDK to use ADB.
This next section will be on using ADB, so please open that pdf now.
Now, this applies to any OS, not just Windows.
Well, with the exception of the USB drivers.
I will not go too much into that, but if you take a look at the PDF, it goes through installing usb drivers for the sdk, and how to download them.
Fiarly straightforward, in that rspect.
Now, to setup our phones to use with the SDK and ADB, we must change some settings.
First, we go to menu softkey, then settings.
We scroll down to Applications and tap it.
Under Development, we will check Enable USB Debugging. Please note the SGS phones are different in this respect.
The USB cable must be unplugged before enabling or disabling this setting.
Once this is done, we are now ready to play with adb
One quick note: If you get device not found/conencted, please reboot your phone. DJ05 has a quirk in it where ADBD randomly crashes on boot.
A reboot will fix this
ADBD= ADB Daemon
Ok, continuing on.
Lets look at installing applications. This is also known as sideloading.
Unlike installing from the SD card, it does not require unknown sources to be enabled.
The command for this is
Code:
adb install packagename
This assumes that you are working from the directory where the file is located.
This will install the application to /data/app.
It will also show sometimes useful errors if install fails.
That is not something you will see from the Android GUI.
Now, a lot of us have probably deleted files with apps like Root Explorer. While this isn't really a bad thing, it leaves behind databases and data for the application removed.
This is where the 0kb applicaiton entries come from.
If you take that application entry name, you can uninstall the extra data via adb.
First we go to the adb shell which logs into the phone.
Code:
adb shell
If we end up with a $, we will want admin rights, in many cases. This is not one of them, I don't beleive.
To get admin rights, you want to type
Code:
su
Look at your phone if this is the first time, it may prompt you to allow access. Else you will get permission denied.
If you are not rooted, this will not work either.
Ok, now that we are logged in, we will type
Code:
pm uninstall packagename
where packagename is the name of the 0kb listing.
Now this seems like a pain in the a** and I agree.
HOWEVER
There will be a time where Manage applications crashes when you try to uninstall it from the phone. In this case, a factory reset, or this method is the only effective way to fix the problem.
Moving on.
How many of us have removed system applications or renamed them? Did you know that you can simply disable them from the system?
Code:
adb shell
su
pm disable appllicationname
This will disable it, and the system will ignore it.
This can be seen as safer than deleting or renaming things, but your mileage may vary.
On the other hand, you can also re-enable these applications.
Code:
adb shell
su
pm enable applicationname
Please note: Not all applications will properly re-enable. I believe a factory reset or reinstall of said application will fix the issue.
Also, application names are absolutely case sensitive.
*nix based Operating Systems see the letter 'a' and 'A' as two different things.
when you log into adb shell, you are playing by android rules
Ok, a lot of us tweak and mod our phones and turning off the device to get to clockwork recovery, or battery pulls, or multiple button holds to get into Download mode are troublesome and annoying at best.
ADB can help us here.
Here, we do not need to be logged into the shell
If we want to merely reboot the phone:
Code:
adb reboot
If we want to go to recovery (works well with voodoo5)
Code:
adb reboot recovery
If we want to go to Download Mode because we need Odin, heaven forbid:
Code:
adb reboot download
Its instant. No waiting on animations or anything else.
Its also handy if Android has locked up, but yet still works in adb.
I for one hate taking my case off to battery pull.
So now we move on to pushing and pulling files.
Sometimes, I don't feel like mounting my sd card to copy a file over to my phone.
I can use this command to push a file straight to my sd card:
Code:
adb push filename /pathtodirectoryonphone
So for instance, if I have test.txt that I want to send, I would type:
Code:
adb push test.txt /sdcard/
and there it goes.
Ok moving on
Pushing files can be done to any directory, however, some are protected.
For instance, /system is going to give you a permission denied or a read only filesystem error.
To get around this, the easiest thing to do is push the file to your sdcard, then log into the shell:
Code:
adb shell
Code:
su
We will then mount the system as writable
Code:
mount -o rw,remount /dev/block/stl9 /system
Then we can use something like
Code:
cp /sdcard/test.txt /system/app/test.txt
cp stands for copy
and it requires the path of the file and destination path. The name of the file is optional
When you copy it, you can rename it to whatever you like.
For instance, if we wanted to backup a file
Code:
cp /sdcard/test.txt /sdcard/backuptest.txt
Now, lets assume you do not have busybox installed.
You non rooted users will not.
Then you must use a slightly more complicated command called dd
This is used like this:
Code:
dd if=/sdcard/test.txt of=/system/app/test.txt
if is for inputfile
of= output file
Not every user friendly, but probably one of the safer copy commands.
Ok, moving on to pulling files.
Lets say you want to get a file from your phone, to modify, backup, etc.
To do this, we simply use adb in this manner:
Code:
adb pull /pathtofile/filename destinationname
For instance, if I wanted to backup ADW launcher in system/app
I would do this
Code:
adb pull /system/app/ADWLaucnher.apk ADWLauncher.apk
And it will pull the file from the phone and put it in the current directory.
Like above, you can specifcy where it goes.
pushing files to the sdcard, it seems prudent to talk about changing permissions.
sdcards are typically fat32, which destroys permisisons, and Android is heavily permission based.
So if you push an application to your sd card, then try to copy it to /system/app/ bad things are going to happen, or the app may not even show up.
So in that case, we use something called chmod.
This is used in this manner
Code:
adb shell
su
chmod 755 /pathtoapplication/applicationname
Keep in mind
you dont want to do this while its still on your sd card.
an example
Code:
adb shell
su
chmod 755 /system/app/ADWLauncher.apk
755 is good for applications and script files.
Just a couple more topics to cover.
Lets go over deleting files.
This becomes especially handy for removing rogue applications.
To do this, we must be in the adb shell.
Code:
adb shell
su
rm /system/app/ADWLauncher.apk
You may need to remount system as writable with:
Code:
mount -o rw,remount /dev/block/stl9 /system
That applies when using chmod as well.
So what I did above was delete ADW Launcher from system/app
However, what if I wanted to delete the entire contents of a directory?
Same thing as before, except
Code:
adb shell
rm -f /data/dalvik-cache/*.*
I just cleared my dalvik-cache with that command
very quick, very effective.
If you just tried that, please reboot your phone now
Ok....this leaves us with the final topic: logcat
logcat allows us to log what the OS is doing, and possibly delve information for when things are not working
its quite simple Reading it is another.
To use logcat
Code:
adb shell
logcat
To logcat to a certain file do
Code:
adb shell
logcat > /sdcard/logcat.txt
Now we let the log settle down to a reasonable amount of data coming in and not a wall of scrolling, then start the app in question. When it gives an error, we hit ctrl-C and kill the adb shell session.
This should have captured enough data to see the error. Now, I prepared an example. A user came to me on IRC, and Google Maps was force closing. Clearing data didnt fix it, Clearing dalvik-cache, and fix permissions did not fix it. In this case, the user did not know how to use adb So I had him grab an app called alogcat from the market and email me the log. This is also a very valid method.
this file explains what the problem was, and highlights what to look for as an example.
http://adrynalyne.us/files/logcat.pdf
___________________________________________________________________
This concludes the guide from Adrynalyne, there will be more workshops such as this one in irc.freenode.net #android-learning.
Thanks to everyone in #samsung-fascinate !
Reserved for possible extension of topic
Great, saves a lot of questions/answers & search
Every new user should read this!!
Thread stuck as valuable reference thread
Just to add, if I may, a little about the permissions...
============================================================
File permissions for Unix... which Android is based, just so those who tinker with the file permissions may know what they are getting into.
============================================================
Use the chmod command to set file permissions.
The chmod command uses a three-digit code as an argument.
The three digits of the chmod code set permissions for these groups in this order:
1.Owner (you)
2.Group (a group of other users that you set up)
3.World (anyone else browsing around on the file system)
Each digit of this code sets permissions for one of these groups as follows. Read is 4. Write is 2. Execute is 1.
The sums of these numbers give combinations of these permissions:
0 = no permissions whatsoever; this person cannot read, write, or execute the file
1 = execute only
2 = write only
3 = write and execute (1+2)
4 = read only
5 = read and execute (4+1)
6 = read and write (4+2)
7 = read and write and execute (4+2+1)
Chmod commands on file apple.txt (use wildcards to include more files)
Command Purpose
chmod 700 apple.txt Only you can read, write to, or execute apple.txt
chmod 777 apple.txt Everybody can read, write to, or execute apple.txt
chmod 744 apple.txt Only you can read, write to, or execute apple.txt Everybody can read apple.txt;
chmod 444 apple.txt You can only read apple.txt, as everyone else.
Detecting File Permissions
You can use the ls command with the -l option to show the file permissions set. For example, for apple.txt, I can do this:
$ ls -l apple.txt
-rwxr--r-- 1 december december 81 Feb 12 12:45 apple.txt
$
The sequence -rwxr--r-- tells the permissions set for the file apple.txt. The first - tells that apple.txt is a file. The next three letters, rwx, show that the owner has read, write, and execute permissions. Then the next three symbols, r--, show that the group permissions are read only. The final three symbols, r--, show that the world permissions are read only.
Compliments and full credit from:
http://www.december.com/unix/ref/chmod.html
Amazing thread just what I needed lol thanks!
cooolone2 said:
Just to add, if I may, a little about the permissions...
============================================================
File permissions for Unix... which Android is based, just so those who tinker with the file permissions may know what they are getting into.
============================================================
Use the chmod command to set file permissions.
The chmod command uses a three-digit code as an argument.
The three digits of the chmod code set permissions for these groups in this order:
1.Owner (you)
2.Group (a group of other users that you set up)
3.World (anyone else browsing around on the file system)
Each digit of this code sets permissions for one of these groups as follows. Read is 4. Write is 2. Execute is 1.
The sums of these numbers give combinations of these permissions:
0 = no permissions whatsoever; this person cannot read, write, or execute the file
1 = execute only
2 = write only
3 = write and execute (1+2)
4 = read only
5 = read and execute (4+1)
6 = read and write (4+2)
7 = read and write and execute (4+2+1)
Chmod commands on file apple.txt (use wildcards to include more files)
Command Purpose
chmod 700 apple.txt Only you can read, write to, or execute apple.txt
chmod 777 apple.txt Everybody can read, write to, or execute apple.txt
chmod 744 apple.txt Only you can read, write to, or execute apple.txt Everybody can read apple.txt;
chmod 444 apple.txt You can only read apple.txt, as everyone else.
Detecting File Permissions
You can use the ls command with the -l option to show the file permissions set. For example, for apple.txt, I can do this:
$ ls -l apple.txt
-rwxr--r-- 1 december december 81 Feb 12 12:45 apple.txt
$
The sequence -rwxr--r-- tells the permissions set for the file apple.txt. The first - tells that apple.txt is a file. The next three letters, rwx, show that the owner has read, write, and execute permissions. Then the next three symbols, r--, show that the group permissions are read only. The final three symbols, r--, show that the world permissions are read only.
Compliments and full credit from:
http://www.december.com/unix/ref/chmod.html
Click to expand...
Click to collapse
Thanks! Added
ih4ckback said:
Amazing thread just what I needed lol thanks!
Click to expand...
Click to collapse
Thanks, all goes to Adrynalyne
Thanks for the guide. Helped me pick out the stupid stupid mistakes I was making...so just a problem. I'm able to use fastboot easily but I seem to be unable to use ADB still on my windows 7. It says there are no devices and I'm dang well sure I have USB debugging on. Is it because Windows 7 is missing drivers for the nexus one or something else?
wonderful guide. I would like to add it to the guides thread.
Really awesome work, thumbs up.
But we should also take a guide on installing adb with Ubuntu/Linux, which isn't a very difficult thing...
mm7490 said:
Really awesome work, thumbs up.
But we should also take a guide on installing adb with Ubuntu/Linux, which isn't a very difficult thing...
Click to expand...
Click to collapse
If I got time tomorrow I could do that. I work primarily in Linux also
Sent from my Samsung Fascinate using Tapatalk Pro
This is good but I have a problem, when I try to remove an .apk file from /system/app it fails and says 'rm failed, Directory not empty'
I have followed exact instructions many time but never succeeded :s any help!!
(I am runnging these commands in device mod)
when I am in recovery mod I get this prompt ~ # and I am not able to enter su mod. how to get rid of this??
Well when the $ changes to # it means you have SU access
mustafa.aziz said:
This is good but I have a problem, when I try to remove an .apk file from /system/app it fails and says 'rm failed, Directory not empty'
Click to expand...
Click to collapse
Please give us the exact command(s) you entered
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
mustafa.aziz said:
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
Click to expand...
Click to collapse
Ok i think you need to do a recursive force delete which should be rf but i am not too sure! could somebody please confirm/ correct this?
Well, I don't think so ^^ As he doesn't want to erase a whole directory, but only a file.
What surprises me the most is the returned message... You're trying to delete an apk, and it says it's a directory :/
Could you please give us the output of this :
Code:
su
mount -o rw,remount /dev/block/stl9 /system
ls -l /system/app/mytouch*
Perhaps you don't even need the su and mount lines, but I'm not sure about that, and that can't harm your system ^^
Khoral said:
Well, I don't think so ^^ As he doesn't want to erase a whole directory, but only a file.
Click to expand...
Click to collapse
I know he doesn't want to delete a whole directory, but since the apk isn't compressed perhaps android looks at is as a directory and not a file? i don't know since what was returned suggested that it was a directory i presumed it was a directory! :S
mustafa.aziz said:
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
Click to expand...
Click to collapse
rm -rf /blah/blah
here is your desired output:
sh-3.2# su
su
sh-3.2# mount -o rw,remount /dev/block/stl9 /system
mount -o rw,remount /dev/block/stl9 /system
sh-3.2# ls -l /system/app/mytouch*
ls -l /system/app/mytouch*
-rw-r--r-- root root 299838 2008-08-01 18:00 mytouchmusic-signed.apk
sh-3.2#

CLI Play

One thing that I really love about Android, is the Gnu/Linux system running in the background. I use Linux on all my regular machines where I do most work via my beloved terminal.
Playing in CLI on Android Phones is just as much fun only Android is missing a lot of the toys I'm used to. So I'm making a collection of some of these tools, some found on the Web and some Home made.
Here if the first collection of the things I've collected so far.
Most of it can be found in different places on the Web, but I find it a lot easier to just get it in one place.
http://dl.dropbox.com/u/14234754/XDA_GLOBAL/android_cli_extras.tar.gz
This small Archive contains the fallowing:
Bash 4.1 - This shell is made to become the default shell on your phone regardless if you connect via SSH or local terminal. Also added an bashrc file.
SSH Shell Client
Remount script - Makes it easier to optain RW on /system (HTC Users will need S-Off)
Nano Editor with terminfo not defined, fix
Init Script to set a user defined hostname and update the hosts file
Now, I don't remember where everything comes from. I believe that the Nano Editor is from the MoDaCo Forum (The terminfo fix is placed in the /system/bin/sh script). The Remount Script is from somewhere on this forum. Bash, I don't remember. SSH Client is from the Better Terminal APK (Perhaps an SFTP client would be nice to). The rest is just some small home made shell scripts.
The Hostname can be changed in /system/etc/init.d/05userinit (Make sure that your current ROM does not already has init scripts to alter hostname. Some custom ROMs do)
The bashrc file is placed in /system/etc/bashrc
This location can be changed in /system/bin/sh
The remount script makes it faster and easier to option RW on /system.
Just type "remount rw" in the shell to switch to Read/Write and then "remount ro" to switch back to Read-only. HTC Users needs S-Off in order to write to /system.
In order to copy the files to the /system partition, you need to option Read/Write without the remount script. In the Shell type "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system". (HTC Users without S-Off will need to do this using ADB in recovery)
If you use the Better Terminal APK for Android, you need to go to settings and make sure that it uses Android Terminal. Otherwise it will use it's own bash which only works when in Better Terminal and also it's full of errors. Also in the option "Command Line" it should be "/system/bin/sh". Make sure that there is NO - at the end, example "/system/bin/sh - ". You might need to remove it twice before it is gone.
(Just in case anyone should wonder. Yes your phone needs to be rooted)
Also if anyone has more fun CLI stuff for android then please bring it

[Q] Need help pushing a system file with adb

I have bricked my device when I tried to copy framework-res.apk to the system folder. I renamed the old framework-res.apk to framework-res.apk.bak but before I could paste the new one the phone freaked out and rebooted and now I'm stuck at the ATT white screen. I have adb access though so I'm hoping I can just push the framework-res file using adb. Every time I try this though I get an error saying file system is read only. I know all I probably need to do is get the computer to mount system as read/write. I just don't know how to do this. Is there anyone out there who can help me out?
Modified from:
http://forum.xda-developers.com/showthread.php?p=41339365
You may need to do:
mount -o remount,rw /system
chmod 777 /system/framework
Thank you for your quick reply. I'm kind of a novice when it comes to adb so bear with me, but when I use those commands I get 'mount' is not recognized as an internal or external command. I'm not sure if it matters or not but I'm running windows XP and my working directory is in c:\android-sdk\platform-tools when I tried executing "mount -o remount,rw /system".
Okay I tried changing the command to "adb shell mount -o remount,rw /system" now I get the error mount operation not permitted. I hope this doesn't mean I borked it. . . Also want to note that I did root the phone.
jack_slapped said:
Thank you for your quick reply. I'm kind of a novice when it comes to adb so bear with me, but when I use those commands I get 'mount' is not recognized as an internal or external command. I'm not sure if it matters or not but I'm running windows XP and my working directory is in c:\android-sdk\platform-tools when I tried executing "mount -o remount,rw /system".
Click to expand...
Click to collapse
You need to do some reading before you go any further - please. ADB is a command shell, and the commands he gave you are for running IN ADB after it's successfully connected to the phone.
There are lots of good writeups on using ADB all over the place.
jack_slapped said:
Okay I tried changing the command to "adb shell mount -o remount,rw /system" now I get the error mount operation not permitted. I hope this doesn't mean I borked it. . . Also want to note that I did root the phone.
Click to expand...
Click to collapse
You need to get INTO the shell first -- then execute the commands.
Also, always stop the system before modifying stuff, especially framework!
like so:
Code:
> [B]adb shell[/B]
$ [B]su[/B]
# [B]mount -o rw,remount /system[/B]
# [B]stop[/B]
# **[I]cp or mv whatever here[/I]**
# [B]reboot[/B]
your cmd prompt will return after reboot
alacrify said:
You need to do some reading before you go any further - please. ADB is a command shell, and the commands he gave you are for running IN ADB after it's successfully connected to the phone.
There are lots of good writeups on using ADB all over the place.
Click to expand...
Click to collapse
I know believe me when I say I'm trying to read as much as I possibly can. Nobody wants this phone fixed more than me. It's just alot of new stuff and I'm not entirely familiar with it. I think I'm connected with adb and started a shell using "adb -s myserial shell". I input the first command and got "mount: operation not permitted". Not really sure why it would say that considering I rooted the device.
jack_slapped said:
I know believe me when I say I'm trying to read as much as I possibly can. Nobody wants this phone fixed more than me. It's just alot of new stuff and I'm not entirely familiar with it. I think I'm connected with adb and started a shell using "adb -s myserial shell". I input the first command and got "mount: operation not permitted". Not really sure why it would say that considering I rooted the device.
Click to expand...
Click to collapse
Be sure to follow gwbard's directions a little closer. The first command inside the ADB shell is "su" which will elevate you to root - this will be necessary in order to execute the "mount" command.
From your command line (assuming in Windows), you'll run the "adb shell" command that gwbard showed. It should give you a prompt that ends with a dollar sign. Once you execute the "su" command, you'll see that change to a pound/hash sign (#).
gwbard said:
You need to get INTO the shell first -- then execute the commands.
Also, always stop the system before modifying stuff, especially framework!
like so:
Code:
> [B]adb shell[/B]
$ [B]su[/B]
# [B]mount -o rw,remount /system[/B]
# [B]stop[/B]
# **[I]cp or mv whatever here[/I]**
# [B]reboot[/B]
your cmd prompt will return after reboot
Click to expand...
Click to collapse
Dude you are the man! That did the trick. I really appreciate it. I'm still trying to figure out exactly what a shell is and how that ties into adb but I learned a good bit about it from today. I've used linux before and I have heard of a shell but never really understood what exactly it was. Anyways thanks again for everyone who helped me get this working.
Aou said:
Be sure to follow gwbard's directions a little closer. The first command inside the ADB shell is "su" which will elevate you to root - this will be necessary in order to execute the "mount" command.
From your command line (assuming in Windows), you'll run the "adb shell" command that gwbard showed. It should give you a prompt that ends with a dollar sign. Once you execute the "su" command, you'll see that change to a pound/hash sign (#).
Click to expand...
Click to collapse
Yea I posted that last one before I saw his instructions. They were right on point. Thanks guys!
jack_slapped said:
Dude you are the man! That did the trick. I really appreciate it. I'm still trying to figure out exactly what a shell is and how that ties into adb but I learned a good bit about it from today. I've used linux before and I have heard of a shell but never really understood what exactly it was. Anyways thanks again for everyone who helped me get this working.
Click to expand...
Click to collapse
When you click "start" and type "cmd", you're starting a shell. They're command interpreters that extend functionality in specific ways. like "dir" for the Windows/DOS command shell, and "su" or "mount" for adb. Lots of good writeups on that around too

Categories

Resources