[Galaxy S I9000 Android Development] RyanZA:
Update! Much improved APP version is available here: http://xdaforums.com/showpost.php?p=8230964&postcount=143

Still not recommended for anybody without a fully working recovery mode. :)

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

This is very much ALPHA! Don't try it unless you have something to prove! ;)

Does not work with the latest froyo builds

Start off with a clean firmware without any other lagfixes. It should work in other cases, but I've only tested it with a clean JM8. It should work fine in a clean JPC Froyo too. You're gonna need busybox (1.17.1) or similar tools.

Step 1: You need a 512byte MBR file. If you have a 8GB I9000 like me, you can use my attached file. Else, proceed to post #2 on how to create this file for your device.

Step 2: Copy all of the required files to the correct place.

adb push test.sh /sdcard/test.sh
adb push parted-static /sdcard/parted-static
adb push partprobe-static /sdcard/partprobe-static
adb push playlogos1 /sdcard/playlogos1

adb shell
su
busybox cp /sdcard/test.sh /system/bin/userinit.sh
busybox cp /sdcard/parted-static /dbdata/parted-static
busybox cp /sdcard/partprobe-static /dbdata/partprobe-static
busybox mv /system/bin/playlogos1 /system/bin/playlogosnow
busybox cp /sdcard/playlogos1 /system/bin/playlogos1

chmod 755 /system/bin/playlogos1
chmod 755 /system/bin/userinit.sh

Step 3: Put the MBR file in place. It must be a 512byte file, and it must be placed in /dbdata/test2 - Refer to 2nd post to create one, or use my included one in the zip.

EDIT: Missed a step. You need to move the binary '/system/bin/fsck_msdos' to '/system/bin/fsck_msdos.bak' or other name. You won't be able to unmount if the FAT32 check is running. It will have to be done manually after.

Step 4: This is the hard part! Reboot your phone. The boot logo will be 20 seconds delayed. This is because there is a 'sleep 20' command inside the boot script, as it seems to take 10+ seconds for mmcblk0p3 to show up in /dev/block. I don't know why, it should show up instantly. Anyway, it'll boot up after you see the messed up boot logo.

Step 5: Create the EXT2 partition

adb shell
su
busybox mkfs.ext2 -b 4096 -m 0 /dev/block/mmcblk0p3
mount -t ext2 -o noatime,nodiratime,errors=continue /dev/block/mmcblk0p3 /data/data2

Step 6: Copy your /data/data across, and whatever else you want too

mkdir /data/data2
busybox cp -rp /data/data /data/data2/
busybox mv /data/data /data/data.bak
busybox ln -s /data/data2/data /data/data

You can repeat the cp, mv, and ln for app, app-private, system, dalvik-cache

Step 7: Reboot. It'll have the messed up boot animation again.

Congratulations!

Quadrant scores are around 1900 (database writes take longer than EXT2 on RFS, as the buffer is smaller)

It runs very very smoothly though!

Good luck if you try this!

I'll have an app to do all of this later in the week / next week.

If anybody can tell me why I need the 'sleep 20' before /dev/block/mmcblk0p3 is created, I'd really like to know. :)

Updates / Known Issues

GPS breaks on boot. Fix it with 'kill pid', where pid is found with 'ps' and the process is called '/system/bin/gpsd/glgps_samsungJupiter'

20 second pause is too long, and some apps may start to load before hand! I changed the 20 sec sleep in test.sh to 10 sec, and it seems a lot better. :) Still need to find out why a pause is needed at all.