/ দেব / মেম কি?


40

সম্ভবত এটি কোনওভাবে স্মৃতির সাথে সম্পর্কিত? কি হবে

sudo cat /dev/urandom > /dev/mem

না? সমস্ত র‌্যাম ট্র্যাশ করবেন? সমস্ত নন-কার্নেল ভার্চুয়াল মেমরি? উপরের কেউই না?


2
আরও দেখুন:dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
ব্যবহারকারী 3490

6
মেমরি সুরক্ষা কি র‌্যামের সেই অঞ্চলে নির্ধারিত একটিকে বাদ দিয়ে সমস্ত প্রক্রিয়াটির জন্য শারীরিক র‍্যামের অ্যাক্সেস বন্ধ করে দেওয়া উচিত নয়? অথবা সুডো সেই সুরক্ষাটিকে ওভাররাইড করে?
ম্যাথু লক

উত্তর:


32

এটি সিস্টেমের শারীরিক স্মৃতিতে অ্যাক্সেস সরবরাহ করে।

mem(4)Man পৃষ্ঠা তার সম্পর্কে আরো ব্যাখ্যা করে /dev/memহয়।

হ্যাঁ - এটি সমস্ত ধরণের সমস্যার কারণ হতে পারে। একটি রিবুট আপনাকে ঠিক করা উচিত, তবে খারাপ জিনিস খুব সহজেই ঘটতে পারে। সাবধান হও! :-)


4
আমি মেম ম্যান পৃষ্ঠাটি পর্যালোচনা করার পরামর্শ দেব। র‌্যাগগুলি সঠিক। "মেম একটি ক্যারেক্টার ডিভাইস ফাইল যা কম্পিউটারের মূল মেমোরির একটি চিত্র It এটি ব্যবহার করা যেতে পারে উদাহরণস্বরূপ, সিস্টেমটি পরীক্ষা করে (এবং এমনকি প্যাচ) mem এবং ... "শারীরিক মেমরির পরিবর্তে কার্নেল ভার্চুয়াল মেমরি অ্যাক্সেস করা ছাড়া কেএমএম ফাইলটি মেমের সমান।"
মিঃ শিকাড্যান্স

@ অ্যান্ড্রু ফ্লানাগান: আপনার লিঙ্কটি এখন দেখায় যে কীভাবে সময় কমান্ড ব্যবহার করে কেউ স্টপওয়াচ সেট আপ করতে পারে।
আইয়ন.প্রাইম

1
@ Aiyion.Prime। ধন্যবাদ - একটি সংরক্ষণাগার.অর্গ সংস্করণে নির্দেশিত।
অ্যান্ড্রু ফ্লানাগান

19

/ dev / mem ভার্চুয়াল মেমরির পরিবর্তে সিস্টেমের শারীরিক স্মৃতিতে অ্যাক্সেস সরবরাহ করে । কার্নেলগুলি ভার্চুয়াল ঠিকানার স্থান / dev / kmem ব্যবহার করে অ্যাক্সেস করা যায়।

এটি প্রাথমিকভাবে ভিডিও অ্যাডাপ্টারগুলির মতো পেরিফেরিয়াল হার্ডওয়্যার সম্পর্কিত আইও মেমরির ঠিকানাগুলিতে অ্যাক্সেস করতে ব্যবহৃত হয়।


9

sudo cat /dev/urandom > /dev/memকিছুই করবেন না, যেহেতু সুডো বিড়ালের সুবিধাকে উন্নত করবে কিন্তু পুনর্নির্দেশের নয়। আপনি হয় করতে পারেন sudo suএবং তারপরে রুট শেলটিতে কাজ করতে পারেন , বা ব্যবহার করতে পারেন
sudo dd if=/dev/urandom of=/dev/mem

/dev/memশারীরিক স্মৃতিতে, যেমন সিস্টেমে সমস্ত র‌্যামের অ্যাক্সেস সরবরাহ করে তবে এর অর্থ এই নয় যে এটি আপনাকে র‌্যামে সম্পূর্ণ পঠন / লেখার অ্যাক্সেস দেয় ( এই দস্তাবেজে CONFIG_STRICT_DEVMEM বিকল্পটি দেখুন )। আরও মনে রাখবেন যে শারীরিক মেমরির কিছু অঞ্চলে অন্যান্য ডিভাইস যেমন ভিডিও কার্ড মেমরি ইত্যাদিতে ম্যাপযুক্ত থাকে।

অন্ধভাবে লেখার /dev/memফলে অনিশ্চিত আচরণ দেখা দেবে, এখানে একটি ইউটিউব ভিডিও একই কাজ করছে।


6

এটি পরীক্ষা করে দেখুন busybox devmem

busybox devmemএকটি ক্ষুদ্র সিএলআই ইউটিলিটি যা এমএম্যাপ করে /dev/mem

আপনি এটি দিয়ে উবুন্টুতে পেতে পারেন: sudo apt-get install busybox

ব্যবহার: শারীরিক ঠিকানা থেকে 4 বাইট পড়ুন 0x12345678:

sudo busybox devmem 0x12345678

0x9abcdef0ঠিকানায় লিখুন :

sudo busybox devmem 0x12345678 w 0x9abcdef0

