पहले बूट के दौरान फाइलसिस्टम को अस्थायी रूप से अक्षम करें


14

मैं रास्पियन लाइट पर आधारित एक इन-हाउस रास्पबेरी पाई छवि बनाना चाहता हूं, जो पहले से ही सही लोकेल, टाइमज़ोन आदि के साथ कॉन्फ़िगर किया गया है। दुर्भाग्य से मेरे लिए, रास्पबियन छवियों की वर्तमान रिलीज़ स्वचालित रूप से फाइल सिस्टम का आकार बदल देती है, फिर रिबूट करें।

मैं फ़ाइल सिस्टम को आकार देने के झंझटों से बचना चाहता हूं, ताकि कभी भी होने वाले बदलाव को रोका नहीं जा सके। मैं जलने के बाद छवि को कैसे संपादित करूँगा जैसे कि स्वचालित रूप से स्वचालित फ़ाइल सिस्टम आकार बदलने के लिए अक्षम करना?

प्रभावों को स्पष्ट करने के लिए संपादित प्रतिवर्ती होना चाहिए; यह है, मैं चाहता हूँ कि मेरी अनुकूलित छवि पहले बूट पर विस्तारित हो।


यह आदर्श समाधान नहीं हो सकता है, लेकिन क्या आपने एक छोटे कार्ड 4 जीबी का उपयोग करने पर विचार किया है, जहां यह इस तरह की समस्या पेश नहीं करेगा।
स्टीव रॉबिलार्ड

2
दिलचस्प विचार .. एक छोटे कार्ड को जलाना, प्रभावी रूप से आकार को सीमित करना। मैं एक सीधा समाधान पसंद करूंगा लेकिन यह एक अच्छा विकल्प है। धन्यवाद
patricktokeeffe

2
यह बहुत कष्टप्रद है। मुझे यकीन है कि यह कुछ सरल सेल्फ-हॉर्सिंग बूट स्क्रिप्ट के माध्यम से किया जाता है, जिस तरह raspi-configसे पहली बूट में चलाया जाता है, और इसे अक्षम करना आसान होगा। मैं देख सकता हूं लेकिन मुझे एक नई छवि डाउनलोड करनी होगी, मेरे पास आखिरी मई है। कुछ घंटों में वापस जांचें।
गोल्डीलॉक्स

जवाबों:


13

एक दो भाग तंत्र है जो रास्पियन पर इसके लिए जिम्मेदारी लेता है; संभवत: सबसे अच्छा विचार दोनों भागों की देखभाल करना है यदि वे सक्षम हैं।

पहला यह है कि मूल /boot/cmdline.txtमें यह शामिल है:

init=/usr/lib/raspi-config/init_resize.sh

रूट विभाजन पर उस पथ के साथ एक स्क्रिप्ट का संदर्भ देते हुए, जिसे बूट में इनिट प्रक्रिया के रूप में उपयोग किया जाएगा । उस बिट के बिना, यह कर्नेल में निर्मित मान के लिए डिफ़ॉल्ट होगा /sbin/init, जो कि रास्पियन पर एक प्रतीकात्मक लिंक है /lib/systemd/systemd

उस हिस्से को हटाकर cmdline.txt, सिस्टम को सामान्य रूप से बूट करना चाहिए।

वह स्क्रिप्ट जो वास्तव में करती है , एसडी कार्ड पर विभाजन का आकार बदल देती है । यह विभाजन में फाइलसिस्टम का आकार बदलने से एक अलग प्रक्रिया है , 1 जो आगे होता है।

जिस तरह से होता है वह सिस्टम तुरंत सामान्य रूप से रिबूट किया जाता है (जो कि सिस्टमड के माध्यम से होता है) और एक init.dस्क्रिप्ट को जल्दी ट्रिगर करने के लिए सेट किया जाता है, जिसे दूसरे विभाजन से हटा दिया जाना चाहिए:

/etc/init.d/resizefs_once

और इसके लिए प्रतीकात्मक लिंक, जिसे भी हटाया जाना चाहिए:

/etc/rc3.d/S01resizefs_once

