[G1 Android Development] MarcusMaximus04@gmail.com:
Well, some of you may have heard my ramblings around here that I've been working with some of the devs here(JF and MartinFick deserve major praise, probably more than me) on getting a better way to do the whole apps to sd thing.

After 3 days of talking/discussing/working on it, I've finally reached the fruits of that investigation and thought I'd share. This new method uses the filesystem unionfs to essentially meld the /data directory with the /system/sd directory, so that they appear to be one. This has the potential to allow users to move specific apps to or from the sd card, is far more stable than the normal symlink method(will still boot, etc even if there's no SD card) and should be easier to set up. Now, onto the tutorial of setting this up.

BIG DISCLAIMER NOTE: This is a major hack of the phone and it is fully possible that it will break your phone(I've seen no permanently bricked phones but that doesn't make it impossible). Use this method, and my app along with it at your own risk.

REQUIREMENTS:

1: This only works on JF(possibly only on 1.5, not sure about the others) and The Dude's v.1.0 or greater. The Dude's 1.0 or greater actually does the steps in this tutorial for you so you can just run appstosd2 and set it all up from there if you're using his ROM.

2: This still requires you to have 2 partitions set up, first FAT32 and second ext2. Although you can use the appstosd2 app attached to this post and available in the market for $0.99 which will partition the card for you.

3: If you want your apps to go to the sd card, you must have a directory "/system/sd/app" If you didn't have apps to sd before on the ext2 partition do the following in terminal emulator or run my appstosd2 app after finishing the tutorial:

su
mkdir /system/sd/app

If you want the private-apps, or dalvik-cache moved you can replace "app" in that code with ""app-private", or "dalvik-cache" respectively. Do not copy "data" to the sd card. My script will delete it on the next reboot.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Alright, first there's some files you need.

1: init.rc in .zip attached to this thread

2: a2sd.sh in .zip attached to this thread

All the above listed files should be put on your sd card(my tutorial will assume they are in the root directory of the sdcard(the topmost folder)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

If you need to undo the normal apps to SD first do the following in the recovery terminal(it's not strictly necessary but I'd recommend it):

mount data
rm /data/app
mkdir /data/app

if you moved the dalvik cache, repeat steps 2-3 with "dalvik-cache" instead of app. Ditto with "data" for the data cache.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Then go to terminal emulator and type the following:

su
cp /sdcard/init.rc /data/
cp /sdcard/a2sd.sh /data/

Then reboot and you're set. By default all future apps are installed to the sd card. In order to move an app to the internal memory do the following in terminal emulator:

su
cp /system/sd/app/[the app you want to move] /system/intmem/app/
rm /system/sd/app/[the app you want to move]

I will be incorporating this into my appstosd app soon(probably as a JF and TheDude-only version until the rest of the devs get on board).

I have included a copy of appstosd 2, which will copy all apps from internal memory to the sd card with an option to remove them from the internal memory. This will only work if you have followed this tutorial.

If you don't have partitions set up, appstosd2 will now do that for you with user-set partition sizes.

NOTE: If you're using The Dude's ROM and find yourself with an outdated version of this since he doesn't always update his ROMs at the same time I update this, do the following in terminal emulator to update(after putting a2sd.sh from the attached a2sd.zip on your sdcard):

su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
rm /system/bin/a2sd.sh
cp /sdcard/a2sd.sh /system/bin/
reboot

For JF1.5, do the following to update:

su
rm /system/intmem/a2sd.sh
rm /system/intmem/init.rc
cp /sdcard/a2sd.sh /system/intmem/
cp /sdcard/init.rc /system/intmem/
reboot

NOTE FOR UPDATERS: If you had your data on the sdcard(/system/sd/data), it WILL GET DELETED with the new version. This is a necessity in order to get both wallpaper and protected apps working. I recommend moving it back to the phone.

EDIT: And here's another tutorial from ThatsBS(might be easier for the less tech savvy to follow?):

I am still learning a lot everyday from this forum. So for people new to this process let me noobify it, if I can, as I am one too.

Start by reading the first page!! Get all the stuff you need from page 1. (apps2sd2.zip and a2sd.zip )

I started from a fresh wipe and flash of jf1.51 adp.

A newly formatted fat32, non partitioned sd.

Put the init.rc and app2sd.sh on the sd (the files NOT the zip)

Then go to the terminal emulator and typed:

su

cp /sdcard/init.rc /data/

cp /sdcard/a2sd.sh /data/

Then reboot

Next I ran the apps2sd 2 app. It will ask you how much to you want to partition. I did 3000mb the first successful time and the dreaded low mem notice would not leave the status bar. I have read not to make it more then 1500mb. Have a good connection, dont force close it. It will reboot.

Next, after the reboot, I ran the apps2sd 2 app again and pressed "copy apps to sd" (let it do its thing)

Reboot.

Next I went back to the emulator and typed:

su

mkdir /system/sd/app-private

mkdir /system/sd/dalvik-cache

Reboot.

Go back to the apps2sd 2 app and hit move dalvik-cache.

Reboot for good measure and your done.

I did this in about 10 mins. Worked flawlessly.