Bagaimana cara memasukkan daftar hitam sektor RAM yang benar sesuai dengan indikasi kesalahan MemTest86 +?

28

MemTest86 + (versi yang disertakan dengan Ubuntu 13.04) mengatakan

Failing address: 002f796c48 -    759.5 MB

Apa yang harus saya tentukan dalam memmapparameter kernel untuk melewati area ini?

Saya sudah mencoba menjalankan memtester 770MBdan mengatakan semuanya baik-baik saja sehingga tidak terlihat bahwa indikasi MemTest berarti kesalahan pada MB ke-759.5 sejak awal.

Bagaimana menafsirkan indikasi MemTest ini untuk dikonfigurasi memmap?

Saya tidak punya uang untuk membeli RAM baru sekarang dan kesalahan tampaknya tunggal jadi saya harap saya bisa menimpanya.

Ivan
sumber
FWIW, kernel akan menandai halaman tertentu sebagai "dicadangkan" jika mendeteksi segmen yang buruk tetapi mampu memulihkan. Apakah output "bebas-m" menunjukkan kekuatan dua untuk total? Saya menyebutkan ini sebagai cara untuk menjelaskan mengapa memtester tidak bisa melihat RAM yang buruk tetapi memtest86 + bisa.
Bratchley
Tidak terlihat seperti kekuatan dua secara aktif: i.stack.imgur.com/l86L1.png
Ivan
Pada saat kesalahan terdeteksi (jika Anda bahkan memiliki ecc ram), umumnya sudah terlambat. Juga gratis -m tidak pernah melaporkan kekuatan dua bahkan sebagai bios dan kernel keduanya cadangan ram.
psusi
1
Saya bermimpi untuk membeli laptop ECC tetapi tidak pernah menemukan penawaran yang tersedia, sepertinya tidak ada.
Ivan
Sepertinya kernel juga mencetak ketika menemukan halaman yang buruk (baris 264-265).
Bratchley

Jawaban:

26

memmap

