जब एक "प्रतिस्थापन" वितरण में चुरोट किया जाता है, तो कौन सी खरीद, एसआईएस आदि को बाइंड-माउंटेड (या नहीं) होना चाहिए?


9

एक अन्य प्रश्न का यह उत्तर मूल रूप chrootसे एक और लिनक्स वितरण में प्रवेश करने के लिए उबलता है ताकि मुख्य रूप से अपने प्रतिबंधित (लेकिन अपूरणीय) माता-पिता के प्रतिस्थापन के रूप में उपयोग किया जा सके। चलने से पहले सुझाए गए कार्य chroot, जिन्हें मैं बेहतर समझना चाहता हूं, वे हैं:

cp /etc/resolv.conf etc/resolv.conf
cp -a /lib/modules/$(uname -r) lib/modules
mount -t proc archproc proc
mount -t sysfs archsys sys
mount -o bind /dev dev
mount -t devpts archdevpts dev/pts
  • नकल resolv.confस्पष्ट है (नेटवर्क / इंटरनेट एक्सेस), जबकि मुझे यकीन नहीं है कि modules- यह वास्तव में अनावश्यक लग रहा था जब chrootएक स्टेज 3 जेंटू सिस्टम में प्रवेश किया गया, ठीक?
  • लेकिन क्यों कर रहे हैं proc, sysऔर dev/ptsउपयोग करने के बजाए remounted बाँध पर लगे? इस स्थिति में वास्तविक अंतर क्या है , जो "अधिक सही" है?
  • यह विधि बाँध-माउंट procऔर dev, लेकिन न तो dev/ptsहै और न ही sysसब पर रखा जाता है। इसके अतिरिक्त यह /etc/{hosts,fstab}नए रूट पर कॉपी करता है। क्या इसका कोई मतलब है? क्या मुझे भी शामिल नहीं करना चाहिए /etc/mdadm.conf?

1
यह ज्यादातर समान होना चाहिए; नियमित फाइल सिस्टम पर विचार करें: उन्हें दो बार माउंट नहीं किया जाना चाहिए (जब तक कि वे क्लस्टर-अवगत नहीं हैं) फिर भी कर्नेल ठीक यही करता है; इसलिए यह अनिवार्य रूप से आंतरिक रूप से एक बाँध माउंट की तरह संभाला जाता है।
फ्रॉस्टचुट्ज़

जवाबों:


9

DNS को खोने के लिए /etc/resolv.conf की नकल की जाती है।

/ lib / मॉड्यूल को कॉपी किया जाता है क्योंकि चुरोट को सेट करने के समय कुछ हार्डवेयर घटक का उपयोग करना आवश्यक हो सकता है, जिसकी आवश्यकता नहीं है। आपको यह याद रखना चाहिए कि आपके ओपी में संदर्भित मूल प्रश्न आर्क लिनक्स के साथ एनएएस ओएस के प्रतिस्थापन की चिंता करता है। इस प्रकार आपको ईथरनेट के लिए ड्राइवरों की आवश्यकता होगी, संभवतः वायरलेस, विभिन्न यूएसबी घटकों, और इसी तरह। / Lib / मॉड्यूल फ़ोल्डर की प्रतिलिपि बनाना यह सुनिश्चित करता है कि नया वातावरण अपने भविष्य के कार्यों का सामना करने में सक्षम होगा।

आप वास्तव में फिर से बढ़ते बनाम बाइंड-माउंटिंग के बारे में सही हैं। Chroot पर आर्क लिनक्स विकी पेज उपयोग फिर से बढ़ते और बाँध-बढ़ते आपके निर्देशानुसार पोस्ट आप का उल्लेख करने के जवाब के अनुसार, करता है:

cd /mnt/arch
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount -t devpts pts dev/pts/

(मुझे लगता है कि यह आपकी पंक्तियों के सिंटैक्स को दिखाता है, इस पोस्ट से कॉपी किया गया है , गलत है: माउंट किए जाने वाले देव माउंट बिंदु से पहले होता है)।

हालांकि, चुरोट पर उबंटू आदमी पेज एक अलग कहानी बताता है:

sudo mount -o bind /proc /var/chroot/proc

यहां / खरीद बाइंड-माउंटेड है, न कि री-माउंटेड।

मैंने वास्तव में दोनों चीजों की कोशिश की है, और एक संक्षिप्त परीक्षण चलाने के बाद, मैं किसी भी अंतर को नोटिस करने में असमर्थ रहा हूं। एक परीक्षण से ज्यादा नहीं, माना, और मैं इस तरह अपने मामले को यहां रखूंगा कि इससे ज्यादा फर्क नहीं पड़ना चाहिए।


