We have a special application (GNU/Linux 3.4.47, x86_64, BIOS, PXE, OpenSuSE grub2-2.00-1.6.1) that requires large initrds. We are approaching the 462M size limit that appears to exist on our architecture. Since we have 16G of memory
I’m not sure I understand where the 462M maximum size (specifically, GRUB_LINUX_INITRD_MAX_ADDRESS in include/i386/linux.h, which is 0x37FFFFFF, unchanged in the bleeding-edge code) comes from. Understanding this choice of value for the ceiling seems to require
some background I don’t have and can’t find. I’ve been studying the code (grub-core/loader/i386/linux.c) and doing a lot of research but I’m unable to gain any traction. Can a developer point me in the right direction or offer some helpful background? Could
this be a one-size-fits-all/least-common-denominator value that might be tweakable upward for our particular hardware, or is it a hard architectural limit? Is this a 32-bit limit of some sort?
Much appreciated.
Eric