আপনি কখন পিচট_রোট ওভার সুইচ_রোট ব্যবহার করবেন?


19

আমি এনএফএসের পরিবর্তে সিফের মাধ্যমে একটি সিস্টেম নেটবুট করার জন্য লিনাক্স ডিআইএন প্রক্রিয়াটি আরও ভালভাবে বুঝতে চাই।

প্রক্রিয়াটিতে আমি দুটি রূপ পরিবর্তন করতে পেরেছি। একটিতে সুইচ_রুট নামে পরিচিত, এবং অন্যটি পিভট_রূট নামে পরিচিত। এই স্ক্রিপ্টগুলি pxe বুট প্রক্রিয়াটি ব্যবহার করে tftp এর মাধ্যমে প্রাপ্ত ইন মেমরি ফাইল সিস্টেম (initramfs) থেকে চালিত হচ্ছে।

আপনি কখন অন্যের উপর ব্যবহার করবেন? আমি উভয়ই দেখেছি কিছু প্রাথমিক স্ক্রিপ্টের মূলটিতে রাখা হয়েছে।

উত্তর:


16

আমি একটি দুর্দান্ত ব্যাখ্যা পেয়েছি এখানে । তবে, আমি উত্তরে যা বুঝলাম তার একটি সংক্ষিপ্ত বিন্যাসে রাখার চেষ্টা করি।

সংক্ষিপ্ত সংস্করণ

  1. সিস্টেমটি বুট করার সময় এটির প্রাথমিক ইউসারস্পেস প্রয়োজন। এটি initramfs বা initrd ব্যবহার করে অর্জন করা যেতে পারে।
  2. আরআরআরডি র‌্যামডিস্কে লোড করা হয়েছে যা প্রকৃত ফাইল সিস্টেম
  3. initramfs -র হয় না একটি ফাইল সিস্টেম
  4. জন্য initrd- র pivot_root ব্যবহার করা হয় এবং এর জন্য initramfs -র switch_root ব্যবহার করা হয়।

দীর্ঘ সংস্করণ

এখন, আমি উপরে কী রেখেছি তার বিশদ ব্যাখ্যার কাছে।

যদিও একটি ইনি্রামফ এবং একটি ইআরআরডি উভয়ই একই উদ্দেশ্যে কাজ করে তবে দুটি পার্থক্য রয়েছে। সর্বাধিক সুস্পষ্ট পার্থক্য হ'ল একটি আরআরডি একটি র‌্যামডিস্কে লোড করা হয়। এটিতে একটি আসল ফাইল সিস্টেম রয়েছে (সাধারণত ext2) যা একটি র‌্যামডিস্কে মাউন্ট করা হয়। অন্যদিকে, একটি initramfs কোনও ফাইল সিস্টেম নয়। এটি কেবলমাত্র একটি (সংকুচিত) সিপিও সংরক্ষণাগার (টাইপ নিউক) এর একটি টিএমপিএফ-এ প্যাকযুক্ত। এর দ্বারা ইআরআরএনএমের তুলনায় কার্নেল বুট প্রসেসে খানিকটা আগে অপেক্ষাকৃত ও লোড করতে সক্ষম হয়ে থ্রিমফ্রেসগুলি তৈরি করার একটি পার্শ্ব-প্রতিক্রিয়া রয়েছে। এছাড়াও, মেমরির মধ্যে initramfs আকার ছোট, যেহেতু কার্নেলটি পূর্বনির্ধারিত রামডিস্ক আকারের উপর নির্ভর না করে tmpfs এর আকারটিকে আসলে লোড করা কিছুতে অভিযোজিত করতে পারে,

