我有一台配备 4GB RAM 的机器,但 Linux 只检测到 top 和 free 中的两个。BIOS 报告 4。
运行 i386 Debian Lenny。
答案1
您需要启用bigmem
内核。
dpkg --get-selections | grep bigmem
apt-get install linux-image-2.6-xxx-bigmem
您还可以检查它是否适用于:
sudo grep -i memory /var/log/dmesg
[ 0.004000] Memory: 899224k/917504k available (1693k kernel code, 17724k reserved, 746k data, 320k init, 0k highmem)
答案2
您可以安装 64 位版本的 Debian。这假设您有一个 64 位处理器,但问题中并不清楚。在 32 位内核上使用 PAE 扩展会导致性能下降,如果没有这些扩展,您将无法看到完整的 4GB 内存。
答案3
(我本来想将此作为对马克的回答的评论添加,但它太长了,不适合)
正如 Mark 指出的那样,在任何 32 位内核中,您都不会看到完整的 4Gb。根据您的芯片组和其他因素,您将看到 3.25Gb 到 3.75Gb 之间的内存,而不会受到 PAE 性能影响。
但您不必拥有完整的 64 位系统 - 只需 64 位内核即可。我以这种方式运行具有 6GB RAM 的服务器:内核可以看到整个 6GB(而不是 32 位内核可以在机器上使用的 3.5GB),但其他所有内容都是 32 位的(我还没有时间完全重新安装到 64 位)。
aptitude install linux-image-2.6-amd64
就是您需要做的全部(至少在 etch 上,这个盒子仍然是这样,我怀疑 Lenny 中的包名称已经改变了)。
虽然没有一个单独的进程会看到超过 3Gb 的 RAM(因为每个进程的虚拟内存空间映射方式不同),但您的进程总体上可以使用全部内存。在我的例子中,机器运行多个虚拟机,它们总共消耗约 5Gb(主机操作系统将剩余内存用于其他一些小事情和 IO 缓存/缓冲区)。因此,如果 bigmem 内核只能使用 4 个内存中的 3.25Gb,那么可能值得尝试让额外的 0.75 可用。
还有一个警告:如果机器的芯片组限制为 4Gb,那么即使使用 64 位内核(或安装完整的 64 位操作系统),您仍可能会发现部分 RAM“缺失”。但我认为,如果您找不到支持 64 位处理器但不支持 >4Gb RAM 的芯片组,那您就太倒霉了。