Apps-to-SD in Recovery Terminal Tutorial(includes cache and dalvik-cache) - G1 Android Development

Alright, I've been posting this all over trying to help people figure out how to do this and figured it's time to make a dedicated thread. If at any point you get an error DON'T PROCEED. See if I referenced the error you're getting and, if so, do what I suggested. If not, post your error here and I'll try to get back to you ASAP.
NOTE: This can now also be done through my appstoSD app posted on this forum!!!! It will do everything for you.
This tutorial assumes you have:
A: A micro-sd card with 2 partitions, the first must be FAT32 and the second must be ext2.
B: Your phone must have one of the apps-to-sd ROM's installed.
C: Busybox installed into the /system/xbin directory. For steps on this please reference Darkrift's thread.
Before we start, let's make sure your phone is set up to handle this. Open up the terminal emulator app(available in the market) and type:
Code:
su
busybox df -h
If /system/sd doesn't appear, something is wrong. Either your sd card isn't partitioned correctly or your phone has a ROM that doesn't have apps to sd enabled. If /system/sd does show up then you're set and can start the tutorial
NOTE: Moving the cache is highly unstable and works for some people but not for most. I don't recommend trying unless you have a good idea of how to get your phone back to a usable state if it starts boot looping.
Now, for the first step you need to copy all the apps over to the sd card. To do this type(still in the terminal emulator)(The third and fourth lines are for cache to sd only):
Code:
busybox cp -a /data/app /system/sd/
busybox cp -a /data/app-private /system/sd/
busybox cp -a /data/dalvik-cache /system/sd/
busybox cp -a /data/data /system/sd/
exit
exit
Once the terminal emulator app closes, power off your phone. Then, turn it on in recovery mode by holding down the home button and then pressing the power button. Continue holding the home button until the "T-Mobile G1" icon goes away and a menu comes up. Then press Alt-x to go to recovery terminal. Press enter and a prompt should come up with a "#". Now type(If you only want your apps on your sd card and not the caches, skip steps 6-9)
Code:
mount data
rm -rf /data/app
ln -s /system/sd/app /data/app
rm -rf /data/app-private
ln -s /system/sd/app-private /data/app-private
rm -rf /data/data
ln -s /system/sd/data /data/data
rm -rf /data/dalvik-cache
ln -s /system/sd/dalvik-cache /data/dalvik-cache
reboot
And... you're all set! Your phone might take a while at the android screen since it has to populate the apps tray. If it lasts >5-10 minutes then something likely went wrong. Make sure you did all the steps correctly and if you did try the steps in the recovery terminal section of this tutorial again. If it still doesn't work, post here and we'll try to get it sorted out. That aside, enjoy having your apps on SD card and the permanent 72-73MB available!
EDIT: forgot the app-private directory. Thanks, LucidREM!!!

Maximus is the man.

[email protected] said:
Now, for the first step you need to copy all the apps over to the sd card. To do this type(still in the terminal emulator)(The second and third lines are for cache to sd only):
Code:
busybox cp -a /data/app /system/sd/
busybox cp -a /data/dalvik-cache /system/sd/
busybox cp -a /data/data /system/sd/
exit
exit
Once the terminal emulator app closes, power off your phone. Then, turn it on in recovery mode by holding down the home button and then pressing the power button. Continue holding the home button until the "T-Mobile G1" icon goes away and a menu comes up. Then press Alt-x to go to recovery terminal. Press enter and a prompt should come up with a "#". Now type(If you only want your apps on your sd card and not the caches, skip steps 4-7)
Code:
mount data
rm -rf /data/app
ln -s /system/sd/app /data/app
rm -rf /data/data
ln -s /system/sd/data /data/data
rm -rf /data/dalvik-cache
ln -s /system/sd/dalvik-cache /data/dalvik-cache
reboot
Click to expand...
Click to collapse
i see a missing step here .. what about /data/app-private

LucidREM said:
i see a missing step here .. what about /data/app-private
Click to expand...
Click to collapse
RIGHT! I keep forgetting that one cause that folder pisses me off and I move all the apps there to the normal app folder lol. Will fix in 5, 4, 3...
EDIT: 2,1,0

cp: cannot stat '/data/davlik-cache': no such file or directory
whats up?
NEVERMIND. i need to go back to spelling class.