আরও একটি পার্শ্ব-প্রভাব পার্থক্য রয়েছে: রুট ডিভাইস (এবং এটিতে স্যুইচ করা) কীভাবে পরিচালনা করা হয়। যেহেতু একটি আরআরডিড একটি বাস্তব ফাইল সিস্টেম যা মেমরিতে প্যাকযুক্ত নয়, মূল ডিভাইসটি অবশ্যই র্যামডিস্ক হতে হবে। একটি initramfs- র জন্য, একটি কার্নেল "rootfs" থাকে যা tmpfs হয়ে যায় যে initramfs আনপ্যাক করা হয় (যদি কার্নেল একটি initramfs লোড করে; যদি তা না হয়, তবে রুটফগুলি কেবল root = কার্নেল বুট প্যারামিটারের মাধ্যমে উল্লিখিত ফাইল সিস্টেম হয়) তবে এই অন্তর্বর্তী রুটফগুলি root = বুট প্যারামিটার হিসাবে নির্দিষ্ট করা উচিত নয় (এবং এটি করার কোনও উপায় নেই, কারণ এটির সাথে কোনও ডিভাইস সংযুক্ত নেই)। এর অর্থ এই যে আপনি যখন কোনও ইআর্রামফ ব্যবহার করে তখনও আপনার আসল রুট ডিভাইসটি কার্নেলের কাছে দিতে পারেন। একটি আরআরআরডি দিয়ে, আপনাকে প্রকৃত রুট ডিভাইসটি কী তা প্রক্রিয়া করতে হবে। এছাড়াও, "বাস্তব" একটি আরআরআরডযুক্ত রুট ডিভাইসটি হ'ল র‌্যামডিস্ক, কার্নেলটিকে সত্যিকারের ডিভাইস (র‌্যামডিস্ক) থেকে অন্যটিতে (আপনার আসল মূল) ডিভাইসগুলি ব্যবহার করতে হবে। কোনও initramfs এর ক্ষেত্রে, initramfs স্পেস (tmpfs) একটি আসল ডিভাইস নয়, তাই কার্নেল প্রকৃত ডিভাইসগুলিতে স্যুইচ করে না। Pivot_root কমান্ডটি একটি initrd ব্যবহার করার সময় একটি initramfs এর জন্য আলাদা কমান্ড ব্যবহার করতে হবে। ব্যাসিবক্স এটি সম্পাদন করতে সুইচ_রুট সরবরাহ করে, যখন ক্লিবিসি নতুন_রোট সরবরাহ করে। একটি initramfs জন্য একটি পৃথক কমান্ড ব্যবহার করতে হবে। ব্যাসিবক্স এটি সম্পাদন করতে সুইচ_রুট সরবরাহ করে, যখন ক্লিবিসি নতুন_রোট সরবরাহ করে। একটি initramfs জন্য একটি পৃথক কমান্ড ব্যবহার করতে হবে। ব্যাসিবক্স এটি সম্পাদন করতে সুইচ_রুট সরবরাহ করে, যখন ক্লিবিসি নতুন_রোট সরবরাহ করে।


2
আমি pivot_rootঅতীতে ইনি্রামফের জন্য ব্যবহার করেছি , switch_rootসে সময়টি ছিল না। switch_rootএকটি সুবিধার পদ্ধতির মনে করা হয় pivot_rootযা আরো কিছু পরিষ্করণ এবং প্যাচসমূহ আছে /proc /sysএবং /devইত্যাদি এবং মাত্র রুট নিজেই
ড্যানিয়েল এল্ডযার

2
আপনি একটি initramfs rootfs এ pivot_root ব্যবহার করতে পারবেন না, আপনি অবৈধ আর্গুমেন্ট পাবেন। আপনি কেবল আসল ফাইল সিস্টেমকে পিভট করতে পারেন।
টিসিপিইউ

@ টিসিপিইউ তারপরে লিনাক্স কীভাবে প্রারম্ভিক ব্যবহারকারীর স্থান থেকে বেরিয়ে আসবে?
মেলাব

প্রদত্ত সমাধানটি ভুল বলে মনে হচ্ছে। লিনাস নিজেই বলেছেন যে পিভট_রূট () বা ক্রুট () কেবলমাত্র বর্তমান প্রক্রিয়াগুলির রেফারেন্সের জন্য পরিবর্তন করবে /। সুতরাং আমার উপলব্ধি থেকে এটি যে কোনও পথ হতে পারে এবং প্রকৃত "ডিস্ক" এর সাথে কোনও সম্পর্ক নেই।
এরিকবওয়ার্ক

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