प्रारंभिक रैमडिस्क (initrd) आम तौर पर जड़ युक्त ही नहीं है जो यह करने के लिए बूटिंग बंद वास्तविक जड़ फाइल सिस्टम और हाथ माउंट करने के लिए की जरूरत है फाइल सिस्टम के एक छीन नीचे संस्करण है।
Initrd मौजूद है क्योंकि आधुनिक सिस्टम में, बूट लोडर को स्मार्ट नहीं बनाया जा सकता है ताकि रूट फाइल सिस्टम को मज़बूती से खोजा जा सके। बूट लोडर को कवर करने के लिए इस तरह के एक छोटे से कार्यक्रम के लिए बहुत अधिक संभावनाएं हैं। एनएफएस रूट, गैर-मानक RAID कार्ड आदि पर विचार करें, बूट लोडर को केवल BIOS प्लस का उपयोग करके अपना काम करना होगा जो भी बूट क्षेत्र में कोड हो सकता है।
Initrd को बूट लोडर कहीं मिल सकता है, और यह इतना छोटा है कि इसमें जितना अतिरिक्त स्थान लगता है उतना आमतौर पर किसी को भी परेशान नहीं करता है। (छोटे एम्बेडेड सिस्टम में, आमतौर पर कोई "वास्तविक" रूट नहीं होता है, बस initrd है।)
Initrd अनमोल है: इसकी सामग्री को सभी शर्तों के तहत संरक्षित किया जाना है, क्योंकि यदि initrd टूट जाता है, तो सिस्टम बूट नहीं हो सकता है। यह सुनिश्चित करने के लिए कि इसके लोडर को केवल रीड-ओनली लोड करने के लिए डिज़ाइन किया गया है। ऐसे अन्य सिद्धांत हैं जो इस ओर काम करते हैं, जैसे कि छोटे सिस्टम के मामले में जहां "वास्तविक" जड़ नहीं है, आप अभी भी अलग-अलग माउंट करते हैं /tmp
, /var/cache
और इस तरह की चीजों को संग्रहीत करने के लिए। Initrd को बदलना केवल शायद ही कभी किया जाता है, और फिर बहुत सावधानी से किया जाना चाहिए।
सामान्य मामले, जहां के लिए वापस हो रही है एक असली जड़ फाइल सिस्टम, इसे शुरू किया गया है पढ़ने के लिए माउंट सिर्फ इसलिए initrd था। इसे तब तक केवल पढ़ने के लिए रखा जाता है जब तक कि अधिक समान कारणों के लिए संभव हो। वास्तविक रूट पर किसी भी लेखन को करने की आवश्यकता होती है, जब तक कि सिस्टम बूट नहीं किया जाता है, वरीयता द्वारा, या कम से कम जब तक बूट प्रक्रिया में देर हो जाती है जब तक कि वरीयता को संतुष्ट नहीं किया जा सकता है।
इस रीड-ओनली चरण के दौरान सबसे महत्वपूर्ण बात यह है कि रूट फाइल सिस्टम को यह देखने के लिए जांचा जाता है कि क्या वह साफ-सुथरा था। यह कुछ ऐसा है जिसे बूट लोडर निश्चित रूप से टिट्रोड पर छोड़ने के बजाय कर सकता है, लेकिन तब क्या होता है जब रूट फाइलसिस्टम साफ सुथरा नहीं था ? फिर इसे fsck
जांचने के लिए कॉल करना होगा और संभवतः इसे ठीक करना होगा। तो, अगर इस कदम के लिए "वास्तविक" रूट को हैंडऑफ होने तक इंतजार करने के बजाय अगर यह जिम्मेदार था, तो कहां initrd
मिलेगा fsck
? आप कह सकते हैं कि आप कॉपी करने की जरूरत fsck
में initrd
जब यह निर्माण, लेकिन अब यह बड़ा है। और उसके ऊपर, जिसे fsck
आप कॉपी करेंगे? लिनक्स सिस्टम नियमित रूप से एक दर्जन या तो विभिन्न फाइल सिस्टम का उपयोग करते हैं। क्या आप उस समय केवल वास्तविक रूट के लिए आवश्यक एक की नकल करते हैंinitrd
बनाया गया है? क्या आप initrd
सभी उपलब्ध fsck.foo
कार्यक्रमों को कॉपी करके आकार को गुब्बारा करते हैं, यदि मूल फाइल सिस्टम बाद में किसी अन्य फाइलसिस्टम प्रकार में माइग्रेट हो जाता है, और कोई initrd का पुनर्निर्माण करना भूल जाता है?
लिनक्स बूट सिस्टम आर्किटेक्ट ने इन समस्याओं के साथ initrd को बोझ नहीं करने के लिए बुद्धिमानी से चुना। उन्होंने वास्तविक रूट फाइलसिस्टम की वास्तविक रूट फाइलसिस्टम की जाँच को निर्धारित किया, क्योंकि यह एक बेहतर स्थिति में है जो कि initrd की तुलना में ऐसा करता है।
एक बार जब बूट प्रक्रिया इतनी आगे बढ़ जाती है कि ऐसा करना सुरक्षित होता है, तो initrd वास्तविक रूट के नीचे से स्वैप हो जाता है pivot_root(8)
, और फाइल-सिस्टम रीड-राइट मोड में रिमाउंट हो जाता है।