I'm sure its been asked and answered but I'll ask again! I understand it can take quite a few minutes to boot but is this every time you reboot or just the first time?
Thanks

DynaMight said:
I'm sure its been asked and answered but I'll ask again! I understand it can take quite a few minutes to boot but is this every time you reboot or just the first time?
Thanks
Click to expand...
Click to collapse
just the first time. its moving all the apps and cache from phone to sd card during that first reboot.

won't that slow down the phone even more?

the first time takes much longer. Subsequent reboots are of normal duration, comparable to the standard build.

Smokuevo said:
won't that slow down the phone even more?
Click to expand...
Click to collapse
if you use a class six sdcard, the apps will load faster. i believe that class 6 flash media is faster than the phones flash.

stogchris81 said:
if you use a class six sdcard, the apps will load faster. i believe that class 6 flash media is faster than the phones flash.
Click to expand...
Click to collapse
Pushing (writing) a 2MB file through adp push seems a bit faster to the SDCARD compared to the internal memory.
-> rough average for SDCARD : 1200 KB/s
-> rough average for system storage : 1000 KB/s
Regarding pulling (reading), internal seems faster :
-> rough average for SDCARD : 1247 KB/s
-> rough average for system storage : 1250 KB/s
These tests are everything but serious.. This is using the famous SanDisk 8GB Mobile Ultra (class 6).
To conclude I'd say that speed is almost the same, sometimes a bit faster for SDCARD.

i have one question
i tried to read through the thread but it was waay to large and long
if u do install apps to the sd card
when u install a newer rom on it does that mean the apps are automatically installed once again? i would like to do this because haykuro's roms are released once a week and i dont like reinstalling apps over and over again...

bigballa said:
i have one question
i tried to read through the thread but it was waay to large and long
if u do install apps to the sd card
when u install a newer rom on it does that mean the apps are automatically installed once again? i would like to do this because haykuro's roms are released once a week and i dont like reinstalling apps over and over again...
Click to expand...
Click to collapse
Unfortunately the answer is "sorta". The apps will still be on your sd card in the same places you put them. BUT all the symlinks will be gone so it'll look like they all dissapeared. You'll have to repeat the recovery terminal part of the tutorial, but all the stuff before it will be unnecessary.

i keep getting /system/sd/app is not a directory but when i run mkdir /system/sd/app it says that the file already exists.
the one time i got adb to work i did the steps through it to get apps to sd but the i had to wipe my phone. do i have to do the steps in the first post or recreate the symlinks?

wizern23 said:
i keep getting /system/sd/app is not a directory but when i run mkdir /system/sd/app it says that the file already exists.
the one time i got adb to work i did the steps through it to get apps to sd but the i had to wipe my phone. do i have to do the steps in the first post or recreate the symlinks?
Click to expand...
Click to collapse
In terminal emulator do this:
Code:
su
cd /system/sd
ls -l[CODE]
And put what it says on the line with "app" in it here. If it says "app ->" and has something after the arrow(my guess would be /data/app) then you put the symlink the wrong way. Make sure you do ln -s /system/sd/app /data/app, not the other way around. Let me know what your results are

[email protected] said:
In terminal emulator do this:
Code:
su
cd /system/sd
ls -l[CODE]
And put what it says on the line with "app" in it here. If it says "app ->" and has something after the arrow(my guess would be /data/app) then you put the symlink the wrong way. Make sure you do ln -s /system/sd/app /data/app, not the other way around. Let me know what your results are[/QUOTE]
huh? can you repeat that because i didnt understand what you were saying
im at the first step anyway. and thats when it says /system/sd/app is not a directory. my other question is is do i have to use
rm -rf /data/app
rm -rf /data/dalvik-cache
rm -rf /data/app-private
to re-establish the symlinks or did the steps through adb i used get erased when i wiped it.
Click to expand...
Click to collapse

[email protected] said:
In terminal emulator do this:
Code:
su
cd /system/sd
ls -l[CODE]
And put what it says on the line with "app" in it here. If it says "app ->" and has something after the arrow(my guess would be /data/app) then you put the symlink the wrong way. Make sure you do ln -s /system/sd/app /data/app, not the other way around. Let me know what your results are[/QUOTE]
i had the same problem. it said /system/sd/app is not a directory even though it already existed. when i used your code above this was my result:
drwx----- root root 2009-04-12 20:11 lost+found
-rw-r--r-- system system 29303 2009-04-11 11:56 app
Click to expand...
Click to collapse

