memmap
Es gibt dieses Tutorial mit dem Titel: Bad Memory HowTo, in dem das Deaktivieren des Speichers über den Kernel mit dem memmap
Argument an den Kernel erläutert wird . Je nach Anleitung haben Sie zwei Möglichkeiten memmap
:
- Alles ausschalten nach dem schlechten Gedächtnis -
(mem=###M option)
- Schalten Sie nur den Speicher um den schlechten Speicher aus -
(memmap=#M$###M option)
Wenn memtest mit der ersten Option meldet, dass bei 600 MB Arbeitsspeicher ein Fehler vorliegt, können Sie den Arbeitsspeicher von diesem Punkt bis zum Ende des Arbeitsspeichers wie folgt deaktivieren:
mem=595M
Wenn 802M- und 807M-RAM fehlerhaft sind, können Sie einen 10M-RAM-Abschnitt ab 800M wie folgt deaktivieren:
memmap=10M$800M
HINWEIS: Dadurch werden die 10M nach der 800M-Basisadresse auf die schwarze Liste gesetzt. Sie sollten memtest86+
danach ausführen , um zu bestätigen, dass dieses Argument korrekt ist.
BadRAM
Für Ubuntu ist ein Patch namens BadRam verfügbar. Hier in diesem Beitrag mit dem Titel: BadRAM auf der Ubuntu-Community-Site wird sehr gut darauf eingegangen.
Nachdem Sie den Patch mit den Details von dieser Seite auf den Kernel angewendet haben, nehmen Sie Änderungen an Ihrem Grub2-Setup vor:
Auszug von dieser Seite für Grub2
Die GRUB2-Konfigurationsdatei in Natty enthält eine Zeile zum Konfigurieren von Ausschlüssen für fehlerhafte Kernel-RAMs. Ich gehe also davon aus, dass dies die bevorzugte Methode ist, um einen fehlerhaften Speicherbereich abzubilden. Die Leitung, die ich eingestellt habe, war
GRUB_BADRAM = "0x7DDF0000,0xffffc000"
Auf jeder Website, die ich finden konnte, wurde vorgeschlagen, memtest86 auszuführen und die BadRAM-Einstellungen anzuzeigen. memtest86 hat mir eine Seite mit Dingen gegeben, die ich hätte eingeben müssen. Ich konnte sehen, dass sich alle Adressen in einem 16-KByte-Block befanden, also wollte ich diesen 16-KByte-Block nur außer Betrieb setzen. So habe ich den richtigen Eintrag generiert.
Der erste Parameter ist einfach. Das ist die Basisadresse des fehlerhaften Speichers. In meinem Fall konnte ich feststellen, dass alle ungültigen Adressen größer als 0x7DDF0000 und kleiner als 0x7DDF4000 waren. Also habe ich den Anfang des 16K-Blocks als meine Startadresse genommen.
Der zweite Parameter ist eine Maske. Sie geben Einsen an, in denen der gewünschte Adressbereich dieselben Werte aufweist, und Nullen, in denen sie variieren. Dies bedeutet, dass Sie Ihren Adressbereich so auswählen müssen, dass nur die niederwertigen Bits variieren. Wenn ich meine Adresse betrachte, ist der erste Teil der Maske einfach. Sie möchten mit 0xffff beginnen. Für das nächste Knabbern werde ich mit Bitmaps erklären. Ich möchte von 0000 bis 0011 reichen. Die Maske für Badram wäre also 1100 oder ein Hex. C. Die letzten 3 Halbbytes müssen alle Nullen in der Maske sein, da der gesamte Bereich zugeordnet werden soll. Wir erhalten also ein Gesamtergebnis von 0xffffc000.
Nachdem ich diese Zeile in / etc / default / grub gesetzt hatte, führte ich sudo update-grub aus und startete neu. Mein fehlerhafter Speicher wurde nicht mehr verwendet. Mit dieser Methode sind keine Kernel-Patches erforderlich, um fehlerhaften Speicher zuzuordnen.
Folgen Sie # 1
Wenn Sie auf der Wikipedia-Seite nach memtest86 + suchen, heißt es wie folgt:
Auszug aus der Wikipedia-Seite von Memtest86
Ab Memtest86 2.3 und Memtest86 + 1.60 kann das Programm eine Liste der fehlerhaften RAM-Bereiche im Format ausgeben, das vom BadRAM-Patch für den Linux-Kernel erwartet wird. Mit diesen Informationen kann ein Linux-System ein RAM-Modul zuverlässig verwenden, auch wenn es einige fehlerhafte Bits enthält. Grub2 ist in der Lage, dieselben Informationen an einen nicht gepatchten Kernel zu liefern, wodurch die Notwendigkeit des BadRAM-Patches zunichte gemacht wird.
Außerdem bin ich auf diese Gentoo-Seite gestoßen, die die memmap=...
Verwendung einer hexadezimalen Adresse angibt , sodass Sie sie folgendermaßen angeben können:
memmap=5M$0x2f796c48
Der 5M ist nur eine Vermutung, offensichtlich können Sie ihn niedriger oder höher einstellen, je nachdem, wie viel RAM in dieser Region Sie weglassen möchten / müssen.
Schließlich können Sie die Größe auch in hex angeben:
memmap=0x10000$0x2f796c48
64 KB ab Adresse 0x2f796c48 werden ignoriert.
Verweise