কেন initramfs কেবল ফাইল-সিস্টেমের পাঠের জন্য মাউন্ট করে না


12

roInitramfs (এবং initrd) এ মূল ফাইল সিস্টেমের মাউন্ট হওয়ার কারণ কী ?

উদাহরণস্বরূপ জেন্টু থ্রাইমার্ফস গাইড এর সাথে মূল ফাইল সিস্টেমটি মাউন্ট করে:

mount -o ro /dev/sda1 /mnt/root

নিম্নলিখিতগুলি কেন নয়?

mount -o rw /dev/sda1 /mnt/root

আমি দেখতে পাচ্ছি যে সম্ভবত একটি ভাল কারণ রয়েছে (এবং এটি সম্ভবত জড়িত switchroot) তবে এটি কোথাও নথিভুক্ত বলে মনে হয় না।

উত্তর:


19

প্রাথমিক ramdisk এবং (initrd- র) সাধারণত রুট ধারণকারী কেবল পবিত্র জিনিসই এটি বুট বন্ধ প্রকৃত রুট ফাইল সিস্টেম এবং হাতের মাউন্ট করতে প্রয়োজন হয় ফাইলসিস্টেম একটি ছিনতাই ডাউন সংস্করণ।

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

আরআরআরডি বুট লোডারটি খুঁজে পেতে পারে এমন কোনও স্থানে সঞ্চিত হয়ে যায় এবং এটি যথেষ্ট পরিমাণে যে অতিরিক্ত জায়গা লাগে তা সাধারণত কাউকেই বিরক্ত করে না। (ছোট এম্বেড থাকা সিস্টেমে সাধারণত কোনও "আসল" রুট থাকে না, কেবল আরডিআরড হয়))

ইআরআরডিটি মূল্যবান: এর বিষয়বস্তুগুলি সমস্ত অবস্থাতেই সংরক্ষণ করতে হবে, কারণ যদি আরআরআরডিটি বিরতি দেয় তবে সিস্টেমটি বুট করতে পারে না। এটি নিশ্চিত করার জন্য এর ডিজাইনারদের তৈরি করা একটি নকশার পছন্দ হ'ল বুট লোডারটি কেবল আরআরডি পঠনযোগ্য লোড করা। অন্যান্য নীতির যে এই দিকে কাজ, খুব, যেমন যে ছোট ব্যবস্থা কেস যেখানে "বাস্তব" মূল আছে হিসাবে, আপনি কি এখনও পৃথক মাউন্ট হয় /tmp, /var/cacheএবং কিছু জমা করার জন্য এই ধরনের। Initrd পরিবর্তন করা খুব কমই করা হয়, এবং তারপরে খুব সাবধানে করা উচিত।

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

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

লিনাক্স বুট সিস্টেমের আর্কিটেক্টরা বুদ্ধিমানের সাথে এই সমস্যাগুলির সাথে আরআরডি বোঝা না চাপিয়েছিলেন। তারা আসল রুট ফাইল সিস্টেমকে সত্যিকারের ফাইল সিস্টেমে পরীক্ষা করার দায়িত্ব অর্পণ করেছিল, যেহেতু এটি আরআরডি-র চেয়ে আরও ভাল অবস্থানে রয়েছে।

বুট প্রক্রিয়াটি যথেষ্ট পরিমাণে এগিয়ে গেলে এটি নিরাপদ হয়ে গেলে, আরআরআরডিটি আসল মূলের নীচে থেকে সরে যায় pivot_root(8)এবং ফাইল-সিস্টেমটি রিড-রাইট মোডে পুনরায় সঞ্চারিত হয়।


4
Initramfs কেবল পঠনযোগ্য মাউন্ট করা হয় না; কার্নেল এটিকে পঠন / লেখার tmpfs এ প্যাক করে যা / হিসাবে মাউন্ট করা হয়। এছাড়াও পিভট_রূট () এখন অবহেলিত আরআরআরডে ব্যবহৃত হয়, তবে কোনও ইনি্রামফ নয়, যা বেশিরভাগ সিস্টেমে এই দিনগুলিতে ব্যবহার করা হয় (যদিও ফাইলটির নাম এখনও আরআরডি করা হয়)। আরআরআরডি দিয়ে, পাইভট_রূট / এসবিিন / আরআইকে কার্যকর করার আগে সংঘটিত হয়েছিল, যা fsck এবং পুনঃনির্মাণ r / w এ চলে গেছে। একটি initramfs দিয়ে, এটি কেবলমাত্র initramfs এর সমস্ত ফাইল মুছে ফেলবে, তারপরে প্রকৃত মূলের মধ্যে chroots এবং execs / sbin / init করবে।
psusi

0

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


0

যে কারণগুলির বিষয়ে আমি ভাবতে পারি তা হ'ল এক ধরণের দুর্নীতি রোধ করা। উদাহরণস্বরূপ, আপনি ext4 ফাইল-সিস্টেমকে ext2 (বা বিপরীতে) হিসাবে মাউন্ট করতে পারেন এবং এটি রো-মোডে নিরাপদ, তবে থ্রিমার থেকে rw মাউন্ট করা গেলে বেমানান বিন্যাসের পরিবর্তন হতে পারে।

ওহ, এবং আরও একটি কারণ রয়েছে: initramfs সম্ভবত fsck নেই, তবে এটি rw মাউন্ট করার আগে আপনার ফাইল সিস্টেম পরীক্ষা করতে হবে।

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