[G1 Android Development] dwang:
DOES NOT WORK ON CUPCAKE 1.5. Try one of the other apps to sd card threads.

I decided to create a new thread for hacking a rooted g1 to allow applications to run from the sdcard. The original thread's instructions don't work without some modifications and the original poster doesn't seem to have the time to update it.

I'll try to keep the original post as up to date as possible as new information comes.

Prerequisites:

1. Rooted g1 with jesus freak version 1.30 or 1.31, 1.41 (rc30, rc33) Works with all rooted US, UK, international versions of the g1.

2. Have "adb" from the android sdk installed on your desktop machine.

Sdcard preparation:

Divide your sdcard into 2 partitions. The first partition should be FAT, the second partition should be EXT2. This can be most easily accomplished using a linux or mac machine. For windows, you can use "paragon partition manager 9" to do this. It will allow you to partition your sdcard and format the 2nd partition to ext2 fs. It is very important that the 2nd partition be formatted as EXT2 or the rest of the procedure will NOT work. The 2nd ext2 partition will be used to store your installed apps.

In the original thread, somebody mentioned a HP sdcard partition tool program, but I don't believe that will allow you to format the partition to EXT2 fs.

Procedure:

1. With the phone off, insert your newly partitioned sdcard into the g1.

2. Connect your g1 to your desktop via the usb cable and turn it on.

3. Backup your original mountd.conf and initrc.rc files from your g1 by running the following commands on your desktop from the cmd shell:

adb pull /system/etc/mountd.conf <dir on your desktop>

adb pull /system/init.rc <dir on your desktop>

4. Mount your g1's /system directory as writable via the desktop cmd shell:

adb remount

5. IMPORTANT! Create a /system/sd directory on your g1 via the desktop cmd shell:

adb shell mkdir /system/sd

adb shell ls /system and make sure that the directory has been created.

6. Download the attached modified mountd.conf and init.rc files to your PC.

7. Push the modified mountd.conf to your g1 via the desktop cmd shell:

adb push /<dir on your desktop of modified file>/mountd.conf /system/etc/mountd.conf

8. Push the modified init.rc to your g1 via the desktop cmd shell:

adb push /<dir on your desktop of modified file>/init.rc /system/init.rc

9. Reboot your g1

10. Connect to the g1 shell via the desktop cmd shell:

adb remount

adb shell

11. Check to see that the ext2 partition has been created and mounted:

busybox df -h

You should see a line that looks similar to this:

/dev/mmcblk0p2 1.2G 9.1M 1.1G 1% /system/sd

If you don't see this line, you didn't partition your sdcard correctly. STOP! Go back and do that.

12. From the G1 shell run the following cmds to copy your app and app-private directories from the internal g1 storage to the sdcard.

busybox cp -a /data/app /system/sd

rm -r /data/app

ln -s /system/sd/app /data/app

busybox cp -a /data/app-private /system/sd/app-private

rm -r /data/app-private

ln -s /system/sd/app-private /data/app-private

13. Reboot, enjoy all the extra storage!

Undo Procedure by heldc:

Dunno if this has been posted yet, but the undo process is simple. I just did it with no problems, and thought others might want it as well. (Note-if you're copy pasting this to do it, anything following # til the end of a line is just a comment, don't copy/paste it.)

adb remount #makes your file system writeable

adb push /<place you backed up mount.conf to>/filenameofbackeduporiginalmount.conf /system/etc/mountd.conf #restores the original mount.conf

adb push /<place you backed up init.rc to>/filenameofbackeduporiginalinit.rc /system/init.rc #restores the original init.rc

adb shell #opens the phone shell

rm -r /data/app #deleting the symbolic link to /system/sd

mkdir /data/app #recreating /data/app

rm -r /data/app-private #deleting the symbolic link to /system/sd

mkdir /data/app-private #recreating /data/app-private

reboot

Instructions without adb using terminal app by LucidREM

this is a form of the instructions from this thread .. but modified slightly to be used directly from the "Terminal" .. i did not use my USB on my phone to root or run apps .. everything i did was on the G1

$su

#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

#mkdir /system/sd

6. Download the attached modified mountd.conf and init.rc files to your SD.

#busybox cp -a /sdcard/mountd.conf /system/etc/mountd.conf

#busybox cp -a /sdcard/init.rc /system/init.rc

9. Reboot your g1

$su

#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

#busybox df -h

You should see a line that looks similar to this:

/dev/mmcblk0p2 1.2G 9.1M 1.1G 1% /system/sd

If you don't see this line, you didn't partition your sdcard correctly. STOP! Go back and do that.

12. From the G1 shell run the following cmds to copy your app and app-private directories from the internal g1 storage to the sdcard.

#busybox cp -a /data/app /system/sd

#rm -r /data/app

#ln -s /system/sd/app /data/app

#busybox cp -a /data/app-private /system/sd

#rm -r /data/app-private

#ln -s /system/sd/app-private /data/app-private

Reboot your g1

Update 1/19/2009:

Installing non-wipe custom themes shouldn't cause any issues. I just installed the BUUF theme and I didn't have to re-do the procedure.

Update 1/20/2009:

Added undo procedure by heldc

Update 1/27/2009:

Added procedure for moving data directory to the sdcard, without performance issues.

This is not stable so I've moved it to the bottom.

13. Copy /data/data directory from internal storage to sdcard. This is OPTIONAL as some people are still reporting issues.

mkdir /system/sd/data

cp -rp /data/data /system/sd

rm -r /data/data

ln -s /system/sd/data /data/data

Reversal procedure:

rm /data/data

cp -rp /system/sd/data /data

Update 2/7/2009:

Add instructions by lucidrem that doesn't require adb. Allows you to apply the hack from the g1 using terminal app