আমি কীভাবে পুরো সিস্টেমের স্মৃতি ফেলে দিতে পারি?


9

ভার্চুয়ালবক্স শুরু করার পরে, কম্পিউটারটি আলস্য হয়ে যায় এবং তারপরে OOM এর কারণে সম্পূর্ণ স্তব্ধ হয়ে যায়। সাধারণত, কিছু জায়গা খালি করার জন্য ওওএম হত্যার প্রক্রিয়া শুরু করা উচিত, তবে এটি ঘটেনি (আমি এটি দ্বিতীয়বারের মতো অনুভব করেছি)।

আমার কাছে একটি পাঠ্য সম্পাদকের কিছু রক্ষিত গুরুত্বপূর্ণ কাজ ছিল, সুতরাং আমি বর্তমান কনসোলে সমস্ত প্রক্রিয়া মেরে SysRq+ র সাহায্যে সিস্টেম র‌্যামে এটি ফিরে পাওয়ার আশা করছিলাম K। মেশিনটি প্রশ্নযুক্ত 8 জিবিবি র‌্যামযুক্ত একটি ল্যাপটপ যা লিনাক্স x86_64 3.7.5 টার্গেট ডিস্ক হিসাবে এসএসডি সহ চলছে।

আমার প্রথম প্রচেষ্টা ছিল dd if=/dev/mem of=memory, কিন্তু এটি 1MiB ডেটা পড়ার পরে ব্যর্থ হয়েছিল। এরপরে, আমি চেষ্টা করেছি dd if=/dev/fmem of=memory bs=1M, তবে এটি 3010461696 বাইট (হুবহু 2871 এমআইবি) পড়ার পরে বন্ধ হয়ে গেছে। দেখার পরে /proc/mtrr(নীচে দেখানো হয়েছে), আমি যুক্ত করার চেষ্টা করার সিদ্ধান্ত নিয়েছি skip=4096। এটি চূড়ান্তভাবে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ती গতি কমিয়ে ফেলবে 3 (ফাইলের অন্তত শেষ 100 এমআইবিতে FFগুলি রয়েছে )

reg01: base=0x000000000 (    0MB), size= 2048MB, count=1: write-back
reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: write-back
reg05: base=0x23c000000 ( 9152MB), size=   64MB, count=1: uncachable
reg06: base=0x0b4000000 ( 2880MB), size=   64MB, count=1: uncachable
reg07: base=0x0b8000000 ( 2944MB), size=  128MB, count=1: uncachable

আমি পাঠ্য সম্পাদকটিতে কয়েক ঘন্টা খোলা তথ্যটি খুঁজে পেলাম না, তাই আমি বিশ্বাস করি যে একটি ডাম্প করার সময় আমি কিছু মেমরি এড়িয়ে গিয়েছি। সুতরাং, আমার লক্ষ্য (ইউজারস্পেস প্রোগ্রামগুলি থেকে ডেটা পুনরুদ্ধার) দেওয়া, সিস্টেমের মেমোরিটিকে কোনও ফাইলে ফেলে দেওয়ার সবচেয়ে কার্যকর পদ্ধতি কোনটি? এই জাতীয় ডাম্প করার সময় কয়েকটি বিষয় কী বিবেচনা করা উচিত?


আপনি কি খুব ভাল / কেআরএম চেষ্টা করেছেন? এটি খুব বেশি মূল্যবান নয় কারণ আপনি এটি অনুলিপি করার সময় এটি পরিবর্তিত হয়।
অট--

@ অট-- CONFIG_DEVKMEMঅক্ষম করা হয়েছে, উত্স কোডটি দেখে মনে হচ্ছে এটি সীমাহীন অ্যাক্সেসের অনুমতি দেয় তবে আমি এখনও নিশ্চিত নই যে এটি করার সর্বোত্তম উপায় (আইও মেম অ্যাক্সেস?)
লেকেনস্টেইন

2
সম্ভবত আপনি সম্পাদকের স্মৃতি পেয়েছেন তবে আপনি এটি সনাক্ত করতে পারেন নি। মেমরি ডাম্প থেকে ডেটা স্ট্রাকচার পুনর্গঠন করা কঠিন হতে পারে। আপনার প্রথম যে কাজটি করতে হবে তা হ'ল কার্নেল ডেটা স্ট্রাকচারগুলি থেকে মেমরি ম্যাপিংটির পুনর্গঠন করা (এটির জন্য সম্ভবত বিদ্যমান ফরেনসিক সরঞ্জাম রয়েছে) যাতে আপনার আগ্রহী প্রক্রিয়াটির ভার্চুয়াল মেমরি পেতে (যা সম্ভবত সম্ভবত শারীরিক স্মৃতিতে 4kb পৃষ্ঠাগুলি বিচ্ছিন্ন করে) তারপরে পাঠ্যটি একটানা ব্লব নাও হতে পারে এবং ইউসিএস 4 বা অন্যান্য উপস্থাপনা ব্যবহার করতে পারে এবং লাইন বা অন্যান্য ব্লকগুলি পৃথক অংশে সংরক্ষণ করতে পারে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

1
@ গিলিস +1, প্রক্রিয়াটি নিখুঁত হয়ে গেলে আমি কার্নেলটি টাস্ক বর্ণনাকারীদের মুক্ত করার প্রত্যাশা করব -> এর ঠিকানা স্পেস ম্যাপিংয়ের বিষয়টি ভুলে যাব। তথ্য উপস্থাপনা হিসাবে, এটি সহজেই গাছ হতে পারে (জেভিএম বরাদ্দ পর্যাপ্ত ভাগ্য সহ :))।
পিটার্ফ

