Linux erkennt nur 2 GB RAM mit 4 installierten - i386 Debian Lenny

7

Ich habe einen Computer mit 4 GB RAM, aber Linux erkennt nur zwei oben und frei. Das BIOS meldet 4.

Ausführen von i386 Debian Lenny.

Schlamm
quelle

Antworten:

11

Sie müssen den bigmemKernel aktivieren .

dpkg --get-selections | grep bigmem
apt-get install linux-image-2.6-xxx-bigmem

Sie können auch überprüfen, ob es funktioniert hat mit:

sudo grep -i memory /var/log/dmesg
[ 0.004000] Memory: 899224k/917504k available (1693k kernel code, 17724k reserved, 746k data, 320k init, 0k highmem)

highmem sollte größer als 0k sein

Joseph Kern
quelle
1

Sie könnten eine 64-Bit-Version von Debian installieren. Dies setzt voraus, dass Sie einen 64-Bit-Prozessor haben, was aus der Frage nicht klar hervorgeht. Die Verwendung der PAE-Erweiterungen in einem 32-Bit-Kernel führt zu Leistungseinbußen. Ohne diese Erweiterungen können Sie nicht alle 4 GB Arbeitsspeicher anzeigen.

Kennzeichen
quelle
Sie können die 4 GB ohne PAE "sehen", es ist nur so, dass ein einziger Prozess dies nicht kann. Sie können den Speicher jedoch von einer Reihe von Prozessen verwenden lassen.
NiXar
1

(Ich hätte dies als Kommentar zu Marks Antwort hinzugefügt, aber es wurde zu lang, um zu passen)

Wie Mark betont, werden Sie mit keinem 32-Bit-Kernel die vollen 4 GB sehen. Abhängig von Ihrem Chipsatz und anderen Faktoren sehen Sie zwischen 3,25 GB und 3,75 GB ohne den Leistungseinbruch von PAE.

Sie müssen jedoch kein vollständiges 64-Bit-System haben - nur einen 64-Bit-Kernel. Ich betreibe einen Server mit 6 GB RAM auf diese Weise: Der Kernel sieht die gesamten 6 GB (nicht 3,5 GB, die ein 32-Bit-Kernel auf dem Computer verwenden könnte), hat aber alles andere mit 32 Bit (ich habe keine Zeit gefunden, eine vollständige Arbeit zu erledigen noch auf 64-Bit installieren).

aptitude install linux-image-2.6-amd64

ist alles, was Sie tun müssen (zumindest beim Ätzen, was diese Box immer noch ist, bezweifle ich, dass sich der Paketname in Lenny geändert hat).

Während kein einzelner Prozess mehr als 3 GB RAM sieht (aufgrund der Art und Weise, wie der virtuelle Speicherplatz für jeden Prozess zugeordnet wird), können Ihre Prozesse insgesamt das gesamte Los verwenden. In meinem Fall führt der Computer mehrere VMs aus, die zusammen ~ 5 GB verbrauchen (das Host-Betriebssystem verwendet den Rest für ein paar andere Kleinigkeiten und E / A-Cache / Puffer). Wenn der Bigmem-Kernel also nur 3,25 GB Ihrer 4 verwenden kann, ist dies möglicherweise einen Versuch wert, die zusätzlichen 0,75 verfügbar zu machen.

Eine weitere Einschränkung: Wenn der Chipsatz des Computers auf 4 GB beschränkt ist, fehlt möglicherweise auch bei einem 64-Bit-Kernel (oder einer vollständigen 64-Bit-Betriebssysteminstallation) ein Teil Ihres RAM. Aber ich denke, Sie werden Pech haben, einen Chipsatz zu finden, der 64-Bit-Prozessoren unterstützt, ohne> 4 GB RAM zu unterstützen.

David Spillett
quelle
Das ist falsch; Sie sehen die vollen 4 GB. Es ist nur so, dass eine einzelne App nicht sofort davon Gebrauch machen kann.
NiXar
Ich bin mir nicht sicher, ob es so ist. Nach meinem Verständnis: Mit einem Chipsatz, der nicht über 4 GB hinausgeht (Hinweis: Dies wird maximal vom Chipsatz unterstützt, was durchaus mehr sein kann als das Maximum, das von einem bestimmten Board mit diesem Chipsatz unterstützt wird), kann der Kernel nirgendwo zugeordnet werden Der Speicher, der mit PCI / AGP-Fenstern kollidiert und ähnlich wie im 64-Bit-Modus ist, außer PAE wie ein 32-Bit-Kernel zu verwenden, hätte auch. Auf einem 32-Bit-Kernel beträgt die verfügbare Gesamtsumme weniger als 4 GB, nicht nur das Pro-Prozess-Limit <4 GB.
David Spillett
Anekdoten: Ich habe jetzt einen 32-Bit-Kernel und sehe nur etwas mehr als 3 GB RAM (ich habe 4 GB im Computer und einen Bigmem-fähigen Kernel). Der 64-Bit-Kernel mit 32-Bit-Userland scheint der richtige Weg zu sein, um die volle Menge zu sehen. Zeit zum Basteln ...
Mark
Dort habe ich angefangen. Die Maschine hatte 4 GB, aber der Kernel konnte nur ~ 3,25 verwenden. Es läuft seit fast sechs Monaten auf diese Weise (64-Bit-Kernel, 32-Bit-Userland) und ich habe keine Probleme festgestellt.
David Spillett