MemTest86 + hata göstergesine göre doğru bir hatalı RAM sektörünü nasıl kara listeye alabilirim?


28

MemTest86 + (Ubuntu 13.04 ile birlikte gelen sürüm)

Failing address: 002f796c48 -    759.5 MB

memmapBu alanı atlamak için çekirdek parametresinde ne belirtmeliyim ?

memtester 770MBKoşmayı denedim ve her şeyin yolunda olduğunu söylüyor, MemTest'in göstergelerinin baştan itibaren 759.5 MB'de bir hata olduğu anlamına gelmiyor gibi görünüyor.

Yapılandırmak için bu MemTest göstergesini nasıl yorumlayabilirim memmap?

Şimdi yeni RAM almak için hiç param yok ve hata bekar görünüyor, bu yüzden sadece geçersiz kılabilirim.


FWIW, çekirdek, bozuk bir sayfa algıladığında ancak kurtarmayı başarırsa, belirli sayfaları "ayrılmış" olarak işaretler. "Free -m" çıktısı, toplamlar için ikisinin gücünü gösteriyor mu? Memtester'ın neden kötü RAM'i göremediğini, ancak memtest86 + 'nın görebildiğini açıklamanın bir yolu olarak bahsetmiştim.
Bratchley

Aslında ikisinin güçleri gibi görünmüyor: i.stack.imgur.com/l86L1.png
Ivan

