[Android Software/Hacking General [Developers Only]] CosmicDan:
I've gone ahead and made a new script based on AD2SDX Alpha 2, also with my previous changes. Read the comments in the top of the script for more info on changes.

You can also check the log file at /data/csdx.log to see if stuff worked.

I did a lot of testing, it can be run from recovery fine, it won't break boot on fresh (blank) installs, and because it doesn't swap sd-ext and data anymore and is simplified it should be much more reliable.

#!/sbin/sh
#
# CSDX (Cosmic SD-EXT) script
# ==================================================
#
# v1.0
# - Initial version
# - Based on AD2SDX Alpha 2 by amarullz, ALL CREDIT
# GOES TO HIM!
# - Doesn't swap /data and /sd-ext mounts (solves race
# condition with dalvik-cache on fresh boot)
# - Moves more system data back to internal (MIUI, Sony
# framework, Google apps)
# - Mounts in ext2 instead of ext4 because it's faster
# - Filesystem check on every boot (safer)
#
#

# Verbose shell output for debugging purposes
# set -xv

LOG=/data/csdx.log

echo "[CSDX] Begin!"
echo "[C2DX] Script started - $(date)" > $LOG

EXT_SDCARD=/sd-ext

if [ ! -d $EXT_SDCARD ];
then
echo "[C2DX] $EXT_SDCARD does not exist, creating..." >> $LOG
mount -o rw,remount -t rootfs rootfs /
rm -r -f $EXT_SDCARD
mkdir -p $EXT_SDCARD
chmod -R 775 $EXT_SDCARD
chown -R 0:0 $EXT_SDCARD
mount -o ro,remount -t rootfs rootfs /
fi

chmod 775 $EXT_SDCARD
chown 0:0 $EXT_SDCARD
mount /data

echo "[C2DX] Setting read_ahead_kb..." >> $LOG
echo "4096" > /sys/devices/virtual/bdi/179:0/read_ahead_kb 1>>$LOG 2>>$LOG

echo "[C2DX] Unmounting (if needed)..." >> $LOG
umount /sd-ext 1>>$LOG 2>>$LOG
umount $EXT_SDCARD 1>>$LOG 2>>$LOG
umount /dev/block/mmcblk0p2 1>>$LOG 2>>$LOG
umount /dev/block/vold/179:2 1>>$LOG 2>>$LOG
echo "[C2DX] Checking for errors (and fixing if necessary)..." >> $LOG
e2fsck -p /dev/block/mmcblk0p2 1>>$LOG 2>>$LOG
echo "[C2DX] Mounting..." >> $LOG
mount -t ext2 -o rw,nouser_xattr,errors=continue,noatime,nodiratime,nosuid,nodev /dev/block/vold/179:2 $EXT_SDCARD 1>>$LOG 2>>$LOG
mount -t ext2 -o rw,nouser_xattr,errors=continue,noatime,nodiratime,nosuid,nodev /dev/block/mmcblk0p2 $EXT_SDCARD 1>>$LOG 2>>$LOG
mount >> $LOG

for i in app app_s app-private data framework_s lib_s ;
do
if [ -h $EXT_SDCARD/$i ]
then
echo "[C2DX] Removing incorrect symlink '$i' on sd-ext..." >> $LOG
rm $EXT_SDCARD/$i 1>>$LOG 2>>$LOG
fi;

if [ -d /data/$i ]
then
# Check if already linked
if [ ! -d $EXT_SDCARD/$i ]
then
echo "[C2DX] Moving '$i' to sd-ext..." >> $LOG
mv /data/$i $EXT_SDCARD/ 1>>$LOG 2>>$LOG
fi;
fi;

if [ ! -d /data/$i ]
then
echo "[C2DX] Creating '$i' on sd-ext (just in case)..." >> $LOG
mkdir $EXT_SDCARD/$i 1>>$LOG 2>>$LOG
chmod 0777 $EXT_SDCARD/$i 1>>$LOG 2>>$LOG
fi;

if [ ! -h $EXT_SDCARD/$i ]
then
# Check if already linked
echo "[C2DX] Linking '$i' to sd-ext..." >> $LOG
ln -s $EXT_SDCARD/$i /data/$i 1>>$LOG 2>>$LOG
fi;
done;

###

if [ ! -d /data/data_system ]
then
echo "[C2DX] Creating system data folder..." >> $LOG
mkdir /data/data_system 1>>$LOG 2>>$LOG
chmod 0777 /data/data_system 1>>$LOG 2>>$LOG
fi;

cd $EXT_SDCARD/data/;
for i in `ls -d com.htc* com.android* com.google* com.ijinshan.mguard.provider com.lbe.security.miui com.miui* com.sonyericsson* com.svox.pico com.wali.miui.networkassistant com.xiaomi.xmsf miui`;
do
if [ ! -h $EXT_SDCARD/data/$i ]
then
echo "[C2DX] Moving '$i' back to internal data..." >> $LOG
mv $EXT_SDCARD/data/$i /data/data_system/ 1>>$LOG 2>>$LOG
fi;
done;

cd /data/data_system/
for i in `ls -d *`;
do
if [ ! -h $EXT_SDCARD/data/$i ]
then
echo "[C2DX] Linking '$i' back to internal data..." >> $LOG
ln -s /data/data_system/$i $EXT_SDCARD/data/$i 1>>$LOG 2>>$LOG
fi;
done;

echo "[C2DX] Finished! See $LOG for details."
echo "[C2DX] Script finished - $(date)" >> $LOG