The end-goal is to allow a graphical menu (similar to grub on PC's) that lets you boot different kernels (and ROMs - requires the ROM's to support it) from various media. This includes on-flash, SD based and USB but could theoretically also include network booting as well.
My current plan is to base the solution on the kexec-hardboot patches my mkasick. I've previously ported those patches to ASUS TF201 and my changes have then been adapted to Nexus 7 and is being used quite extensively.
At present time there is one big disadvantage to this method: It puts requirements on the target kernel. One of my goals in this project is to remove those requirements, so it will also work with stock unmodified kernels.
As far as the graphical part is concerned, the original plan was an extended KxecBoot(.org) or MultiBoot (based on TWRP).
After investigating the available solutions, I decided that I'd (shock-horror) implement my own. The current solutions seem overcomplicated to use and not exactly pretty to look at.
My solution, dubbed Hydra, is a simple - true-and-tried - grid of icons. It's based on recovery's minui graphics and the grid automatically aligns based on how many boot images are present. At present it is limited to 10 boot images, but this will be changed later.
The graphics rendering is optimized and will be improved further, possibly allowing for simple animations and such - but lets leave that for a v2
See screenshots in second post.
It works by reading a simple boot.ini, specifying name, icon, boot.img or raw kernel + ramdisk + cmdline. The device-specific commandline arguments required to boot the kernel will all features are automatically appended to the given cmdline, similarly to how the bootloader does it.
It is going to support multiple boot.ini's which are then merged to give the final set of images. This allows storing a boot.ini on e.g. microsd or usb storage and automatically get a suitable boot icon.
Source and images will come soon, there are a few minor issues that needs to be finished first.
- Tablet arrived!
- 06/07/13: Kexec patches tested successfully! Kexec booting is a go!
- 31/07/13: Multiboot solution is nearly done
Stock kernel with patches
CM Kernel with patches
Kexec tools with hardboot patches
Mike Kasick for thinking up the original kexec hardboot patches