wizern23 said:
huh? can you repeat that because i didnt understand what you were saying
im at the first step anyway. and thats when it says /system/sd/app is not a directory. my other question is is do i have to use
rm -rf /data/app
rm -rf /data/dalvik-cache
rm -rf /data/app-private
to re-establish the symlinks or did the steps through adb i used get erased when i wiped it.
Click to expand...
Click to collapse
Umm I wouldn't proceed cause if /system/sd/app isn't a directory then you're gonna have lots of problems. I need to know what it says after you type
Code:
su
cd /system/sd/
ln -s
Specifically, there'll be a line of output that has the word "app" towards/at the end. I need to know what's in that line. If the line doesn't start with a 'd' then app isn't a directory and something happened and you need to remove /system/sd/app by typing this in the terminal emulator:
Code:
su
busybox rm -rf /system/sd/app
and then restart the process from the beginning.

it says that /system/sd/app is not a directory but when i do mkdir /system/sd/app it says the file already exists.
the line with app in it says
-rw-r--r-- system system 29303 2009-04-14 17:27 app.
okay removing that made it work.
[edit] Thank you so much. it finally worked. i now have 73mb free on the phone.

glad I could help. On a side note Apps to SD app is now live

Related

moving Steel cache to sdcard

I mainly use Steel as my browser on my phone, so I'm wondering how would I move that cache to my sdcard? I know I can do it with the stock browser, but what about with steel?
I was thinking the same thing... i think the developer of steel can tell u what command leads to his cache folder. after that you would do the same thing you do when you move the stock browser to the sdcard. hope this helps : )
applemonster said:
I mainly use Steel as my browser on my phone, so I'm wondering how would I move that cache to my sdcard? I know I can do it with the stock browser, but what about with steel?
Click to expand...
Click to collapse
cd /data/data/com.kolbysoft.steel/cache
rm -R webviewCache
mkdir /sdcard/cache/steelCache
ln -s /sdcard/cache/steelCache webviewCache
*NOTE*: If the above code does not work for steel browser because there is no cache folder try this:
cd /data/data/com.kolbysoft.steel
mkdir cache
cd cache
mkdir /sdcard/cache/steelCache
ln -s /sdcard/cache/steelCache webviewCache
Hmm, well those first set of directions seemed to work.. I just don't see the cache folder on my sdcard after making it...
applemonster said:
Hmm, well those first set of directions seemed to work.. I just don't see the cache folder on my sdcard after making it...
Click to expand...
Click to collapse
you should .. if you typed everything right it should have worked
I love steel! I went an took a looksy at after this thread, and i must say, its much better than the regular browser!
well, I did all the commands through my computer with adb.. But, everything seemed to work fine.
Edit: Now as I'm watching the log for my phone, through adb, when I start the browser it is saying that is in unable to create the webviewCache directory. Is that because I have the phone hooked up through USB?
Smokuevo said:
cd /data/data/com.kolbysoft.steel/cache
rm -R webviewCache
mkdir /sdcard/cache/steelCache
ln -s /sdcard/cache/steelCache webviewCache
*NOTE*: If the above code does not work for steel browser because there is no cache folder try this:
cd /data/data/com.kolbysoft.steel
mkdir cache
cd cache
mkdir /sdcard/cache/steelCache
ln -s /sdcard/cache/steelCache webviewCache
Click to expand...
Click to collapse
great info on this...
IS IT POSSIBLE TO MAKE A SCRIPT ( AUTORUN SCRIPT ) THAT CAN RUN WITH A UPDATE.ZIP FILE FOR NOOBS AND VETS....
CAUSE IF WE FACTORY RESET OUR G1, WE GOTTA TYPE IN ALL THE COMMANDS AGAIN...
sorry for the caps wanna get attention of someone that can write said script..
robpet2 said:
great info on this...
IS IT POSSIBLE TO MAKE A SCRIPT ( AUTORUN SCRIPT ) THAT CAN RUN WITH A UPDATE.ZIP FILE FOR NOOBS AND VETS....
CAUSE IF WE FACTORY RESET OUR G1, WE GOTTA TYPE IN ALL THE COMMANDS AGAIN...
sorry for the caps wanna get attention of someone that can write said script..
Click to expand...
Click to collapse
Shouldn't be that hard for a programmer to create an app for rooted G1s to bring this onto the phone itself. I wouldn't be surprised if this ends up on the Market.
This worked for me. Thank you very much!
Check this post where you can make a script file and run it instead of typing all these commands in the Terminal:
http://forum.xda-developers.com/showthread.php?t=471653
Add the below in the script file for steel cache (just a short version of the one given in this post):
rm -r /data/data/com.kolbysoft.steel/cache/webviewCache
mkdir /sdcard/cache/steelCache
ln -s /sdcard/cache/steelCache /data/data/com.kolbysoft.steel/cache/webviewCache
Cheers,
-Gus

