コンピュータにメモリ チップが 2 つある場合、Ubuntu にメモリ チップを 1 つだけ使用するように指示することは可能ですか?

コンピュータにメモリ チップが 2 つある場合、Ubuntu にメモリ チップを 1 つだけ使用するように指示することは可能ですか?

タイトル通りです。

新しい RAM チップを購入してから、コンピューターに奇妙な問題が発生しており、RAM チップが原因なのではないかと考えていました。

テストするには、まず Ubuntu を 1 つのチップだけを使用するように設定し、次にもう 1 つのチップを使用するように設定したいと思います。複雑な手順 (使用しないチップのすべてのメモリを手動で割り当てて、すべてのプロセスがもう 1 つのチップ上に存在するようにするなど) を実行することは構いませんが、危険な手順を試すのは気になります。

最も簡単な解決策は、コンピューターを開いてチップを物理的に取り外すことですが、可能であればそれを避けたいと思います(コンピューターの開閉に損傷や困難が生じる恐れがあるため)。

Ubuntu に特定のメモリ アドレスを使用しないように指示するにはどうすればよいですか?部分的な解決策を提供します。避けるべきアドレスが与えられれば、それらをオフにすることができます。しかし、どのアドレスがどのチップにあるかを知ることは依然として必要です。

答え1

メモリテスト

まず、https://www.memtest86.com/無料でダウンロード/実行して、memtest記憶力をテストしてください。記憶力が良好であることを確認するには、4/4 テストすべてに少なくとも 1 回は合格する必要があります。完了するまでに数時間かかる場合があります。

memtest失敗すると思われます。新しい SODIMM/DIMM を取り外して、 を再実行してmemtestください。成功した場合は、成功した SODIMM/DIMM を取り外し、もう一方の SODIMM/DIMM を単独で再挿入して、 を再実行してくださいmemtest

バドラム

見るセルが損傷したはんだ付けされた RAM モジュールを搭載したラップトップに Ubuntu をインストールする方法

を調べると、不良なメモリ位置を特定できるパラメータが/etc/default/grub見つかります。GRUB_BADRAM=

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

ソース:https://help.ubuntu.com/community/BadRAM#BADRAM_setting_in_Grub2

Grub2 の BADRAM 設定

NattyのGRUB2設定ファイルには、カーネルの不良RAMの除外を設定するための行があります。したがって、これがエラーが発生しているメモリセクションをマッピングするための推奨される方法であると仮定します。私が設定した行は次のとおりです。

GRUB_BADRAM="0x7DDF0000,0xffffc000" 

私が見つけたすべての Web サイトで推奨されている方法は、これを実行してmemtest86BadRAM 設定を表示するように設定することでした。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:

メモリ エラーが下位メモリで表示されない場合は、"mem=##MB" カーネル オプションを追加して、そのポイントを超えるメモリを一時的に無効にすることができます。例: によるとmemtest86、私のメモリ スティックには 315MB から 325MB の間にエラーがあります。"mem=314MB" を追加することで、カーネルに 314MB しかないと仮定するように指示します。私のシステムはパッチをビルドできるほど安定しているので、その時点で 315MB から 325MB の間のセクションのみをスキップするパラメータを渡すことができます (これにより、502MB の使用可能なメモリが提供されます)。

つまり: Ubuntu Live を起動し、GRUB メニューで を押してe編集モードに入り、矢印キーを使用して「quiet splash」を見つけ、「quiet splash mem=2048MB」に変更し、CTRL+xまたはF10を押して起動を続行します。

関連情報