[Android Q&A, Help & Troubleshooting] harddisk_wp:
Beware, this guide is more or less untested, it will interfere with stuff like memory encryption and OTA or other firmware updates. You have been warned, I assume no warranties for bricked phones, SD cards or lost data.

Many cheap-ass Mediatek phones ship with Android 4.4.2 or later and only ridiculous amounts of internal storage (2GB in my case, CAT B15Q). That may be enough for basic apps, but as soon as you install Navigon or other data-heavy apps (or WhatsApp with a load of videos) you're going to run out of space in no time - and because Google is a bunch of fools, they disallowed app installations to SD cards entirely in 4.4!

So, we're going to move /data in its entirety to our nice huge SD card and be able to use even bigger apps on small phones. It might be possible that this guide works on other phones, but that depends on how they boot and where the fstab and init.rc reside!

Prerequisites:

Mediatek-based 4.4.2 or later phone with root access in recovery (boot it in recovery, run adb shell, therein run id. If it says root, all fine. If not, install CWM)

A large enough SD card (I chose a 32GB card with a 50:50 split between /data and the "external sd card")

Solid Linux knowledge, one Linux PC and one Windows PCs. I urge you to NOT use any kind of VM unless you have experience with USB passthrough.

spFlashTool and the Mediatek drivers from http://xdaforums.com/general/general/stock-rom-cat-b15q-rom-development-t2988774, for a flashing guide see http://xdaforums.com/android/help/howto-firmware-flashing-cat-b15q-t2989627

mtkdroidtools from https://www.androidfilehost.com/?fid=23501681358558543 on the Windows PC

mtk-tools from https://github.com/bgcngm/mtk-tools on the Linux PC (no, Cygwin does not work, it messes up the permission bits), cloned on an ext4 partition (not sure if ext2/3 can handle the extended permission bits...)

a network connection between the PCs or a USB stick to transfer files

Take the sd card out of the phone and insert it into your computer. Many laptop SD slots don't like SDXC (>4GB), you might need e.g. a Huawei 3G stick or a SDXC-compatible USB dongle.

Repartition the SD card using Acronis Disk Director, gparted or whatever you're familiar with. The first partition must only be resized (this is the FAT partition), the second partition is a ext4 (!) partition. Both MUST be primary partitions. Acronis and other tools on Windows might require a reboot to repartition SD cards. I recommend a 50:50% split, but if you're heavy on apps or their data, you might go for a 25% FAT: 75% EXT4 split.

Boot your phone into recovery, connect to it with adb in a root shell.

Assuming your data partition is at /dev/mmcblk0p8 (look in /fstab to find it out, followed by mount /data and ls /data to verify), execute the command "dd if=/dev/mmcblk0p8 of=/dev/mmcblk1p2", wait until it is finished. This can take up to ten minutes or more, depending how much data there is.

Shut down the phone, take out battery and SD card.

Insert the SD card into your Linux machine, run resize2fs /dev/sdb2 (or wherever the ext4 sd card partition ended up, check it in dmesg) as root so that the filesystem grows; then eject the SD card and put it back into your phone

Readback your BOOTIMG partition, transfer it to the linux PC (or, if you already have a boot.img for your current firmware, use this one)

On the Linux PC, open a rootshell (to avoid permission issues when building the ramdisk).

Run "./unpack-MTK.pl /path/to/bootimg"

"cd boot.img-ramdisk" (directory might be named different, depending on how you named the bootimg dump file)

Using a text editor, edit the "fstab" file(s) (there might be multiple, with suffixes): From (adjust if needed)

/emmc@usrdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check,encryptable=footer

to:

/dev/block/mmcblk1p2 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check,encryptable=footer

Now, edit the init.rc file (beware, other .rc files in the ramdisk root might also contain mount commands!).

Search for "on fs_property:ro.mount.fs=EXT4" and again replace /emmc@usrdata (or whatever the node for /data had been) with /dev/block/mmcblk1p2 in the commands in this block (should be fsck, tune2fs,ext4_resize and mount).

Repack the boot image: ./repack-MTK.pl -boot boot.img-kernel.img boot.img-ramdisk/ /path/to/newboot.img

Transfer newboot.img to the Windows PC and flash it using spFlashTool

boot your phone, look in Settings->Memory to see if it went OK!

If the memory view didn't change, also modify the other blocks of on fs_property, in case your device does not use an ext4 rootfs (but yaffs or ubifs instead).