I've been looking into how to boot Android form an SD card. This is the post with the instructions:
I took sdbags's stock zip (4.3) and extracted it on my computer. I used unmkbootimg to extract the initramfs.gz and kernel.gz from the boot.img in the ROM. I unzipped the initramfs and un-cpio'd it, then modified macallan.fstab to refer to /dev/block/mmcblk1p1 for /data, p2 for /system, and p3 for /cache. I also modified init.macallan.rc to avoid having it try to make filesystems on the EMMC -- I want it not to try touching the EMMC at all.
Next I rebuilt the initramfs.gz. I bought a good quality class 10 microsd and partitioned it on my computer with 3 primary partitions, one for /data, one for /system, and one for /cache (about 2GB and 1GB for /system and /cache). I made ext4 filesystems on all 3 partitions, mounted p2, and copied the rom over and installed it by hand using the updater-script as a guide. Then I unmounted and popped the SD card into my TF701t.
To boot it, I put my tablet into fastboot mode. I booted the kernel and ramdisk using 'fastboot boot' -- no need for kexec from recovery. I can do this without any reliance whatsoever on the internal EMMC. It took awhile to boot up, but it booted first try. The app drawer was a bit slow to come up, but I'm pretty happy I get to use my tablet at all! This whole process turned out to be MUCH easier than I expected it would be, and I'm quite confident I could do this to boot any ROM I wanted. I only use stock because of driver issues with my bluetooth keyboard.
Still willing to try my hand at maintaining cromi's ROM2SD branch though
Thanks everyone for all of your help!
Then there was more elaboration here:
To answer your question, I don't know. My method works for booting because I changed the ROM's idea of what device/partition /system and /data live on. I don't know where your device holds its idea of which partition holds the radio firmware. If it's somewhere in the initramfs, then you can modify it in the same way I modified mine and tell it to load the radio off of the external SD. If the ROM is hardcoded to look for the radio on the internal SD, then you may be screwed.
A quick note on the initramfs for those curious: the initramfs (initrd, initramdisk, etc) is a compressed miniature linux filesystem holding the bare essentials necessary to get a linux system running. The initrd's job is to figure out where the filesystem(s) are that hold the actual linux installation, mount them, and hand over control to that linux system.
It's not absolutely necessary to use an initrd to boot a linux system, but it makes it a lot easier because you can load drivers, prepare the filesystem, etc. The stock ROM for the TF701t (and I'm assuming most, if not all ROMs for all android devices) use an initrd to mount /system, /data, and any other necessary partitions. I'm just telling it to mount those from my external SD instead of internal.
I don't know how radio partitions work. Is it just a raw firmware image on the partition, or is it an ext4 (or other) filesystem with a firmware binary file on it? The latter case might mean the initrd mounts the radio firmware along with everything else it does before handing over control to android, so it might mean you can change it to a partition on the external card.
I don't quite understand, and I was hoping for some elaboration as this seems to deal with similar things to the Linux OS (inramfs.gz, kernel.gz, and the bootup process in general.