MemTest86 + एरर इंडिकेशन के अनुसार सही बैड रैम सेक्टर को ब्लैकलिस्ट कैसे करें?


28

MemTest86 + (Ubuntu 13.04 के साथ शामिल संस्करण) का कहना है

Failing address: 002f796c48 -    759.5 MB

memmapइस क्षेत्र को बायपास करने के लिए मुझे कर्नेल पैरामीटर में क्या निर्दिष्ट करना चाहिए ?

मैंने दौड़ने की कोशिश की है memtester 770MBऔर यह कहता है कि सबकुछ ठीक है, इसलिए यह नहीं लगता है कि मेमटेस्ट के संकेत का मतलब शुरू से 759.5 वें एमबी में एक त्रुटि है।

कॉन्फ़िगर करने के लिए इस मेमेस्ट इंडिकेशन की व्याख्या कैसे करें memmap?

मेरे पास अब नई रैम खरीदने के लिए कोई पैसा नहीं है और त्रुटि एकल प्रतीत होती है इसलिए मुझे उम्मीद है कि मैं इसे ओवरराइड कर सकता हूं।


FWIW, कर्नेल कुछ पृष्ठों को "आरक्षित" होने के रूप में चिह्नित करेगा यदि यह एक बुरे खंड का पता लगाता है लेकिन पुनर्प्राप्त करने में सक्षम है। क्या "फ्री-एम" का आउटपुट योग के लिए दो की शक्तियों को दर्शाता है? मैं इसका उल्लेख यह समझाने के तरीके के रूप में करता हूं कि क्यों मेमिस्टर खराब रैम को नहीं देख सकता है, लेकिन memtest86 + सकते हैं।
ब्राचली


तब तक एक त्रुटि का पता चला है (यदि आपके पास भी ecc RAM है), तो आमतौर पर बहुत देर हो चुकी होती है। इसके अलावा फ्री-एम कभी भी दो की एक शक्ति की रिपोर्ट नहीं करता है क्योंकि बायोस और कर्नेल दोनों कुछ राम को आरक्षित करते हैं।
Psusi

1
मैं एक ECC लैपटॉप खरीदने का सपना देखता हूं, लेकिन कभी भी कोई ऑफर नहीं मिला, ऐसा लगता है कि वे मौजूद नहीं हैं।
इवान

ऐसा लगता है कि कर्नेल भी तब खराब होता है जब उसे एक खराब पृष्ठ (लाइन 264-265) मिलता है।
ब्राचली

जवाबों:


26

memmap