आप चाहें तो बाद में उपयोग के लिए एक प्रति रख सकते हैं, लेकिन raspi-configइसे फिर से आपके लिए बना सकते हैं (यह raspi-configशेल स्क्रिप्ट में एम्बेडेड है )। यदि यह वास्तव में चलता है, तो यह स्वयं को हटा देता है, इसलिए यह फिर से नहीं होगा।

यह जो भी करता है वह नए आकार के विभाजन में फाइलसिस्टम का आकार परिवर्तन करता है।

कोई नुकसान नहीं होना चाहिए अगर सिर्फ एक या दूसरे भाग होता है; पहले मामले में आप एक फाइलसिस्टम के साथ समाप्त होते हैं जो बढ़े हुए विभाजन को नहीं भरता है, दूसरे में कुछ भी नहीं होगा, क्योंकि फाइलसिस्टम पहले से ही विभाजन को भरता है।

यदि आप बाद raspi-configमें फाइलसिस्टम को बड़ा करने के लिए उपयोग करते हैं, तो यह विभाजन को तुरंत आकार देता है, फिर init स्क्रिप्ट सेट करता है (जैसा कि पहले ही उल्लेख किया गया है)।

cmdline.txtपहले विभाजन पर संपादन किसी भी कंप्यूटर पर सरल है क्योंकि यह VFAT विभाजन है। init.dफ़ाइल को निकालने के लिए एक सिस्टम की आवश्यकता होती है जो ext4 फाइल सिस्टम को एक्सेस और एडिट कर सके।

इसके बजाय दोनों कार्य कार्ड को जलाने से पहले छवि फ़ाइल में ही किए जा सकते हैं; जीएनयू / लिनक्स सिस्टम पर रास्पियन छवि को माउंट और संशोधित करने के लिए, यहां देखेंविंडोज के लिए एक समानांतर Q & A है

यह भी प्रतिवर्ती है, लेकिन आपको तंत्र के दोनों हिस्सों को वापस वर्णित करने की आवश्यकता होगी, क्योंकि पहले एक में स्वचालित रूप से दूसरे को शामिल करना शामिल नहीं है।


  1. हालाँकि उस स्क्रिप्ट का एक त्रुटि संदेश यकीनन उन शब्दों को भ्रमित करता है, जो यह दावा करते हैं कि यह रूट फाइलसिस्टम का आकार बदलने में विफल रहा है , जब यह वास्तव में करने में विफल रहा है , रूट फाइल सिस्टम के साथ विभाजन का आकार बदलने के लिए है। एक करने से दूसरे की पूर्ति स्वतः नहीं हो जाती।

1
टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
Ghanima

@ goldilock के अक्षम करने init=/usr/lib/raspi-config/init_resize.shसे /boot/cmdline.txtकाम करता है ubuntu भी संभोग और पर्याप्त सब अपने आप में लगता है पर। मैं एक 4gb ubuntu दोस्त छवि एक 32gb sdcard पर चमकती है और इसके मूल आकार आकार में विभाजन आकार पकड़े हुए है। Ubuntu दोस्त पर पहले बूट के बाद भी /etc/init.d/resizefs_onceऔर /etc/rc3.d/S01resizefs_onceन ही मौजूद है।
सिथ

बस पुष्टि करने के लिए, दोनों और फ़ाइल और लिंक को पुनर्स्थापित करना cmdline.txtऔर अगले बूट को सभी को अपने आप से आकार बदलने की अनुमति देगा या क्या मुझे मैन्युअल रूप से चलाना और चलाना होगा? init.drc3.draspi-config
ऑक्सीविवि

@Oxwivi यह होना चाहिए, हाँ। मैंने इस पूरी पोस्ट को स्पष्ट किया है और अंत में इसके बारे में एक स्पष्ट टिप्पणी की है।
गोल्डीलॉक्स

हाँ धन्यवाद। ध्यान दें, IDK किस संस्करण के बाद से लेकिन कम से कम नवीनतम संस्करण आपके द्वारा उल्लिखित स्क्रिप्ट संदर्भों को पूरा नहीं करता है cmdline.txt। मैंने रास्पियन छवि का उपयोग करके बूट किया systemd-nspawnऔर फिर भी cmdline.txtचीज़ को हटाने के बाद आकार बदलने के प्रयास में त्रुटि लॉग मिला ।
ऑक्सीविवि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.