Wie Du Deinen Xen-PAE Kernel Mit Mehr Als 4GB RAM Arbeiten Lassen Kannst (Debian Etch Mit GRUB)

Version 1.0
Author: Falko Timme


Wenn Du einen Server mit mehr als 4GB RAM hast und ein 32bit Debian Etch darauf installieren möchtest (wie in dieser Anleitung beschrieben wird: Debian Etch And Xen From The Debian Repository), würdest Du erwarten, dass der Xen-PAE Kernel Deinen ganzen Arbeitsspeicher erkennt, da der Xen-PAE Kernel bis zu 64GB RAM unterstütz. Tatsächlich erkennt er lediglich ungefähr 3.3GB RAM aufgrund eines Fehlers im GRUB Bootloader. Diese Anleitung erklärt, wie Du GRUB reparieren kannst GRUB, sodass Dein ganzer Arbeitsspeicher erkannt wird.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Dieser Fehler existiert auch auf 64bit Debian Systemen - der Standard Debian Xen Kernel erkennt auch nur 3.3GB des Arbeitsspeichers. Es kann sein, dass die folgende Prozedur auch auf 64bit Debian Etch Systemen funktioniert, obwohl ich es nur auf einem 32bit Debian Etch System ausprobiert habe.

Ich nehme an, dass Du Xen bereits auf Deinem System eingerichtet hast, dieser Anleitung folgend: Debian Etch And Xen From The Debian Repository
Ich habe dies auf einem System mit 6GB RAM getestet.

Folge dieser Anleitung nicht, wenn Du einen anderen Bootloader als GRUB (z.B. lilo) verwendest!

2 Deinen Speicherplatz Überprüfen

Du kannst Folgendes laufen lassen

cat /proc/meminfo

um herauszufinden, wieviel Speicherplatz Dein System erkennt:

Debian-40-etch-32-minimal:~# cat /proc/meminfo
MemTotal: 3468288 kB
MemFree: 3237948 kB
Buffers: 55884 kB
Cached: 46124 kB
SwapCached: 0 kB
Active: 68820 kB
Inactive: 41412 kB
HighTotal: 2731012 kB
HighFree: 2667548 kB
LowTotal: 737276 kB
LowFree: 570400 kB
SwapTotal: 2104440 kB
SwapFree: 2104440 kB
Dirty: 3524 kB
Writeback: 0 kB
AnonPages: 8196 kB
Mapped: 3932 kB
Slab: 10140 kB
PageTables: 304 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 3838584 kB
Committed_AS: 50368 kB
VmallocTotal: 116728 kB
VmallocUsed: 3776 kB
VmallocChunk: 112612 kB
Debian-40-etch-32-minimal:~#

Wie Du siehst, werden nur ca. 3.3GB vom System erkannt...

3 GRUB Neu Kompilieren

Lass uns nun den GRUB Bootloader neu kompilieren. Dafür benötigen wir das Paket dpkg-dev :

apt-get install dpkg-dev

Dann laden wir die GRUB Quellen runter...

apt-get source grub

... und installieren alles, was wir zum kompilieren von GRUB benötigen:

apt-get build-dep grub

Wir müssen die stage2/common.c Datei im GRUB Quellverzeichnis bearbeiten. Zunächst erstellen wir eine Kopie dieser Datei:

cd grub-0.97/
cp -a stage2/common.c stage2/common.c.original

Dann öffnen wir sie:

vi stage2/common.c

In der Nähe der Zeile 143 solltest Du diesen Abschnitt finden:
[...]
#ifndef STAGE1_5 unsigned long cont, memtmp, addr; int drive; #endif [...]
Bearbeite ihn wie folgt:
[...]
#ifndef STAGE1_5 unsigned long memtmp, addr; volatile unsigned long cont; int drive; #endif [...]
Speichere die Datei und kompilieren dann das neue GRUB Paket:

debian/rules binary

Danach können wir das neue GRUB Paket wie folgt installieren:

dpkg -i ../grub_0.97-27_i386.deb

Nun müssen wir GRUB auf unseren Festplatten installieren. Ich verwende zwei Festplatten /dev/sda und /dev/sdb (für die Software RAID1), also lass ich dies laufen

grub-install /dev/sda
grub-install /dev/sdb

Wenn Du nur eine Festplatte hast, dann lass grub-install nur einmal laufen. Vergewissere Dich, dass Du die richtige Bezeichnung für Deine Festplatte verwendest (zum Beispiel anstelle von /dev/sda könnte Deine /dev/hda sein - um die Bezeichnung für die Festplatte herauszufinden, kannst Du dies laufen lassen

fdisk -l

).

Nun wird es Zeit für einen Neustart:

reboot

4 Überprüfe Erneut Deinen Speicherplatz

Nach dem Neustart wird es Zeit, den Speicherplatz erneut zu überprüfen. Wenn alles gut gegangen ist, solltes das System nun den ganzen Arbeitsspeicher erkennen:

cat /proc/meminfo


Debian-40-etch-32-minimal:~# cat /proc/meminfo
MemTotal: 6067200 kB
MemFree: 5902700 kB
Buffers: 1596 kB
Cached: 13964 kB
SwapCached: 0 kB
Active: 19316 kB
Inactive: 4408 kB
HighTotal: 5329732 kB
HighFree: 5299600 kB
LowTotal: 737468 kB
LowFree: 603100 kB
SwapTotal: 2104440 kB
SwapFree: 2104440 kB
Dirty: 784 kB
Writeback: 0 kB
AnonPages: 8160 kB
Mapped: 3932 kB
Slab: 8616 kB
PageTables: 324 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 5138040 kB
Committed_AS: 50388 kB
VmallocTotal: 116728 kB
VmallocUsed: 3776 kB
VmallocChunk: 112612 kB
Debian-40-etch-32-minimal:~#

Wie Du siehst, erkennt mein System nun die gesamten 6GB Arbeitsspeicher.

5 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: falko