I now have a working initramfs generated by these build scripts that launches a bootmenu application which scans the available partitions and presents a list of bootable systems which can be loaded via kexec.
In the process I added uImage support to kexec which means it should work with the current distros out there like SHR which provide uImages for their kernels.
The next thing I’m going to do is patching Qi to load an alternative kernel upon AUX press instead of just skipping one.
Then I need to optimize the whole thing for speed. It currently takes between 12-14 seconds (depending on whether I also scan the flash partition, mounting a jffs2 filesystem is slow because of the initial inode scanning, I should probably also test with ubifs). This is with the debug board attached, I don’t know whether that makes a difference. The whole uncompressed initramfs content is about 3.4 MB (this is with network support + dropbear). I should try to remove more unneeded stuff and maybe link a few things statically. The kernel can probably also be optimized for speed. Using devtmpfs from 2.6.32 for example would make busybox’s mdev obsolete (I don’t want to use a static /dev).
Anyway the basic functionality is there and I should probably provide a pre built kernel which contains the initramfs for users to test. And gta01 support is also a TODO item of course. My progress can be followed on the distro-devel list.