On a number of Arm platforms, I have kernel size constraints/goals:
- eMMC hardware boot partition has a fixed size, typically 4MB
- the Trusted Firmware (TF) that loads the LinuxBoot kernel into RAM from eMMC is not fast
It should be noted that with IRQs on and multithreading enabled, Linux is at least twice as fast as TF to access eMMC.
So I am trying to organize the LinuxBoot kernel so that it is as small as possible.
One big element of this is the embedded u-root. I know we can make it smaller but if we factor in the idea of pushing networking stack and some drivers out I would rather have a linuxboot-root partition to contain u-root and /lib/modules
That would be good enough to ensure that the LinuxBoot payload fits into 4MB. and By moving all those from initramfs to root, it accelerates the boot process: less bytes to read by slow TF for the kernel, faster kernel reads on the rest (initramfs and kernel drivers).
I have depicted a problem and a possible solution.
What could you say on the problem?
What do you think about the solution?