Heresy or not, what I'm more interested in is what you are using as a specification for exFAT?
My 2 target machines of 5, have bare NAND as a main persistent storage. One of the first thing I'll need is decent storage support. While at first, using eMMC and SD, the life is easier and it's quite well possible to begin with only FAT support, for NAND, it's not as simple.
Since I am a total noobass regarding file systems, I am just starting to look at what to chose for this capricious storage device.
Would exFAT be a good fit for a bare NAND? Even if so, I fear it's not exactly legal, to just implement it, right?
Then I'm looking at YAFFS2. But as it's almost always the case with open source, all the "documentation" on it, it's clumsy site passages of how cool it is. And then just a ton of the code, tuned into linux.
And to be on-topic, my bootloader is going to be an ordinary UEFI application OS loader when finished. It will not be bothered with multiboot OS selections, since it's a task of the UEFI Boot Manager. But probably it will incorporate selection of my OS version, - this is especially relevant for the development stage. It's good to have 1 loader which you can direct to boot your multiple OS development versions. The loader will reside in the system partition. OS files will be sitting in the boot partition. which are not the same. And if the boot partiotion won't be of supported by the FW type (other than FAT,) then my bootloader should have at least basic support of the boot partition type. Like in the paragraph above, I mentioned NAND storage. Boot loader shoud understand the type of FS chosen there. Be it YAFFS2 for example, it should be able to locate needed files there and load them.
Among those mentioned file it should load some registry hives into RAM. More, it should understand a little the registry organization structure to be able to read from there what it needs to load yet.
Then after reading from the registry part what it should load, it loads that (these are the kernel and drivers files).
It should prepare enough page tables for the kernel too.
It should transfer configuration information grabbed from the FW to the kernel (ACPI tables).
Then it should image load the kernel PE file, and its imports (hal.dll as a minimum). Thus it should load these as executable images, and dynamically link them.
Then transfer control to the kernel entry.
It's not written yet. But now I am doing almost the same with Sec.sys Dxe.exe pair. Where first is a UEFI loader and the second - UEFI kernel.