Help me recover from flashing android screen

In the process of trying to move apps to the SD card, I've mucked something up.
I did:
cp -rp /data/data /system/sd/data
Then, just for safekeeping, I moved the /data/data directory to /data/data.test just in case.
I then did a symlink as follows:
ln -s /system/sd/data /data/data
Upon reboot, I get the flashing android screen. I do not have a nandroid backup (yeah, I know....I really should do that one of these days), but I think all my data should still be there. I just need to remove the symlink and move /data/data.test back to /data/data and all should be well.
How can I do this? Wish there was a sticky thread on how to recover from stuff like this. Digging through all these threads is time consuming and difficult.
well.. from y own experiencie while the phone is stuck on the android flashing screen i am able o access it from my pc using adb so try that
adb shell rm -rf /data/data
than rename data.test to data
adb shell mv /data/data.test /data/data
should work
Ah...didn't realize I could connect via adb at that stage....guess I should have tried it.
That did indeed work. Thanks!

I wiped and have the modded apps to sd 1.5 rom by Lucid, how do I restore my apps.

My apps are still on my sd card, how do I link them back to my phone, I had Jf's 1.5 I wiped after a bad theme install, now I moved to Lucids mod, and is there a way to recall my apps from my sd card again.
they should show up after symlinks are created again and a reboot........all of mine showed back up
just do the system links again and they should all come back, if it hangs try this:
Code:
adb remount
adb shell
cd /system/sd
mv app app1
mv app-private app-private1
do the sys link again busybox cp; rm -r ln -s, yada yada then restart ur phone
then do this
Code:
adb remount
adb shell
cd /system/sd/app1
install *.apk /data/app
wait for a while depending on how many apps u have then
Code:
cd /system/sd/app-private1
install *.apk /data/app-private
reboot
Will this method also add all your apps to the "My Downloads" section?
dasoccerbomb said:
Will this method also add all your apps to the "My Downloads" section?
Click to expand...
Click to collapse
No it will not. In order to have my downloalds back in the market you first have to backup the my downloads. Someone gave the instructions for this here
http://forum.xda-developers.com/showpost.php?p=3655174&postcount=44

Fixing app re-install/update issues

Now that we have root access I was trying to figure out the cause of the "old apps keep reappearing after an update and restart bug."
From the looks of it it seems the /data/boot-cache directory is corrupt. I tried my experiment with Google Sky Map and got the following:
Code:
$ adb shell
$ su
# cd /data/boot-cache
# ls -al *stardroid*
-rw------- system system 3988 2009-10-17 18:36 AndroidManifest.xml
# rm -rf *stardroid*
rm failed for -rf, No such file or directory
# rmdir *stardroid*
rmdir failed for [email protected]@com.google.android.stardroid.apk, Directory not empty
# fsck
fsck: not found
Same thing happens with all the other apps that misbehave when updated.
Do we have any way of running fsck or some other file system repair utility to fix these issues?
Code:
# rm -rf *stardroid*
rm failed for -rf, No such file or directory
# rmdir *stardroid*
rmdir failed for [email protected]@com.google.android.stardroid.apk, Directory not empty
Do we have any way of running fsck or some other file system repair utility to fix these issues?
Click to expand...
Click to collapse
Or you could just empty the directory before you tried to remove it, since whatever 'rm' binary is provided apparently doesn't understand "-rf" and treated it as a filename.
posguy99 said:
Or you could just empty the directory before you tried to remove it, since whatever 'rf' binary is provided apparently doesn't understand "-rf" and treated it as a filename.
Click to expand...
Click to collapse
Seems it doesn't know -rf but works with -r. Let me see if this now fixes the issues.
Keep up the good work man I had this problem multiple times I think it bothered me more than not receiving sms or vvm.
The fix
That is it, you use -r not -rf. So the fix is as follows (I use Astro for getting the following information):
1) Use Astro and backup all your apps to your SD card.
2) The Astro Application Manager/Backup tool will list in red all the apps that it thinks are newer on the SD card than the phone thinks are installed.
3) For each of those apps select them and note the app installed name (first line, called "Name"). Usually com.xxx.xxx, etc.
4) Get a root shell to your phone (follow instructions elsewhere.)
5) cd /data/boot-cache
6) For all the names you generated in step 3 type
Code:
rm -r *<name>*
e.g. taking Google Sky Map as an example this would be
Code:
rm -r *com.google.android.stardroid*
7) Reboot your phone.
8) All apps should now appear in their latest, correct, version.
Google claims this problem is specific to the Hero and SenseUI. Does this cache folder exist on a normal Android build?
is there a chance someone can make an app that would automate this process?
does the issue come back after awhile?
goku14238 said:
does the issue come back after awhile?
Click to expand...
Click to collapse
Anytime you update an app you will see the issue for that app.
This works great. I used it to fix my Handcent which messed up after I upgraded today.
+1 on this. You guys are really killing this phone.

