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 की शुरुआत को अनदेखा करेगा।
संदर्भ