আপনি যা করেন তা কোনও ব্যাপার নয়, আপনার আছে initramfs
। এটি ছাড়া কোনও কাজ নেই - এটি আপনার উপর চাপানো একমাত্র ফাইল সিস্টেম। কার্নেল.অর্গ থেকে :
রুটফস কী?
Rootfs
একটি বিশেষ দৃষ্টান্ত হল ramfs
(অথবা tmpfs
, যদি যে সক্ষম করা থাকে), যা
সবসময় 2.6 সিস্টেম উপস্থিত রয়েছে। আপনি আন-মাউন্ট করতে পারবেন নাrootfs
প্রায় একই কারণে আপনি আর ডি প্রক্রিয়াটি মেরে ফেলতে পারবেন না; খালি তালিকার জন্য পরীক্ষা করতে ও পরিচালনা করার জন্য বিশেষ কোড না রাখার চেয়ে কার্নেলের পক্ষে নির্দিষ্ট তালিকা খালি না হয়ে যেতে পারে তা নিশ্চিত করা এটি আরও সহজ এবং সহজ।
বেশিরভাগ সিস্টেমগুলি অন্য একটি ফাইল সিস্টেমকে মাউন্ট করে rootfs
এবং এটিকে উপেক্ষা করে। র্যামফের খালি দৃষ্টান্তটি যে স্থান গ্রহণ করে তা খুব সামান্য ।
তাহলে * CONFIG_TMPFS * সক্ষম হলে, rootfs
ব্যবহার করবে tmpfs
পরিবর্তে ramfs
ডিফল্ট ভাবে। বলপূর্বক ramfs
, যোগ "rootfstype=ramfs"
Kernel কমান্ড-লাইনের।
ইন্স্রামফ কী?
সমস্ত ২.6 লিনাক্স কার্নেলগুলিতে একটি গিজিপযুক্ত"cpio"
ফর্ম্যাট সংরক্ষণাগারথাকেযা কার্নেল বুট হয়ে rootfs
গেলে প্রবেশ করা হয়। আহরণের পর কার্নেল চেক কিনা তা দেখতেrootfs
একটি ফাইল রয়েছে"init"
, এবং তাই এটি এটা executes যেন PID, 1. এটি পাওয়া গেলে, এইinit
প্রক্রিয়া, সিস্টেম উপায় আপ বাকি আনয়ন লোকেটিং এবং বাস্তব root ডিভাইস মাউন্ট সহ জন্য দায়ী ( যদি কোন). rootfs
এতেinit
এম্বেড থাকাcpio
সংরক্ষণাগারটি বের করারপরে যদিকোনওপ্রোগ্রামনা থাকেতবে কার্নেলটি একটি মূল বিভাজন সনাক্ত এবং মাউন্ট করার জন্য পুরানো কোডের মধ্যে পড়ে যাবে, তারপরে এর কিছু বৈকল্পিক/sbin/init
কার্যকর করবে।
এই সমস্ত কিছু বিভিন্ন উপায়ে পুরানো আরআরডি থেকে পৃথক:
পুরানো initrd সর্বদা একটি পৃথক ফাইল ছিল, যখন initramfs সংরক্ষণাগারটি লিনাক্স কার্নেল চিত্রের সাথে যুক্ত রয়েছে। (ডিরেক্টরি লিনাক্স - * / usr নির্মাণের সময় এই সংরক্ষণাগারটি তৈরি করতে উত্সর্গীকৃত))
পুরানো আরআরআরডি ফাইলটি একটি জিজেপড ফাইলসিস্টেম চিত্র ছিল (কিছু ফাইল ফর্ম্যাটে যেমন ext2, যার জন্য কার্নেলের মধ্যে নির্মিত ড্রাইভারের দরকার ছিল), যখন নতুন initramfs সংরক্ষণাগারটি একটি জিজেপড সিপিও সংরক্ষণাগার (যেমন কেবল কেবল সরল, সিপিও দেখুন (1) এবং ডকুমেন্টেশন / প্রারম্ভিক-ইউজারস্পেস / বাফার-ফরম্যাট.txt)। কার্নেলের সিপিও এক্সট্রাকশন কোডটি কেবলমাত্র খুব ছোট নয়, এটি পাঠ্য এবং ডেটাও itআইনিট করুন যা বুট প্রক্রিয়া চলাকালীন বাতিল করা যেতে পারে।
পুরানো initrd দ্বারা চালিত প্রোগ্রাম (যাকে বলা হত / initrd, / init নয়) কিছু সেটআপ করেছিল এবং তারপরে কার্নেলের কাছে ফিরে আসে, অন্যদিকে initramfs থেকে init প্রোগ্রাম কার্নেলের কাছে ফিরে আসবে বলে আশা করা যায় না। (যদি / আরআরটিকে নিয়ন্ত্রণ বন্ধ করার দরকার হয় তবে এটি একটি নতুন মূল ডিভাইসটি দিয়ে / কাটিয়ে উঠতে পারে এবং অন্য একটি এনআর প্রোগ্রাম চালায় below নীচে স্যুইচ_রোট ইউটিলিটি দেখুন))
অন্য কোনও রুট ডিভাইসটি স্যুইচ করার সময়, আরআরআরডি পিভট_রুট এবং তারপরে র্যামডিস্কটিকে সামঞ্জস্য করে। তবে initramfs হ'ল rootfs: আপনি পিভট_রুট রুটফগুলি নাও আনমাউন্ট করতে পারবেন না। স্থানটি ফাঁকা করার জন্য রুটফেসের বাইরে থাকা সমস্ত কিছু মুছুন (অনুসন্ধান করুন -xdev / -exec rm '{}' ';'), নতুন মূলের সাহায্যে ওভারমাউন্ট রুটফগুলি (সিডি / নিউমাউন্ট; মাউন্ট --মোভ; /; ক্রোট।), নতুন / dev / কনসোলের সাথে stdin / stdout / stderr সংযুক্ত করুন, এবং নতুন init চালনা করুন।
যেহেতু এটি একটি লক্ষণীয়ভাবে দৃ .়প্রবণতা প্রক্রিয়া (এবং কমান্ডগুলি চালানোর আগে এটি মুছে ফেলার সাথে জড়িত), klibc প্যাকেজটি আপনার জন্য এই সমস্ত কিছু করার জন্য একটি সহায়ক প্রোগ্রাম (ইউটিস / রান_ইনিট.সি) প্রবর্তন করেছে। বেশিরভাগ অন্যান্য প্যাকেজ (যেমন ব্যস্তবক্স) এই কমান্ডটির নাম দিয়েছে "স্যুইচ_রোট"।
জনসংখ্যা
২.6 কার্নেল বিল্ড প্রক্রিয়া সর্বদা একটি জিজেপড সিপিও ফর্ম্যাট টি আরআরআমফএস সংরক্ষণাগার তৈরি করে এবং ফলস্বরূপ কার্নেল বাইনারিতে এটি লিঙ্ক করে। ডিফল্টরূপে, এই সংরক্ষণাগারটি খালি (x86 এ 134 বাইট গ্রহণ করা)।
কনফিগারেশন বিকল্প CONFIG_INITRAMFS_SOURCE (মেনুকনফিগের সাধারণ সেটআপে, এবং usr / Kconfig এ থাকা) ব্যবহার করা যেতে পারে initramfs সংরক্ষণাগারটির জন্য উত্স নির্দিষ্ট করতে, যা স্বয়ংক্রিয়ভাবে ফলাফল বাইনারিতে অন্তর্ভুক্ত হবে। এই বিকল্পটি একটি বিদ্যমান জিজেপড সিপিও আর্কাইভ, সংরক্ষণাগারভুক্ত করার জন্য ফাইল সম্বলিত একটি ডিরেক্টরি বা নিম্নোক্ত উদাহরণের মতো একটি পাঠ্য ফাইলের বিশদ উল্লেখ করতে পারে:
dir /dev 755 0 0
nod /dev/console 644 0 0 c 5 1
nod /dev/loop0 644 0 0 b 7 0
dir /bin 755 1000 1000
slink /bin/sh busybox 777 0 0
file /bin/busybox initramfs/busybox 755 0 0
dir /proc 755 0 0
dir /sys 755 0 0
dir /mnt 755 0 0
file /init initramfs/init.sh 755 0 0
উপরের ফাইল ফর্ম্যাটের ডকুমেন্টিংয়ের ব্যবহার বার্তা পেতে "usr / gen_init_cpio" (কার্নেল বিল্ডের পরে) চালান।
কনফিগারেশন ফাইলের একটি সুবিধা হ'ল নতুন আর্কাইভে অনুমতি সেট করতে বা ডিভাইস নোডগুলি তৈরি করতে রুট অ্যাক্সেসের প্রয়োজন হয় না। (দ্রষ্টব্য, এই দুটি উদাহরণ "ফাইল" এন্ট্রিগুলি "init.sh" এবং "ব্যস্তবক্স" নামক একটি ডিরেক্টরি "Linuxramfs" নামে একটি ডিরেক্টরিতে লিনাক্স-২. 2. এর অধীনে ফাইলগুলি খুঁজে পাওয়ার প্রত্যাশা করেছে। * ডিরেক্টরিতে ডকুমেন্টেশন / আর্লি-ইউজারস্পেস / README দেখুন আরো বিস্তারিত.)
কার্নেল বহিরাগত সিপিও সরঞ্জামগুলির উপর নির্ভর করে না। আপনি যদি কনফিগারেশন ফাইলের পরিবর্তে ডিরেক্টরি উল্লেখ করেন তবে কার্নেলের বিল্ড অবকাঠামো সেই ডিরেক্টরি থেকে একটি কনফিগারেশন ফাইল তৈরি করে (usr / Makefile কলগুলি স্ক্রিপ্টগুলি / Gen_initramfs_list.sh), এবং কনফিগারেশন ফাইলটি ব্যবহার করে ডিরেক্টরিটিকে প্যাকেজ করতে এগিয়ে যায় (এটিকে খাওয়ানোর মাধ্যমে) usr / gen_init_cpio, যা usr / gen_init_cpio.c থেকে তৈরি করা হয়েছে)। কার্নেলের বিল্ড-টাইম সিপিও তৈরির কোডটি সম্পূর্ণ স্ব-অন্তর্ভুক্ত এবং কার্নেলের বুট-টাইম এক্সট্র্যাক্টরটিও (স্পষ্টতই) স্ব-অন্তর্ভুক্ত।