क्या Initramfs / etc / fstab का उपयोग करता है?


20

जिस तरह से मैं इसे समझता हूं, initramfs "वास्तविक" रूट फाइल सिस्टम को लोड करने के लिए जिम्मेदार है।

अब, दो स्थान हैं जहाँ हम उस मूल को परिभाषित करते हैं। पहले हमने एक प्रविष्टि रखी /etc/fstab। दूसरा, हमने डिवाइस को कर्नेल बूट कमांड उदा पर रखा root=/dev/sda1

रूट फाइलसिस्टम कहाँ है, यह निर्धारित करने के लिए कौन सा initramfs उपयोग करता है? यदि यह रूट कर्नेल पैरामीटर का उपयोग करता है, तो हमारे पास प्रविष्टि क्यों है /etc/fstab? दूसरा विकल्प, (यह पढ़ता है /etc/fstab), काफी अतार्किक है क्योंकि /etc/fstabफ़ाइल बहुत रूट डिवाइस पर है जिसे initramfs पहले स्थान पर माउंट करने की कोशिश कर रहा है।

बहुत भ्रामक सामान।

जवाबों:


15

जैसा कि आपने कहा, initramfs का उद्देश्य "वास्तविक" रूट फाइलसिस्टम को माउंट करना है (यह अन्य चीजें भी कर सकता है, लेकिन यह सामान्य कार्य है)।

Initramfs के बिना, कर्नेल सामान्य रूप से एक विभाजन को रीड-ओनली के रूप में माउंट करेगा और फिर नियंत्रण को पास करेगा /sbin/init। इनट्राम्राम्स इस कार्य को केवल कर्नेल से लेता है, आमतौर पर जब रूट फाइल सिस्टम सामान्य विभाजन नहीं होता है (mdraid, lvm, एन्क्रिप्टेड, आदि)।

अब, initramfs पर पृष्ठभूमि से अलग, /etc/fstabआपका रूट फाइल सिस्टम पर रहता है। जैसे, जब initramfs लॉन्च किया जाता है, तो वह रूट फाइलसिस्टम नहीं होता है, और इसलिए यह fstab (चिकन और अंडे की समस्या) तक नहीं पहुंच सकता है।
इसके बजाय हमें initramfs का उपयोग करने के लिए कर्नेल बूट तर्कों में एक पैरामीटर पास करना होगा। आम तौर पर यह कुछ इस तरह है root=/dev/sdX। हालाँकि, यह यह भी पता लगाने के लिए कुछ कर सकता है कि आपका रूट डिवाइस कहाँ है, और इसलिए इसका कोई पैरामीटर नहीं है। चूंकि यह सिर्फ सॉफ्टवेयर है (आमतौर पर एक स्क्रिप्ट), यह वास्तव में कुछ भी कर सकता है जो रूट डिवाइस को माउंट करना चाहता है।

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


तो, आप कह रहे हैं कि वास्तविक रूट फाइलसिस्टम के अंदर / sbin / init / etc / fstab में विकल्पों का उपयोग करके फिर से रूट को रिमूव करेगा?
अहमद गोनीम

3
हाँ। आमतौर पर एक साधारण के माध्यम सेmount -o remount,rw / । यह उस उपकरण को नहीं बदलेगा जो माउंट किया गया है, लेकिन यह माउंट पर विकल्पों को बदल देगा। मैन पेज से:After this call mount reads fstab (or mtab) and merges these options with options from command line
पैट्रिक

यदि हम grub2 कमांड लाइन का उपयोग कर रहे हैं तो हम कर्नेल बूट तर्कों में एक पैरामीटर कैसे पास करते हैं? मेरा सिस्टम किसी कारण से ग्रब मेनू नहीं दिखाता है।
अंतर्ज्ञान

@intuited आपको एक नया प्रश्न पूछना चाहिए। टिप्पणियाँ प्रश्नोत्तर के लिए जगह नहीं हैं
पैट्रिक

lsinitramfs /boot/initrd* | fgrep fstabऔर आश्चर्य की बात है, initramfs में fstab फ़ाइल होती है, कम से कम मेरे लिए।
Youfu 3

2

यह हो भी सकता है और नहीं भी। जैसा कि Initramfs का निर्माण विभिन्न तरीकों से किया जा सकता है (कर्नेल इसे लोड करता है और /initजो कुछ भी करता है उसे चलाता है)। हालांकि, एक पैरामीटर का उपयोग करना अधिक सामान्य है, क्योंकि यह अधिक लचीलेपन की अनुमति देता है - अर्थात यदि कुछ परिवर्तन आप बस बूट प्रविष्टि को संपादित कर सकते हैं और चीजें काम करती रहती हैं। बिलिन हार्डकोडेड रूट के साथ, यह जरूरी नहीं होगा।

Fstab प्रविष्टि को अभी भी किसी भी तरह से आवश्यक हो सकता है क्योंकि यह अन्य चीजों को भी निर्धारित करता है, जैसे कि माउंट विकल्प (जिनमें से कुछ को बदल दिया जा सकता है) और fsckआदेश। इसके अलावा, भले ही यह पूरी तरह से शानदार था (और अगर Initramfs इसे संभालता है, तो यह बिना काम कर सकता है), मैं अभी भी एंट्री को पूर्णता के लिए वहीं रखूंगा।


1

आप स्थिर गति के रूप में / etc / fstab पर विचार कर सकते हैं, यह केवल इस तरह के कार्य को करने का एक तरीका है, लेकिन केवल यही नहीं, वास्तव में, कमांड माउंट को चलाते हैं, और आप बहुत सारे फाइल सिस्टम को देखते हैं जो fstab में गायब हैं। इस तरह के एक udv और udisk की सेवा "/" / fstab फ़ाइल को अनदेखा करते हुए "ऑटोमाउंटिंग" का अधिकांश प्रबंधन करती है ...

तो, अगर कुछ आरोहित है या नहीं, तो उसका / etc / fstab से कोई लेना-देना नहीं है।

initramfs यह केवल एक अस्थायी रूटफुट है जिसका उपयोग बूट प्रक्रिया के दौरान किया जाता है जब तक कि "true" रूटफुट आरोहित नहीं हो जाता है, इसलिए initramfs को / etc / fstab पर क्यों होना चाहिए?

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