সুতরাং আপনি কিছু গিগাবাইট ডেটা দিয়ে খনন করতে যাচ্ছেন এমন কিছু কেবি টেক্সট যা সেখানে নাও থাকতে পারে? সুই, খড়ের ছিটে দেখা। আপনি যে সময়টি ব্যয় করেছেন তাতে আপনি কেবল পাঠ্যটি টাইপ করতে পারবেন। যদি প্রথমদিকে সেখানে অনেক কিছু ছিল, তবে আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে আপনার পাঠ্য সম্পাদকটি পর্যায়ক্রমে একটি ব্যাকআপ সংরক্ষণ করার জন্য কনফিগার করা হয়েছে যাতে এটি ক্র্যাশ হলে আপনি বেশি হারাবেন না।
psusi

উত্তর:


4

এই প্রকল্পটি দেখুন: ফোরিয়ানা

ফোরিয়ানা হ'ল (ফোরেনসিক রাম চিত্র এএনএলাইজার)

ইনপুট: ডাম্প অফ (শারীরিক) র্যাম আউটপুট: বিভিন্ন তথ্য

সংস্করণ ১.০ i386 / x86_64 / আর্ম লিনাক্স / বিএসডি কার্নেলগুলির মেমরি ডাম্প থেকে প্রক্রিয়া এবং মডিউলগুলি তালিকাভুক্ত করতে পারে এবং ডাম্পগুলি থেকে লিনিয়ার মেমরি পড়ার জন্য বিকল্প সরবরাহ করতে পারে।

এখানে একটি কার্নেল মডিউল রয়েছে:

Fmem হ'ল কার্নেল ড্রাইভার, যা / dev / fmem ডিভাইস তৈরি করে। / dev / fmem একইভাবে আচরণ করে / dev / মেম (শারীরিক স্মৃতিতে সরাসরি অ্যাক্সেস), তবে / দেব / মেমের সীমা থাকে না। / Dev / fmem এর মাধ্যমে পুরো শারীরিক মেমরি ডাম্প করা সম্ভব।

আমি এটি ব্যবহার করেছি, সংকলন বেশ সহজ।


প্রশ্নকারী চেষ্টা করেছিল /dev/fmem
টুবু

3

আপনি হয়ত ddrescueবা অনুরূপ প্রোগ্রামটি ব্যবহার করতে চাইতে পারেন , যা অ্যাক্সেসযোগ্য ডেটা এড়িয়ে যেতে পারে। dd conv=noerrorখুব সহায়ক হতে পারে। সুপারিশারে এই প্রশ্নটি পরীক্ষা করে দেখুন

আরও গুরুত্বপূর্ণ বিষয় যদিও, আপনি যদি নিজেকে ওওএমের পরিস্থিতিতে ফেলেন তবে অনুরোধের অ্যাপ্লিকেশন ব্যতীত অন্য কোনও পৃষ্ঠা থেকে কার্নেল পৃষ্ঠাগুলি অদলবদল করার কারণে কার্নেলটি খুব কমই হতে পারে। অতএব আপনি যদি নিজের ডেটা চান, তবে পরিবর্তে অদলবদল পরীক্ষা করে দেখুন /dev/mem- সম্ভাবনা আছে এটি সেখানেই থাকবে। একইভাবে, যদি ওওএম হত্যাকারী লাথি না খায় এবং আপনি নিজে হাতে প্রক্রিয়াগুলি মেরে ফেলেন, উদাহরণস্বরূপ আপনার সম্পাদক প্রথম মারা গেলে মেমরির ক্ষুধার্ত প্রক্রিয়াটি এখনও সেই পৃষ্ঠাগুলি ধরতে কিছুটা সময় পেতে পারে।

মন্তব্যে গিলেজ দ্বারা উল্লেখ করা হয়েছে, তথ্য সহজেই কিছু বিশেষ কাঠামো হতে পারে যাতে করে আপনি সেগুলিকে সহজেই এমনকি যদি আপনি নিহত প্রক্রিয়া এর অ্যাড্রেস স্পেস ম্যাপিং পুনর্গঠন পরিচালনা খুঁজে পেতে সক্ষম হবেন না এবং প্রয়োজনীয় সব অনুসন্ধান করার জন্য যথেষ্ট ভাগ্য আছে পৃষ্ঠাগুলি এখনও অক্ষত


1
আমি দেখেছি যে এসইউ এর উত্তর আগেও পেয়ে গিয়েছিল, আমি এইভাবেই ফেললাম। ddrescue256 পৃষ্ঠাগুলি (1 মাইবি) একটি হার্ড-কোডেড সীমা হিসাবে যেহেতু আমাকে সাহায্য করবে না। আমি কোনও ওওএম অবস্থায় যাওয়ার আশা করব, তবে ওওএম হত্যাকারী লাথি মারেনি ( পেস্টবিন . com / ডিভিওয়াইটিসিআরকে )। এক সপ্তাহ আগে, আমার একই সমস্যা ছিল (এখনও লিনাক্স ৩..5.৫, আমি রিবুট করিনি, কেবল রামে স্থগিত করেছি)। আমার একটি এসএসডি থাকায় কোনও অদলবদল / পার্টিশন নেই। (অদলবদল = 60 (ডিফল্ট))।
লেকেনস্টেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.