इस ट्यूटोरियल का शीर्षक है: Bad Memory HowTo जिसमें कर्नेल के memmapतर्क का उपयोग करके कर्नेल के माध्यम से मेमोरी को अक्षम करने की चर्चा की गई है । जब यह आता है तो हाउटो के अनुसार आपके पास 2 विकल्प हैं memmap:

  • खराब मेमोरी के बाद सब कुछ बंद करें - (mem=###M option)
  • खराब मेमोरी के आसपास की मेमोरी को बंद करें - (memmap=#M$###M option)

पहले विकल्प के साथ, यदि मेमोटेस्ट रिपोर्ट करता है कि 600M पर खराब मेमोरी है, तो आप रैम को उस बिंदु से अक्षम कर सकते हैं जब तक कि इसके साथ रैम का अंत नहीं हो जाता:

 mem=595M

अगर 802M और 807M में खराब रैम है, तो आप इस तरह से 800M से शुरू होने वाले RAM के 10M सेक्शन को डिसेबल कर सकते हैं:

memmap=10M$800M

नोट: यह 800M आधार पते के बाद 10M को ब्लैकलिस्ट कर देगा। memtest86+इस तर्क के सही होने की पुष्टि करने के लिए आपको बाद में चलना चाहिए ।

BadRAM

उबंटू के लिए एक पैच उपलब्ध है जिसे बद्रम कहा जाता है। यह इस पोस्ट में बहुत अच्छी तरह से कवर किया गया है जिसका शीर्षक है: उबंटू सामुदायिक साइट पर बद्रम

उस पृष्ठ से विवरण का उपयोग करके कर्नेल पर पैच लगाने के बाद आप अपने Grub2 सेटअप में संशोधन करते हैं:

Grub2 के लिए उस साइट से अंश

नेट्टी में GRUB2 कॉन्फिग फ़ाइल में कर्नेल खराब राम बहिष्करण को कॉन्फ़िगर करने के लिए एक पंक्ति है। इसलिए, मैं मानूंगा कि मेमोरी के एक हिस्से को मैप करने का पसंदीदा तरीका है जो त्रुटियों को दिखा रहा है। मैंने जो लाइन लगाई थी

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

प्रत्येक वेब साइट पर सुझाया गया तरीका मुझे यह निर्धारित करना था कि यह memtest86 चलाना है और यह आपको BadRAM सेटिंग्स दिखाता है। memtest86 ने मुझे एक सामान दिया, जिसमें मुझे प्रवेश करना था। मैं देख सकता था कि सभी पते एक 16K ब्लॉक में थे, इसलिए मैं सिर्फ उस 16K ब्लॉक को कार्रवाई से बाहर करना चाहता था। यहां बताया गया है कि मैंने सही प्रविष्टि कैसे उत्पन्न की।

पहला पैरामीटर आसान है। यह खराब मेमोरी का आधार पता है। मेरे मामले में, मैं देख सकता था कि सभी बुरे पते 0x7DDF0000 से अधिक और 0x7DDF4000 से कम थे। इसलिए, मैंने अपने शुरुआती पते के रूप में 16K ब्लॉक की शुरुआत की।

दूसरा पैरामीटर एक मुखौटा है। आप 1s डालते हैं जहां पता सीमा आप चाहते हैं वही मान शेयर और 0s जहां यह अलग-अलग होगा। इसका मतलब है कि आपको अपनी पता सीमा चुनने की आवश्यकता है जैसे कि केवल कम ऑर्डर बिट्स भिन्न होते हैं। मेरे पते को देखते हुए, मुखौटा का पहला भाग आसान है। आप 0xffff से शुरू करना चाहते हैं। अगले कुतरने के लिए, मैं बिट मैप्स के साथ समझाऊंगा। मैं 0000 से 0011 तक की सीमा चाहता हूं। इसलिए, बद्रम के लिए मुखौटा 1100 या एक हेक्स सी होगा। आखिरी 3 निबल्स को मास्क में सभी 0s होना चाहिए, क्योंकि हम चाहते हैं कि पूरी रेंज को मैप किया जाए। तो, हमें 0xffffc000 का कुल परिणाम मिलता है।

इस लाइन को / etc / default / grub में सेट करने के बाद, मैंने sudo अपडेट-ग्रब चलाया और रिबूट किया और मेरी खराब मेमोरी अब उपयोग नहीं की जा रही थी। इस पद्धति का उपयोग करके खराब मेमोरी को मैप करने के लिए किसी कर्नेल पैच की आवश्यकता नहीं होती है।

# 1 का पालन करें

Memtest86 + के लिए विकिपीडिया पृष्ठ के माध्यम से खोज करना इस प्रकार है:

Memtest86 विकिपीडिया पृष्ठ से अंश

Memtest86 2.3 और Memtest86 + 1.60 से शुरू, प्रोग्राम लिनक्स कर्नेल के लिए BadRAM पैच द्वारा अपेक्षित प्रारूप में खराब रैम क्षेत्रों की एक सूची का उत्पादन कर सकता है; इस जानकारी का उपयोग करते हुए, एक लिनक्स सिस्टम मज़बूती से एक रैम मॉड्यूल का उपयोग कर सकता है, भले ही इसमें कुछ खराब बिट्स हों। ग्रब 2 एक अनपेक्षित कर्नेल के लिए इसी जानकारी की आपूर्ति करने में सक्षम है, जो कि बदराम पैच की आवश्यकता को नकारता है।

इसके अलावा, मैं इस Gentoo पृष्ठ पर आया था जिसमें memmap=...एक हेक्स पते का उपयोग किया गया था, इसलिए आप इसे इस तरह निर्दिष्ट कर सकते हैं:

memmap=5M$0x2f796c48

5M सिर्फ एक अनुमान है, जाहिर है आप इसे कम या अधिक समायोजित कर सकते हैं कि आप उस क्षेत्र के आस-पास कितना रैम चाहते हैं / जिसे छोड़ना चाहिए।

अंत में आप हेक्स में भी आकार निर्दिष्ट कर सकते हैं:

memmap=0x10000$0x2f796c48

पता 0x2f796c48 पर 64KB की शुरुआत को अनदेखा करेगा।

संदर्भ


"800M से 804M" माना जाता है कि "800M से 810M" मेरा मानना ​​है ...
हौके लाॅगिंग

यह हो सकता है, लेकिन जो मैंने लिखा वह ठीक भी है, भले ही यह 4M से 800M से 810M के बीच अधिक मेमोरी फेंक रहा हो।
SLM

1
1. मैं memmapविकल्प के बारे में जानता हूं, लेकिन सवाल यह है कि मेमस्टी86 + आउटपुट की व्याख्या कैसे करें। मैंने memtest86 + आउटपुट का एक विशिष्ट उदाहरण दिया है और इस विशेष मामले में memmap तदनुसार कॉन्फ़िगर करने में मदद मांगता हूं । 2. "आपको यह तर्क सही होने की पुष्टि करने के लिए memtest86 + बाद में चलाना चाहिए।" - memtest86 + OS कर्नेल से पहले चलता है इसलिए मुझे गंभीरता से संदेह है कि memmapलिनक्स कर्नेल विकल्प इसे प्रभावित कर सकता है।
इवान

@ इवान, 1. मुझे लगा कि यह स्पष्ट है कि मैंने जो उदाहरण दिए हैं, लेकिन आपको ऐसा कुछ कहना होगा: memmap=5M$759Mआपके विशेष मामले के लिए, दिया गया memtest86 + 759.5MB पर विफल हो रहा है। 2. मेरा मतलब था कि आपको memmap=...मेमरीस्टोरी + साथ ही विकल्प पास करना चाहिए । यह मेरे द्वारा अप्रमाणित / अपुष्ट था लेकिन ऐसा कुछ जिसे आप memtest86 + के साथ करने में सक्षम हो सकते हैं।
SLM

1
ठीक है धन्यवाद। मुझे यकीन नहीं था कि "002f796c48 - 759.5 MB" का क्या अर्थ है (शायद यह 002f796c48 पते या इस तरह के कुछ के बाद 759.5 megs हो सकता है) और मुझे कभी संदेह नहीं हुआ कि मैं लिनक्स कर्नेल मापदंडों को MEMTest86 + पास कर सकता हूं (मुझे लगा कि यह स्वयं कुछ भी नहीं था। लिनक्स के साथ करते हैं)।
इवान

14

Memtest86 + (मैंने 4.20 का इस्तेमाल किया) सीधे एक बैडम फॉर्मेट को आउटपुट कर सकता है।

  1. कॉन्फ़िगरेशन संवाद तक पहुंचने के लिए 'c' दबाएं यादगार विन्यास संवाद

  2. फिर "4" के लिए "त्रुटि रिपोर्ट मोड"

    memtest त्रुटि रिपोर्ट मोड संवाद

  3. फिर "बदराम पैटर्न" के लिए '3'

आउटपुट व्यक्तिगत परीक्षण विफलताओं की सूची से बदराम = लाइनों की श्रृंखला में बदल जाएगा, जिनमें से प्रत्येक में एक और नया बुरा क्षेत्र होगा। क्योंकि लाइनें संलग्न और समीपवर्ती खंडों को आप केवल रात भर में टेस्ट हेडलेस चला सकते हैं और अंतिम मुद्रित लाइन का उपयोग कर सकते हैं (हालांकि यदि आपके पास वास्तव में खराब डिम कम-सटीक "इस बिंदु के आसपास 5 megs" प्रारूप है, तो संभवतः थोड़ा कम होगा )।

अंतिम परिणाम:

Memtest86 + बद्रम आउटपुट दिखा रहा है


4
अब अगर मुझे उस कॉपी को हाथ से नहीं देखना है और इसके बजाय GRUB को रीटिपिंग त्रुटियों के बिना सौंपना है, तो यह शानदार होगा।
एहतेश चौधरी

8
मैंने जो भी किया, उसका फोटो (कैमरा फोन) लिया, उसे GIMP में लोड किया, => ग्रेस्केल => इनवर्ट => कॉन्ट्रास्ट / गामा फिर उसे हाथ tesseract ${IMG} stdoutलगाया .. फिर / etc / default में डालने से पहले लाइन को सत्यापित और ठीक किया। / ग्रब ... संभवत: तब तक लिया जाता है जब तक इसे मैन्युअल रूप से सीधे प्रवेश करना ^ ^
eMPee584

3
निश्चित रूप से हालांकि यह मैन्युअल रूप से करने से अधिक मजेदार है
भेड़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.