[Script] Turn off Apps2SD on CM 4.2+

The script does a one time copy of the apps from /system/sd to /data for mytouch phones (since we don't need a2sd!). After that, a2sd is just disabled
Attachment: Update zip (takes about 20sec lol)
Pastebin: http://pastebin.com/d108b98f8
Rough info:
Cyanogen & Twisted A2SD modded for Hero (by Maxisma)
Remodified for CM 4.2+ by Wes Garner
This finds out if it is running on Magic or G1 and decides if A2SD is used or not
Mounts EXT for Magic and G1
Or you could just delete your ext2 partition...
but then no userinit
Didn't work for me. I have CM 4.2.5, downloaded mt3g-noa2sd-signed.zip and flashed it in recovery. Then when I rebooted I got to the CM bootscreen, after a few seconds the screen went black. I let it load for 45-60 minutes (watching tv) but nothing happened. Tried to flash again and the same thing.
ls -l in /data showed app and app-private was still linked to sd. I removed the links, made the directories and copied over the data from sd. Then it worked.
Kaptur said:
Didn't work for me. I have CM 4.2.5, downloaded mt3g-noa2sd-signed.zip and flashed it in recovery. Then when I rebooted I got to the CM bootscreen, after a few seconds the screen went black. I let it load for 45-60 minutes (watching tv) but nothing happened. Tried to flash again and the same thing.
ls -l in /data showed app and app-private was still linked to sd. I removed the links, made the directories and copied over the data from sd. Then it worked.
Click to expand...
Click to collapse
I'm having the same issue here, after flashing, I get Cyanogen boot screen and then it moves to black and sits there - since there's no way it's taking that long to copy the data, I'm guessing this script is broken as of 4.2.5.
From CyanogenMod Wiki http://wiki.cyanogenmod.com/index.php/Removing_Apps2SD
Removing Apps2SD
From CyanogenMod Wiki
Jump to: navigation, search
You'll probably have to re-install any paid apps (app-private) but normal apps should run fine after this.
For Terminal Emulator
Code:
su
mount -o rw,remount /system
Then proceed to the ADB instructions from after 'adb shell'
ADB Instructions
Code:
adb remount
adb shell
Code:
rm /data/app
mkdir /data/app
cp /system/sd/app/* /data/app/
rm /data/app-private
mkdir /data/app-private
cp -r /system/sd/app-private/* /data/app-private
rm /data/dalvik-cache
mkdir /data/dalvik-cache
reboot recovery
In Recovery Mode console, you will have to delete the ext partition:
Code:
parted /dev/block/mmcblk0
rm 2
quit
Note: If you had a 3rd partition for swap it will now be partition 2. Adjust your userinit.sh accordingly.
After rebooting, you can confirm that it worked by running:
ls -l /system
From Terminal Emulator (no need to remount/su) and you should see 'app' and 'app-private' as directories (and not app -> /system/sd/app).
Click to expand...
Click to collapse
yea oops, forgot to delete old symlinks on it
It doesn´t work for me...
I´m trying to disable A2sd because of my partition layout (Swap+Fat32) on my HTC Magic 32B but nothing happens after applying the update. My phone it just keeps in the bootloop forever....

Categories

Resources