web-dev-qa-db-ja.com

MemTest86 +エラー表示に従って正しい不良RAM=セクターをブラックリストに登録する方法は?

MemTest86 +(Ubuntu 13.04に含まれているバージョン)は言う

Failing address: 002f796c48 -    759.5 MB

この領域をバイパスするには、memmapカーネルパラメータで何を指定する必要がありますか?

実行してみましたmemtester 770MBそして、それはすべてが大丈夫だと言っているので、MemTestの表示が最初から759.5番目のMBのエラーを意味しているようには見えません。

このMemTestインジケーションを解釈してmemmapを設定する方法は?

新しいRAM=を購入するお金がありません。エラーは単一のようですので、それを上書きできるといいのですが。

29
Ivan

memmap

このチュートリアルのタイトルは次のとおりです。 Bad Memory HowTo は、カーネルへのmemmap引数を使用してカーネル経由でメモリを無効にする方法を説明しています。ハウツーによれば、memmapに関しては2つのオプションがあります。

  • 不良メモリの後にすべてをオフにします-(mem=###M option)
  • 不良メモリの周囲のメモリのみをオフにします-(memmap=#M$###M option)

最初のオプションでは、memtestが600Mで不良メモリがあると報告した場合、RAMその時点からRAMの終わりまで、 :

 mem=595M

悪いRAM 802Mおよび807Mの場合)、RAMで始まる800Mからこのように10Mセクションを無効にすることができます:

memmap=10M$800M

注:これにより、800Mのベースアドレスの後に10Mがブラックリストに登録されます。その後、memtest86+を実行して、この引数が正しいことを確認する必要があります。

BadRAM

Ubuntuで使用できるBadRamというパッチがあります。これは、Ubuntuコミュニティサイトの BadRAM というタイトルのこの投稿で非常によく説明されています。

そのページの詳細を使用してカーネルにパッチを適用した後、Grub2セットアップに変更を加えます。

Grub2のそのサイトからの抜粋

NattyのGRUB2構成ファイルには、カーネルの不良RAM除外を構成するための行があります。だから、私はそれがエラーを示しているメモリのセクションをマッピングする好ましい方法だと思います。私が設定したラインは

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

私が見つけたすべてのWebサイトで推奨されている方法は、これを設定してmemtest86を実行し、BadRAM設定を表示することでした。 memtest86は、私が入力しなければならなかったであろうもののページを私に与えました。すべてのアドレスが1つの16Kブロック内にあることがわかりました。そのため、その16Kブロックを動作しないようにマッピングしたいと思いました。これが正しいエントリを生成する方法です。

最初のパラメーターは簡単です。これが不良メモリのベースアドレスです。私の場合、すべての不良アドレスが0x7DDF0000より大きく、0x7DDF4000より小さいことがわかりました。そこで、16Kブロックの先頭を開始アドレスとして使用しました。

2番目のパラメーターはマスクです。必要なアドレス範囲が同じ値を共有する場所に1を置き、変化する場所に0を置きます。つまり、下位ビットのみが変化するようにアドレス範囲を選択する必要があります。私の住所を見ると、マスクの最初の部分は簡単です。あなたは0xffffから始めたいと思います。次のニブルについては、ビットマップで説明します。 0000から0011の範囲にしたいので、badramのマスクは1100またはヘクスcになります。範囲全体をマッピングしたいので、最後の3ニブルはマスクですべて0にする必要があります。したがって、合計結果は0xffffc000になります。

/ etc/default/grubにこの行を設定した後、Sudo update-grubを実行して再起動すると、不良メモリが使用されなくなりました。この方法を使用して不良メモリをマップするためにカーネルパッチは必要ありません。

フォローアップ#1

Memtest86 +のWikipediaページを見ると、次のように記載されています。

Memtest86 wikipedia pageからの抜粋

Memtest86 2.3とMemtest86 + 1.60以降、プログラムは、不正なRAM領域のリストをLinuxカーネルのBadRAMパッチで予期される形式で出力できます。この情報を使用すると、Linuxシステムは確実に使用できます。 a RAMモジュールにはいくつかの不良ビットがあります。Grub2はパッチされていないカーネルにこれと同じ情報を提供できるため、BadRAMパッチの必要性はありません。

また、私はこれに遭遇しました Gentooページ 16進アドレスを使用してmemmap=...を指定したため、次のように指定できます。

memmap=5M$0x2f796c48

5Mは単なる推測です。明らかに、その領域の周りのRAM省略したい/必要とする量に応じて、それを低くまたは高く調整できます。

最後に、サイズを16進数で指定することもできます。

memmap=0x10000$0x2f796c48

アドレス0x2f796c48で始まる64KBを無視します。

参考文献

26
slm

Memtest86 +(4.20を使用)は、badram形式を直接出力できます。

  1. 「c」を押して構成ダイアログを表示します memtest configuration dialogue

  2. 次に、「エラー報告モード」の「4」

    memtest error report mode dialogue

  3. 次に、「BadRAMパターン」の「3」

出力は、個々のテスト失敗のリストから、一連のbadram =行に変化します。各行には、1つ以上の新しい不良セクターが含まれています。線が隣接するセグメントを追加して合体させるため、テストをヘッドレスで一晩実行して、最後に印刷された線を使用できます(ただし、本当に暗い調光がある場合は、このポイントの周りの5メガという形式の方がかなり短いと思われます。 )。

最終結果:

Memtest86+ showing badram output

14
skorgu