Bir hata tespit edildiğinde (ecc ram'iniz varsa), genellikle çok geç olur. Ayrıca, free -m, her ikisinin de çiftinin gücünü asla bildirmez, çünkü hem bios hem de çekirdeği bir miktar ram ayırır.
psusi

1
ECC dizüstü bilgisayar almayı hayal ediyorum ama hiçbir teklif bulamadım, mevcut değil gibi görünüyor.
Ivan

Çekirdeğin kötü bir sayfa bulduğunda da basıldığı gibi görünüyor (satır 264-265).
Bratchley

Yanıtlar:


26

memmap

Bu öğretici başlık: Bad Memory HowTo , çekirdeğin memmapargümanını kullanarak çekirdeği kullanarak belleği devre dışı bırakmayı tartışıyor . Konuya göre nasıl 2 seçeneğiniz var memmap:

  • Kötü hafızadan sonra her şeyi kapat - (mem=###M option)
  • Yalnızca hatalı belleğin etrafındaki belleği kapat - (memmap=#M$###M option)

İlk seçenekle, memtest 600M'de kötü bellek olduğunu bildirirse, RAM’i bu noktadan RAM’in sonuna kadar devre dışı bırakabilirsiniz:

 mem=595M

802M ve 807M'de kötü RAM varsa, 800M'den başlayarak 10M'lik RAM bölümünü devre dışı bırakabilirsiniz:

memmap=10M$800M

NOT: Bu, 800M temel adresinden sonra 10M'yi kara listeye alacaktır. Kaçmalısın memtest86+bu argüman doğru olduğunu teyit etmek için sonradan.

BadRAM

Ubuntu için BadRam adında bir yama var. Burada , Ubuntu Topluluğu sitesinde BadRAM başlıklı bu yazıda çok iyi ele alınmıştır .

Bu sayfadaki ayrıntıları kullanarak yamayı çekirdeğe uyguladıktan sonra Grub2 kurulumunuzda değişiklikler yapın:

Grub2 için bu siteden alıntı

Natty'deki GRUB2 config dosyasında çekirdek hatalı ram dışlamaları yapılandırmak için bir satır bulunur. Dolayısıyla, bunun hatayı gösteren bir hafıza bölümünü çıkarmanın tercih edilen bir yolu olduğunu varsayacağım. Ayarladığım satır

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

Bulabildiğim her web sitesinde önerilen yol, bunu memtest86 çalıştırmak ve size BadRAM ayarlarını göstermesini sağlamaktı. memtest86 bana girmek zorunda kalacağım bir sayfa verdi. Tüm adreslerin bir 16K'lık bir blokta olduğunu görebiliyordum, o yüzden sadece bu 16K'lık bloğu etkisiz hale getirmek istedim. İşte doğru girişi nasıl oluşturduğum.

İlk parametre kolaydır. Kötü hafızanın temel adresi budur. Benim durumumda, tüm kötü adreslerin 0x7DDF0000'den büyük ve 0x7DDF4000'den küçük olduğunu görebiliyordum. Böylece 16K bloğunun başlangıcını başlangıç ​​adresim olarak aldım.

İkinci parametre bir maskedir. İstediğiniz adres aralığının aynı değerleri paylaştığı 1s, değişkenlerin değişeceği yere 0s koyarsınız. Bu, adres aralığınızı yalnızca düşük sıra bitlerinin değişebileceği şekilde seçmeniz gerektiği anlamına gelir. Adresime bakarken, maskenin ilk kısmı kolaydır. 0xffff ile başlamak istiyorsunuz. Bir sonraki göz için bit haritalarla açıklayacağım. 0000 ile 0011 arasında değişmek istiyorum. Bu nedenle, badram için maske 1100 veya altıgen c olacaktır. Tüm aralığın eşlenmesini istediğimizden, son 3 nibet maskede 0 olmalı. Böylece toplam 0xffffc000 sonucunu elde ederiz.

Bu satırı / etc / default / grub içinde ayarladıktan sonra sudo güncelleme grubunu çalıştırdım ve yeniden başlattım ve artık kötü hafızam kullanılmıyordu. Bu yöntemi kullanarak hatalı belleği bulmak için çekirdek eklerine gerek yoktur.

Takip # 1

Memtest86 + için wikipedia sayfasını inceleyince şöyle belirtilir:

Memtest86 alıntıdan wikipedia sayfası

Memtest86 2.3 ve Memtest86 + 1.60'dan başlayarak, program, Linux çekirdeği için BadRAM yamasının beklediği biçimde kötü RAM bölgelerinin bir listesini çıkarabilir; Bu bilgiyi kullanarak, bir Linux sistemi bir kaç kötü bitli olsa bile güvenilir bir RAM modülünü kullanabilir. Grub2, aynı bilgiyi yamalı bir çekirdeğe sağlayabilir ve BadRAM yamasına ihtiyaç duymaz.

Ayrıca bu rastladım Gentoo sayfa belirtilen memmap=...bunu böyle belirtmek böylece, bir onaltılık adresi kullanarak:

memmap=5M$0x2f796c48

5M sadece bir tahmindir, açıkçası kullanmak istediğiniz / ihtiyaç duymadığınız bölgedeki RAM miktarına bağlı olarak daha düşük veya yüksek ayarlamalar yapabilirsiniz.

Son olarak, boyutu hex olarak da belirtebilirsiniz:

memmap=0x10000$0x2f796c48

64KB'nin 0x2f796c48 adresinden başlayan bilgisini görmezden gelirdi.

Referanslar


"800M - 804M" "sanırım" 800M - 810M "
olmalıydı

Olabilir ama yazdıklarım da sorun değil, 800M ile 810M arasındaki 4M'den daha fazla bellek atmasına rağmen.
slm

1
1. memmapSeçenek hakkında bilgim var ama soru memtest86 + çıktısını nasıl yorumlayacağınızla ilgili. Memtest86 + çıkışının belirli bir örneğini verdim ve bu özel durumda memmap buna göre yapılandırma konusunda yardım istiyorum . 2. "Argümanın doğru olduğunu onaylamak için daha sonra memtest86 + programını çalıştırmalısınız." - memtest86 + bir işletim sistemi çekirdeğinden önce çalışır, bu nedenle memmapLinux çekirdeği seçeneğinin etkileyebileceğinden şüpheliyim .
Ivan,

@Ivan, 1. İçinde bulunduğum örnekler göz önüne alındığında bunun açık olduğunu düşündüm, ancak şöyle bir şey söylemeniz gerekir: memmap=5M$759Mkendi durumunuz için verilen memtest86 + 759.5 MB'de başarısız oluyor. 2. memmap=...Seçeneği memtest86 + 'ya da iletmelisiniz. Bu benim tarafımdan denenmemiş / onaylanmamış, ancak memtest86 + ile yapabileceğiniz bir şey.
slm

1
Tamam teşekkürler. "002f796c48 - 759.5 MB" nin ne anlama geldiğinden emin değildim (belki 002f796c48 adresinden sonra 759.5 megs olabilir veya bunun gibi bir şey olabilir) ve Linux çekirdeği parametrelerini MemTest86 + 'ya aktaracağımdan hiç şüphem yoktu. Linux ile yapın).
Ivan,

14

Memtest86 + (4.20 kullandım) doğrudan bir badram formatı oluşturabilir.

  1. Yapılandırma diyaloğuna ulaşmak için 'c' ye basın memtest yapılandırma diyaloğu

  2. Ardından "Hata Rapor Modu" için '4'

    en kısa hata raporu modu diyalogu

  3. Ardından "BadRAM Patterns" için '3'

Çıktı, bireysel test başarısızlıkları listesinden, her biri bir tane daha yeni kötü sektör içeren bir dizi badram = satırına değişecektir. Satırlar bitişik bölümleri eklediği ve birleştirdiği için testi sadece gece boyunca başsız çalıştırabilir ve son basılan satırı kullanabilirsiniz (eğer gerçekten kötü bir kısma varsa, daha az doğru "5 nokta bu noktada çözülür" formatı biraz daha kısa olacaktır. ).

Son sonuç:

Memtest86 + badram çıktısını gösteriyor


4
Şimdi, bunu el ile kopyalamak zorunda kalmazdım ve bunun yerine hataları yeniden yazmadan GRUB'a teslim edersem, bu harika olurdu.
Ehtesh Choudhury

8
Yaptığım şey, => gri tonlama => invert => kontrast / gama o zaman için el, bunun (kamera telefonu) bir fotoğrafını çekmek GIMP içine o kadar yük olduğu tesseract ${IMG} stdout.. sonra doğrulandı ve / etc / default içine takmadan önce çizgiyi düzeltilmiş / grub ... Muhtemelen manuel olarak hemen girdikten sonra ^^
eMPee584

3
Kesinlikle elle yapmaktan daha eğlenceli
uçan koyun
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.