memmap
এই টিউটোরিয়ালটির শিরোনাম রয়েছে: ব্যাড মেমোরি হাওটো যা কার্নেলের মাধ্যমে memmap
আর্গুমেন্ট ব্যবহার করে কার্নেলের মাধ্যমে মেমরি অক্ষম করার বিষয়ে আলোচনা করে । আপনার কাছে কীভাবে 2 বিকল্প রয়েছে তা অনুসারে memmap
:
- খারাপ স্মৃতির পরে সবকিছু বন্ধ করুন -
(mem=###M option)
- খারাপ স্মৃতির চারদিকে কেবল স্মৃতিটি বন্ধ করুন -
(memmap=#M$###M option)
প্রথম বিকল্পের সাহায্যে, যদি স্মৃতিশক্তি 600 মিটারে খারাপ মেমরির প্রতিবেদন করে তবে আপনি সেই বিন্দু থেকে র্যামের শেষ অবধি এই র্যামটি অক্ষম করতে পারবেন:
mem=595M
যদি ৮০২ এম এবং ৮০7 এম-তে খারাপ র্যাম থাকে তবে আপনি 800 এম থেকে শুরু করে র্যামের একটি 10 এম বিভাগটি অক্ষম করতে পারেন:
memmap=10M$800M
দ্রষ্টব্য: এটি 800 এম বেস ঠিকানার পরে 10 এম ব্ল্যাকলিস্ট করবে। memtest86+
এই যুক্তিটি সঠিক কিনা তা নিশ্চিত করার জন্য আপনার পরে চালানো উচিত ।
BadRAM
উবুন্টুর জন্য ব্যাড্রাম নামে একটি প্যাচ উপলব্ধ। এটি উবুন্টু সম্প্রদায়ের সাইটে BadRAM শিরোনামের এই পোস্টে এটি খুব ভালভাবে আচ্ছাদিত হয়েছে ।
সেই পৃষ্ঠা থেকে বিশদটি ব্যবহার করে কার্নেলে প্যাচ প্রয়োগ করার পরে আপনি আপনার গ্রুব 2 সেটআপে পরিবর্তন আনছেন:
গ্রুব 2 এর জন্য সেই সাইট থেকে উদ্ধৃত অংশ
ন্যাটি-তে GRUB2 কনফিগারেশন ফাইলটিতে কার্নেল খারাপ র্যাম ব্যতিক্রমগুলি কনফিগার করার জন্য একটি লাইন রয়েছে। সুতরাং, আমি ধরে নেব এটি মেমরির একটি অংশ ম্যাপিংয়ের পছন্দসই উপায় যা ত্রুটিগুলি দেখায়। আমি যে রেখাটি সেট করেছিলাম তা ছিল
GRUB_BADRAM = "0x7DDF0000,0xffffc000"
আমি যে ওয়েব সাইটে সন্ধান করতে পারি তার প্রস্তাবিত উপায় হ'ল এটি সেট করা ছিল মেমেস্টেস্ট। Run চালানো এবং এটি আপনাকে ব্যাড্রামের সেটিংস প্রদর্শন করতে দেয়। memtest86 আমাকে প্রবেশ করতে হবে এমন জিনিসপত্রের একটি পৃষ্ঠা দিয়েছে। আমি দেখতে পেলাম যে সমস্ত ঠিকানাগুলি একটি 16 কে ব্লকে ছিল, তাই আমি কেবল 16 কে ব্লকটি কর্মের বাইরে ম্যাপ করতে চেয়েছি। এখানে আমি সঠিক এন্ট্রিটি তৈরি করেছি generated
প্রথম প্যারামিটারটি সহজ। এটিই খারাপ স্মৃতির বেস ঠিকানা। আমার ক্ষেত্রে, আমি দেখতে পেতাম যে সমস্ত খারাপ ঠিকানা 0x7DDF0000 এর চেয়ে বেশি এবং 0x7DDF4000 এর চেয়ে কম ছিল। সুতরাং, আমি 16K ব্লকের শুরুটিকে আমার সূচনা ঠিকানা হিসাবে নিয়েছিলাম।
দ্বিতীয় প্যারামিটারটি একটি মুখোশ। আপনি যে ঠিকানা ঠিকানা ব্যাপ্তি করতে চান সেখানে একই মান এবং 0 টি যেখানে এটি পরিবর্তিত হবে সেগুলি রেখেছেন। এর অর্থ আপনার ঠিকানার পরিসরটি বেছে নেওয়া দরকার যে কেবল নিম্ন আদেশের বিটগুলি পৃথক হয়। আমার ঠিকানাটির দিকে তাকানো, মুখোশের প্রথম অংশটি সহজ। আপনি 0xffff দিয়ে শুরু করতে চান। পরবর্তী স্তন্যপায়ী জন্য, আমি বিট মানচিত্র দিয়ে ব্যাখ্যা করব। আমি 0000 থেকে 0011 পর্যন্ত বিস্তৃত করতে চাই So সুতরাং, বদরামের মুখোশটি 1100 বা একটি হেক্স সি হবে। আমরা শেষ পরিসীমাটি ম্যাপড আউট করতে চাইলে সর্বশেষ তিনটি নীবকগুলি মাস্কের সমস্ত 0 টি হওয়া দরকার। সুতরাং, আমরা 0xffffc000 এর মোট ফলাফল পেয়েছি।
/ ইত্যাদি / ডিফল্ট / গ্রুবে এই লাইনটি সেট করার পরে আমি সুডো আপডেট-গ্রাব চালিয়ে আবার রিবুট করেছি এবং আমার খারাপ স্মৃতি আর ব্যবহার করা হচ্ছে না। এই পদ্ধতিটি ব্যবহার করে খারাপ মেমরির মানচিত্র তৈরি করতে কোনও কার্নেল প্যাচগুলির প্রয়োজন নেই।
# 1 অনুসরণ করুন
স্মরণার্থী + এর জন্য উইকিপিডিয়া পৃষ্ঠাটি অনুসন্ধান করা + এটি নীচে জানিয়েছে:
মেমস্টেস্ট 86 w উইকিপিডিয়া পৃষ্ঠা থেকে উদ্ধৃত অংশ
মেমটেস্ট 86.৩.৩ এবং মেমস্টেস্ট 86 + ১.60০ থেকে শুরু করে প্রোগ্রামটি লিনাক্স কার্নেলের জন্য ব্যাড্রাম প্যাচ দ্বারা প্রত্যাশিত বিন্যাসে খারাপ র্যাম অঞ্চলগুলির একটি তালিকা আউটপুট করতে পারে; এই তথ্য ব্যবহার করে, একটি লিনাক্স সিস্টেম কিছুটা খারাপ বিট থাকলেও নির্ভরযোগ্যভাবে একটি র্যাম মডিউল ব্যবহার করতে পারে। Badubam প্যাচের প্রয়োজনীয়তা উপেক্ষা করে গ্রুব 2 কোনও আনপ্যাচড কার্নেলে এই একই তথ্য সরবরাহ করতে সক্ষম।
এছাড়াও আমি এই জেন্টো পৃষ্ঠা জুড়ে এসেছি যা memmap=...
একটি হেক্স ঠিকানা ব্যবহার করে নির্দিষ্ট করেছে , যাতে আপনি এটি এটি নির্দিষ্ট করতে পারেন:
memmap=5M$0x2f796c48
5 এম হ'ল একটি অনুমান, স্পষ্টতই আপনি যে অঞ্চলটি চান আপনি যে পরিমাণ র্যামটি বাদ দিতে চান তার উপর নির্ভর করে আপনি এটি কম বা উচ্চতর স্থির করতে পারেন।
অবশেষে আপনি হেক্সে আকারও নির্দিষ্ট করতে পারবেন:
memmap=0x10000$0x2f796c48
0x2f796c48 ঠিকানায় 64KB এর সূচনা উপেক্ষা করবেন।
তথ্যসূত্র