Actually the Pi does boot direct from the SD card. At boot time the GPU runs before the ARM processor. I don't know the details but I imagine it configures the necessary hardware on the SoC, such as the DRAM controller, and then it finds the kernel on the SD card and copies it into RAM. It then allows the ARM processor to start. As far as the ARM is concerned, its code is already in RAM when it boots.
All you have to do is ensure the first partition on the SD card is formatted FAT32 and contains the kernel. After this you can put the rootfs wherever you want, either on the SD card or on an external USB hard drive.
Am confused – how does the arm know how to find the kernel on the SD? It must have a bootloader somewhere. I'd be very surprised if the arm on power up has configured the hardware in a way that it can just execute instructions from the SD?
I guess you are saying that there is a ROM somewhere (which we can't modify), and that it will boot kernels from the SD? If so whats the spec on what the ROM code expects?
Edit: Reading the FAQ, yes it says the GPU does the first stage of the bootloader. That sounds seriously wierd. Does beg the question of what bootloader does the GPU use ....
Oh yes ELDK above, this is a better link:
as its more arm related …