[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Hard limit for size of initrd ("the initrd is too big")
From: |
Andrei Borzenkov |
Subject: |
Re: Hard limit for size of initrd ("the initrd is too big") |
Date: |
Sat, 7 Feb 2015 19:00:11 +0300 |
В Tue, 3 Feb 2015 22:00:58 +0000
Eric Ewanco <address@hidden> пишет:
> 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?
0x37FFFFFF was max address available for initrd before bootloader
protocol 2.03. Comments in grub-core/loader/i386/linux.c suggest that
even later Linux could get it wrong, so it was clamped to least common
value for safety.
See Documentation/x86/boot.txt in Linux source tree.
I do not know concrete examples when Linux set initrd_addr_maxm
incorrectly, you may want to ask on Linux list if something is known.
>
> Much appreciated.
>
> Eric
>
>
>