Ada tutorial ini berjudul: Bad Memory HowTo yang membahas penonaktifan memori melalui kernel menggunakan memmapargumen ke kernel. Menurut howto Anda memiliki 2 opsi ketika datang ke memmap:

  • Matikan semuanya setelah ingatan buruk - (mem=###M option)
  • Matikan hanya memori di sekitar memori buruk - (memmap=#M$###M option)

Dengan opsi pertama, jika memtest melaporkan bahwa ada memori buruk pada 600M maka Anda dapat menonaktifkan RAM dari titik itu sampai akhir RAM dengan ini:

 mem=595M

Jika ada RAM buruk di 802M dan 807M, Anda dapat menonaktifkan bagian 10M RAM mulai dari 800M seperti ini:

memmap=10M$800M

CATATAN: Ini akan membuat daftar hitam 10M setelah alamat dasar 800M. Anda harus menjalankan memtest86+setelahnya untuk mengonfirmasi bahwa argumen ini benar.

BadRAM

Ada patch yang tersedia untuk Ubuntu yang disebut BadRam. Ini dibahas dengan sangat baik di sini di posting ini berjudul: BadRAM di situs Komunitas Ubuntu.

Setelah menerapkan tambalan ke kernel menggunakan detail dari halaman itu, Anda membuat modifikasi pada pengaturan Grub2 Anda:

kutipan dari situs itu untuk Grub2

File konfigurasi GRUB2 di Natty memiliki baris untuk mengkonfigurasi pengecualian ram buruk kernel. Jadi, saya akan menganggap itu adalah cara yang lebih disukai untuk memetakan bagian memori yang menunjukkan kesalahan. Garis yang saya tetapkan adalah

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

Cara yang disarankan di setiap situs web yang dapat saya temukan adalah mengatur ini dengan menjalankan memtest86 dan membiarkannya menunjukkan kepada Anda pengaturan BadRAM. memtest86 memberi saya satu halaman barang yang harus saya masukkan. Saya bisa melihat bahwa semua alamat berada dalam satu blok 16K, jadi saya hanya ingin memetakan blok 16K itu dari tindakan. Inilah cara saya membuat entri yang benar.

Parameter pertama mudah. Itu adalah alamat dasar dari memori buruk. Dalam kasus saya, saya bisa melihat bahwa semua alamat buruk lebih besar dari 0x7DDF0000 dan kurang dari 0x7DDF4000. Jadi, saya mengambil awal blok 16K sebagai alamat awal saya.

Parameter kedua adalah topeng. Anda menempatkan 1s di mana rentang alamat yang Anda inginkan berbagi nilai yang sama dan 0s di mana itu akan bervariasi. Ini berarti Anda harus memilih rentang alamat Anda sehingga hanya bit pesanan rendah yang bervariasi. Melihat alamat saya, bagian pertama topeng itu mudah. Anda ingin memulai dengan 0xffff. Untuk nibble berikutnya, saya akan jelaskan dengan bitmap. Saya ingin berkisar dari 0000 hingga 0011. Jadi, topeng untuk badram adalah 1100 atau hex c. 3 camilan terakhir harus semua 0s di topeng, karena kami ingin seluruh rentang dipetakan. Jadi, kami mendapatkan hasil total 0xffffc000.

Setelah mengatur baris ini di / etc / default / grub, saya menjalankan sudo update-grub dan reboot dan memori buruk saya tidak lagi digunakan. Tidak diperlukan patch kernel untuk memetakan memori buruk menggunakan metode ini.

Tindak lanjut # 1

Mencari melalui halaman wikipedia untuk memtest86 + menyatakan sebagai berikut:

kutipan dari halaman wikipedia Memtest86

Mulai dari Memtest86 2.3 dan Memtest86 + 1.60, program ini dapat menampilkan daftar wilayah RAM yang buruk dalam format yang diharapkan oleh tambalan BadRAM untuk kernel Linux; menggunakan informasi ini, sistem Linux dapat diandalkan menggunakan modul RAM bahkan jika itu memiliki beberapa bit yang buruk. Grub2 dapat menyediakan informasi yang sama ini ke kernel yang belum ditambal, meniadakan kebutuhan untuk patch BadRAM.

Saya juga menemukan halaman Gentoo ini yang menentukan memmap=...penggunaan alamat hex, jadi Anda bisa menentukannya seperti ini:

memmap=5M$0x2f796c48

5M hanyalah tebakan, jelas Anda bisa menyesuaikannya lebih rendah atau lebih tinggi tergantung pada berapa banyak RAM di sekitar wilayah yang ingin / perlu Anda hilangkan.

Akhirnya Anda dapat menentukan ukuran dalam hex juga:

memmap=0x10000$0x2f796c48

Akan mengabaikan 64KB mulai dari alamat 0x2f796c48.

Referensi

slm
sumber
"800M hingga 804M" seharusnya "800M hingga 810M" Saya berasumsi ...
Hauke ​​Laging
Bisa jadi apa yang saya tulis juga OK, meskipun itu membuang lebih banyak memori daripada 4M antara 800M hingga 810M.
slm
1
1. Saya tahu tentang memmapopsi tetapi pertanyaannya lebih lanjut tentang bagaimana menafsirkan output memtest86 +. Saya telah memberikan contoh spesifik dari keluaran + memtest86 dan meminta bantuan dalam mengkonfigurasi memmap sesuai dalam kasus khusus ini. 2. "Anda harus menjalankan memtest86 + sesudahnya untuk mengonfirmasi bahwa argumen ini benar." - memtest86 + berjalan sebelum kernel OS jadi saya sangat ragu memmapopsi kernel Linux dapat mempengaruhinya.
Ivan
@Van, 1. Saya pikir itu jelas diberikan contoh yang saya sertakan, tetapi Anda harus mengatakan sesuatu seperti: memmap=5M$759Muntuk kasus khusus Anda, mengingat memtest86 + gagal pada 759.5MB. 2. Maksud saya, Anda harus memberikan memmap=...opsi untuk memtest86 + juga. Itu belum diuji / tidak dikonfirmasi oleh saya tetapi sesuatu yang mungkin dapat Anda lakukan dengan memtest86 +.
slm
1
Ok terima kasih. Saya tidak yakin apa artinya "002f796c48 - 759.5 MB" (mungkin itu bisa menjadi 759,5 MB setelah alamat 002f796c48 atau sesuatu seperti itu) dan saya tidak pernah curiga saya dapat mengirimkan parameter kernel Linux ke MemTest86 + (saya pikir itu sendiri bukan apa-apa untuk lakukan dengan Linux).
Ivan
14

Memtest86 + (Saya menggunakan 4,20) dapat menampilkan langsung format badram.

  1. Tekan 'c' untuk mencapai dialog konfigurasi dialog konfigurasi memtest

  2. Lalu '4' untuk "Mode Laporan Kesalahan"

    dialog mode laporan kesalahan memtest

  3. Kemudian '3' untuk "Pola BadRAM"

Output akan berubah dari daftar kegagalan pengujian individual ke serangkaian badram = baris, masing-masing berisi satu lagi bad sector baru. Karena garis menambahkan dan menyatukan segmen yang berdekatan Anda hanya dapat menjalankan tes tanpa kepala semalam dan menggunakan garis tercetak akhir (meskipun jika Anda memiliki dimm yang benar-benar buruk, format "5 MB sekitar titik ini" yang kurang akurat kemungkinan akan menjadi sedikit lebih pendek) ).

Hasil akhir:

Memtest86 + menampilkan output badram

skorgu
sumber
4
Sekarang jika saya tidak perlu menyalinnya dengan tangan dan alih-alih menyerahkannya ke GRUB tanpa mengetik ulang kesalahan, itu akan fantastis.
Ehtesh Choudhury
8
Apa yang saya lakukan adalah mengambil fotonya (telepon kamera), memuatnya ke dalam GIMP, => grayscale => invert => kontras / gamma lalu serahkan ke tesseract ${IMG} stdout.. lalu verifikasi dan koreksi garis sebelum memasukkan ke / etc / default / grub ... Mungkin butuh waktu selama memasukkan secara manual langsung ^^
eMPee584
3
Pasti lebih menyenangkan daripada melakukannya secara manual
domba terbang