रूट माउंट होने से पहले / etc / fstab तक कैसे पहुँचा जाता है?


21

मैं कुछ बदलाव कर रहा था /etc/fstab, जब यह चिकन और अंडे का सवाल मेरे सामने आया - यदि /etc/fstabरूट विभाजन सहित फ़ाइल सिस्टम को माउंट करने के निर्देश शामिल हैं, तो OS उस फ़ाइल को पहली बार में कैसे पढ़ता है?

जवाबों:


18

जब बूट लोडर कर्नेल को कॉल करता है तो इसे एक पैरामीटर कहा जाता है root। इसलिए एक बार कर्नेल को शुरू करने के बाद इसे दिए गए रूट विभाजन को बढ़ते रहने /और फिर कॉल करने /sbin/initतक जारी रहेगा (जब तक कि यह अपने मापदंडों से अधिक नहीं हो जाता)।

फिर initप्रक्रिया उन सभी सेवाओं को लोड करके बाकी सिस्टम को शुरू करती है जो आपके डिफ़ॉल्ट रनवे में शुरू होने के लिए परिभाषित हैं।

आपके कॉन्फ़िगरेशन और आपके द्वारा उपयोग किए जाने वाले इनिट सिस्टम के आधार पर, मेरे द्वारा उल्लेखित लोगों के बीच कई अन्य चरण हो सकते हैं। वर्तमान में लिनक्स पर सबसे लोकप्रिय init सिस्टम SysVInit (पारंपरिक एक), अपस्टार्ट और सिस्टमड हैं। आप इस विकिपीडिया लेख में बूट प्रक्रिया के बारे में अधिक जानकारी पा सकते हैं ।

यहाँ मेरे Grub config का एक सरल उदाहरण है। आपके प्रश्न का उत्तर देने के लिए महत्वपूर्ण भाग दूसरी से अंतिम पंक्ति में है, एक है root=/dev/sda3:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

कई कॉन्फ़िगरेशन में कर्नेल को /केवल-पढ़ने के लिए मोड में रखा जाता है और बाकी के सभी विकल्प डिफॉल्ट पर सेट होते हैं। में /etc/fstabआप फाइल सिस्टम पैरामीटर जो तब एक बार init यह remounts लागू किया जाएगा निर्दिष्ट कर सकता है।


2
रूट विभाजन शुरू में केवल कर्नेल द्वारा रीड-माउंट किया जाता है। एक initप्रक्रिया फिर चीजों को /etc/fstabवहां के मापदंडों के अनुसार मापती है, जिसका अर्थ है आमतौर पर रीड-राइट को रूट विभाजन को फिर से बढ़ाना।
गोल्डीलॉक्स

1
इसके अलावा कर्नेल हार्डकोड रूटीन के साथ संकलित किया जा सकता है जो सक्रिय विभाजन पर कुछ विशेष फ़ाइलों की तलाश करता है जो पहले से ही माउंट नहीं है। FreeBSD लोडर उस तरह से काम करता है।
कोंडायबस

लिनक्स पर @ कोंडायबस LILO भी कर्नेल को कुछ निश्चित ब्लॉक संख्या पर लोड करने के लिए हार्डकोड किया गया है
phuclv

3

fstabयदि आप कुछ गैर-डिफ़ॉल्ट माउंट विकल्प निर्दिष्ट करना चाहते हैं, तो एक प्रविष्टि की आवश्यकता है। हालाँकि, आजकल के साथ systemd, एक सही कर्नेल डिवाइस और फ़ेसटाइप fstabअनावश्यक हैं। आप रूट प्रविष्टि को कुछ इस तरह से बदल सकते हैं:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

और माउंट विकल्प अभी भी systemd द्वारा सम्मानित किए जाते हैं।

आप /dev/sdz1खराब यूयूआईडी को छोड़कर किसी भी खराब डिवाइस नाम का उपयोग कर सकते हैं । खराब यूयूआईडी के साथ संदेश को बूट पर प्रिंट किया जाएगा: Failed to start Remount Root and Kernel File Systemsलेकिन सिस्टम बूट वैसे भी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.