Why doesn the kernel see all of my RAM?
• (REG, based on contribution from Mark Hahn) Some older distributions like (RedHat 6.1) are quite old, and use a 2.2 kernel which has not fundamentally changed since mid-to-late 1998. Way back then, the safe thing for the kernel to do was trust the standard bios memory detection mechanism. That bios call returns memory size as a 16 bit count of 1 KiB chunks, leading to a 64 MiB limit. Modern kernels (2.4 is the current stable kernel) use more modern bios calls that can detect all your memory, and even keep track of which memory is used by the bios itself. So your best option is to install a modern kernel. You can workaround the 64 MiB limit with obsolete kernels by telling the kernel how much memory you have, by using the mem= boot argument. For example, if you have 128 MiB of RAM, you would type mem=128M at the lilo prompt, or can have lilo use the argument automatically (add append=”mem=128M” to your /etc/lilo.conf file).