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


28

MemTest86 +(Ubuntu 13.04に含まれているバージョン)によると

Failing address: 002f796c48 -    759.5 MB

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

実行memtester 770MBしてみましたが、すべてが正常であると表示されるため、MemTestの表示が最初から759.5 MBのエラーを意味するようには見えません。

このMemTest指示を解釈して構成するにはmemmap

現在、新しいRAMを購入するお金がなく、エラーは1つだけのようです。


FWIWは、不良セグメントを検出したが回復できる場合、カーネルは特定のページを「予約済み」としてマークします。「free -m」の出力は、合計で2のべき乗を示していますか?memtesterが不良RAMを見ることができないが、memtest86 +は見ることができる理由を説明する方法としてこれを言及します。
ブラチリー

actially 2の累乗ようには見えません。i.stack.imgur.com/l86L1.png
イワン

エラーが検出されるまでに(ecc ramを使用している場合でも)、通常は手遅れです。また、biosとkernelの両方がRAMを予約するため、free -mは2の偶数乗を報告しません。
-psusi

1
ECCラップトップを購入することを夢見ていますが、利用可能なオファーを見つけることができませんでした。存在しないようです。
イヴァン

不良ページを検出すると、カーネルもprintkのように見えます(行264〜265)。
ブラチリー

回答:


26

memmap

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

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

最初のオプションでは、600Mで不良メモリがあるとmemtestが報告した場合、その時点からRAMの最後までRAMを無効にできます。

 mem=595M

802Mと807Mに不良RAMがある場合、次のように800Mから始まる10MのRAMセクションを無効にできます。

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または16進数cです。範囲全体をマッピングするため、最後の3つのニブルはマスク内ですべて0にする必要があります。したがって、合計結果は0xffffc000になります。

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

フォローアップ#1

memtest86 +のウィキペディアページを見ると、次のように表示されます。

Memtest86ウィキペディアのページからの抜粋

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

また、16進アドレスを使用して指定したこのGentooページに出会ったmemmap=...ので、次のように指定できます。

memmap=5M$0x2f796c48

5Mは単なる推測です。明らかに、その領域の周囲のRAMの量に応じて、それを低くしたり高くしたりすることができます。

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

memmap=0x10000$0x2f796c48

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

参照資料


「804Mを800Mは」私が想定し、「810Mに800M」ことになっている...
Hauke Laging

それは可能ですが、800Mから810Mの間で4Mよりも多くのメモリを捨てているにもかかわらず、私が書いたものでも大丈夫です。
slm

1
1. memmapオプションについては知っていますが、質問はmemtest86 +の出力の解釈方法に関するものです。memtest86 +の出力の特定の例を示し、この特定のケースでmemmap それに応じて構成する際に助けを求めています。2.「memtest86 +を後で実行して、この引数が正しいことを確認する必要があります。」-memtest86 +はOSカーネルよりも前に実行されるため、memmapLinuxカーネルオプションが影響する可能性があることを真剣に疑います。
イヴァン

@ Ivan、1。私が含めた例を考えれば明らかだと思いましたが、次のようなことを言う必要がありmemmap=5M$759Mます。特定のケースでは、memtest86 +が759.5MBで失敗します。2. memmap=...オプションをmemtest86 +にも渡す必要があることを意味しました。それは未テスト/未確認でしたが、memtest86 +でできることかもしれません。
slm

1
はい、ありがとう。「002f796c48-759.5 MB」の意味がわかりませんでした(おそらく、002f796c48アドレスの後に759.5メガバイトになるなど)。LinuxカーネルパラメーターをMemTest86 +に渡すことができるとは思っていませんでしたLinuxで行います)。
イヴァン

14

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

  1. 「c」を押して構成ダイアログにアクセスします memtest設定ダイアログ

  2. 「エラー報告モード」の場合は「4」

    memtestエラーレポートモードダイアログ

  3. 「BadRAMパターン」の場合は「3」

出力は、個々のテストの失敗のリストから一連のbadram =行に変わり、それぞれに1つの新しい不良セクターが含まれます。行が隣接するセグメントを追加および合体するため、テストをヘッドレスで一晩実行し、最終的な印刷行を使用できます(ただし、非常に悪い調光がある場合は、精度の低い「5ポイントあたりの5メガ」形式はかなり短くなります)。

最終結果:

Badram出力を示すMemtest86 +


4
これを手でコピーして、代わりにエラーを再入力せずにGRUBに渡す必要がなければ、それは素晴らしいことです。
Ehteshチョードリー

8
私がやったのは、カメラの電話で写真を撮り、GIMPにロードし、=>グレースケール=>反転=>コントラスト/ガンマにしてからtesseract ${IMG} stdout..に渡し、/ etc / defaultに挿入する前に行を検証して修正しました/ grub ...手動ですぐに入力するのと同じくらい時間がかかったと思われます^^
eMPee584 14

3
手作業で行うよりも間違いなく楽しい
ヒツジを飛ばす
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.