সূত্র: https://github.com/mirror/busybox/blob/1_27_2/miscutils/devmem.c#L85

MAP_SHARED

এমএম্যাপ করার সময় /dev/memআপনি সম্ভবত ব্যবহার করতে চান:

open("/dev/mem", O_RDWR | O_SYNC);
mmap(..., PROT_READ | PROT_WRITE, MAP_SHARED, ...)

MAP_SHARED লেখাগুলি তাত্ক্ষণিক শারীরিক স্মৃতিতে চলে যায়, যা পর্যবেক্ষণ করা সহজ করে তোলে এবং হার্ডওয়্যার রেজিস্টার লেখার জন্য আরও বোধ করে।

CONFIG_STRICT_DEVMEM এবং nopat

/dev/memকার্নেল v4.9 এ নিয়মিত র‌্যাম দেখতে ও সংশোধন করার জন্য আপনাকে অবশ্যই প্রথমে মুষ্টি করতে হবে:

  • অক্ষম করুন CONFIG_STRICT_DEVMEM(উবুন্টু 17.04 এ ডিফল্ট হিসাবে সেট করা)
  • nopatx86 এর জন্য কার্নেল কমান্ড লাইন বিকল্পটি পাস করুন

আইও বন্দরগুলি এখনও সেগুলি ছাড়া কাজ করে।

আরও দেখুন: https://stackoverflow.com/questions/39134990/mmap-of-dev-mem-fails-with-inuthor-argument-for-virt-to-phys-address-but-addre/45127582#45127582

ক্যাশে ফ্লাশিং

আপনি যদি নিবন্ধের পরিবর্তে র‌্যামে লেখার চেষ্টা করেন তবে মেমরিটি সিপিইউ দ্বারা ক্যাশে করা যেতে পারে: https://stackoverflow.com/questions/22701352/how-to-flush-the-cpu-cache-for-a-region লিনাক্সের-ঠিকানা-ঠিকানা এবং আমি এটি ফ্লাশ করার বা অঞ্চলটিকে অপ্রয়োজনীয় হিসাবে চিহ্নিত করার খুব পোর্টেবল / সহজ উপায় দেখতে পাচ্ছি না:

সুতরাং সম্ভবত /dev/memডিভাইসে মেমরি বাফারগুলি নির্ভরযোগ্যভাবে ব্যবহার করা যাবে না?

দুর্ভাগ্যক্রমে কিউইএমইউতে এটি লক্ষ্য করা যায় না, যেহেতু কিউইএমইউ ক্যাশেগুলি অনুকরণ করে না।

কীভাবে এটি পরীক্ষা করা যায়

মজাদার অংশের জন্য এখন। এখানে কয়েকটি দুর্দান্ত সেটআপ দেওয়া হল:

  • ইউজারল্যান্ড মেমরি
    • volatileএকটি ইউজারল্যান্ড প্রক্রিয়াতে ভেরিয়েবল বরাদ্দ করুন
    • /proc/<pid>/maps+ সহ শারীরিক ঠিকানা পান/proc/<pid>/pagemap
    • devmem2ব্যবহারকারীর প্রক্রিয়াটির সাথে প্রকৃত ঠিকানা এবং দেখুন:
  • কার্নল্যান্ডের স্মৃতি
    • এর সাথে কার্নেল মেমরি বরাদ্দ করুন kmalloc
    • এর সাথে শারীরিক ঠিকানা পান virt_to_physএবং এটি ব্যবহারকারীর দেশে ফেরত দিন
    • এর সাথে শারীরিক ঠিকানাটি পরিবর্তন করুন devmem2
    • কার্নেল মডিউল থেকে মানটি জিজ্ঞাসা করুন
  • আইও মেম এবং কিউইএমইউ ভার্চুয়াল প্ল্যাটফর্ম ডিভাইস
    • পরিচিত শারীরিক নিবন্ধ ঠিকানা সহ একটি প্ল্যাটফর্ম ডিভাইস তৈরি করুন
    • devmem2রেজিস্টার লিখতে ব্যবহার করুন
    • ঘড়ি printfগুলি প্রতিক্রিয়ায় ভার্চুয়াল ডিভাইস থেকে আসা

5

/ dev / mem physicalতিহ্যগতভাবে পুরো শারীরিক ঠিকানার জায়গায় অ্যাক্সেস সরবরাহ করে। এতে র‌্যাম অন্তর্ভুক্ত রয়েছে তবে এতে কোনও মেমরি ম্যাপ করা আইও ডিভাইস অন্তর্ভুক্ত রয়েছে।

অনেকগুলি আধুনিক কার্নেলগুলি "CONFIG_STRICT_DEVMEM" দিয়ে কনফিগার করা হবে যা কেবলমাত্র / মেমরিযুক্ত ম্যাপ করা আইও ডিভাইসগুলিতে / dev / মেমিকে সীমাবদ্ধ করে।

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

পিএস নোট করুন যে আপনার কমান্ডটি যখন কোনও সাধারণ ব্যবহারকারী হিসাবে চালিত হয় তখন কিছু করা উচিত নয়, কারণ সুডো কেবল বিড়াল কমান্ডকেই পুনর্নির্দেশ করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.