6
  • /etc/resolv.conf- आपको DNS अनुरोधों को हल करने के लिए इस फ़ाइल की आवश्यकता है। यह कुछ परिस्थितियों में आवश्यक नहीं है:

    1. डीएचसीपी क्लाइंट चेरोट में उपलब्ध है, यह निष्पादित हो जाता है और डीएचसीपी सर्वर उपयुक्त जानकारी देता है (जो आमतौर पर मामला है)।

    2. /etc/resolv.confचेरोट के अंदर से आप नेटवर्किंग (या सामान्य रूप से निर्भर करने वाले सामान्य अनुप्रयोगों से DNS प्रश्न बनाना) में दिलचस्पी नहीं रखते हैं ।

  • /lib/modules/$(uname -r)- अगर आप सक्रिय कर्नेल के लिए किसी अतिरिक्त मॉड्यूल को लोड करने की आवश्यकता हो सकती है, तो यह समझ में आता है। इसके बिना आप वर्तमान में जो कुछ भी चल रहा है, उससे चिपके रहेंगे। इसलिए यदि आप लंबे समय तक क्रोकेटेड सिस्टम को चलाने का इरादा रखते हैं, तो आपको शायद ऐसा करना चाहिए। दूसरी ओर, ऐसे मामले में आपको शायद pivot_rootइसके बजाय उपयोग करना चाहिए (जो कि आमतौर पर initrd अपने जीवन के अंत में करता है)। यदि आपको बस इसे करने की आवश्यकता है जैसे कि चिरोट से बूटलोडर को स्थापित करने के लिए, यह आवश्यक नहीं होना चाहिए (चूँकि सभी आवश्यक चालकों को आपके लिए लोड किया जाना चाहिए ताकि आप स्वयं चिरोट को करने में सक्षम हों)।

  • /procऔर /devबल्कि स्पष्ट है - इनमें बुनियादी सिस्टम इंटरफेस होते हैं।

  • /sysIIRC नहीं था कि व्यापक रूप से 2007 में वापस इस्तेमाल किया है जो स्लैकवेयर (जो अपने आप बल्कि रूढ़िवादी है) कैसे-दिनांकित है। इन दिनों आपका सिस्टम इसके बिना किसी तरह से विफल होने की संभावना है (उदाहरण के लिए एक बार कुछ प्रकार के हार्डवेयर को एन्यूमरेट करने की कोशिश करता है)।

  • /dev/pts- वर्षों में कई परिवर्तन थे कि /devपेड़ को कैसे संभाला जाता है। कुछ बिंदुओं पर उपकरणों /dev/ptsको नियंत्रित किया गया devfs- संभव समस्याओं की चर्चा के लिए यह LKML धागा देखें ।

  • बाइंड माउंटिंग - बाइंड माउंट्स के कुछ दिलचस्प पहलू हैं (बल्कि अच्छी तरह से mount(8)मैन पेज में समझाया गया है )। उदाहरण के लिए यदि आपके पास:

    /some/device on /x/a (rw)
    /x/a/A on /x/b (rw)
    

    और फिर /x/aकेवल पढ़ने के लिए, आप कुछ भी नहीं बदल पाएंगे /x/B। जो समझ में आता है, लेकिन पहली बार आपको आश्चर्यचकित कर सकता है। एक और अच्छा सवाल यह है कि /x/bउपरोक्त उदाहरण में आपके साथ क्या होना चाहिए umount /x/a। मेरे लिए यह स्पष्ट है कि आप अभी भी इसके नीचे के पेड़ तक पहुँच सकते हैं। इसलिए बाइंड माउंटिंग मुश्किल हो सकती है। कार्यात्मक रूप से, जब पूरे फाइल सिस्टम पर उपयोग किया जाता है, तो यह समान है।

  • अन्य चीजों से /etc/- यह निश्चित रूप से प्रासंगिक कॉन्फ़िगरेशन को कॉपी करने के लिए समझ में आता है जो उपयोग का है। प्रतिलिपि बनाई जा रही जैसे /etc/passwd, /etc/shadow, /etc/groups हो सकता है के लिए कोई मतलब है, साथ ही सर्वर कुंजी बनाने के sshd


दोनों उत्तर समान रूप से अच्छे हैं - इसलिए मैंने एक सिक्का उछाला, जिसे स्वीकार करने के लिए ...
तोबियस किंज़्लर

0

/procप्रक्रियाओं और sysपरिवर्तन कर्नेल मापदंडों का प्रबंधन या वर्तमान कर्नेल की जानकारी का उपयोग।

अब, इस बात को ध्यान में रखते हुए कि बाइंड का अर्थ एक अप्रत्यक्ष प्रकृति है, procको सर्वश्रेष्ठ समाधान के रूप में चेरोट के बाहर नहीं लगाया जाना चाहिए।

sysहो सकता है, लेकिन यह वर्तमान में चल रहे कर्नेल होस्ट पर निर्भर करता है, और इसे उसी तरह होना चाहिए dev, जैसे बाँध पर रखा गया हो।

/dev/ptsपहले से ही उपलब्ध हैं जैसे /devकि बाइंड-माउंटेड हैं, लेकिन चेरोट का एक हिस्सा हैं, इसलिए नए ptsको रिमूव करने की सिफारिश की जाती है mount -t devpts none /mnt/drive/dev/pts

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