आरोह, खरीद, एक चुरोट वातावरण में sys?


87

मैं कस्टम पिक पैकेज के साथ एक लिनक्स छवि बनाने की कोशिश कर रहा हूं।
मैं जो करने की कोशिश कर रहा हूं वह एक एक्सओ लैपटॉप पर उपयोग किए जाने वाले पैकेजों को सौंपने के लिए है, क्योंकि संकलन पैकेजों को वास्तविक एक्सओ हार्डवेयर पर वास्तव में लंबा समय लगता है, अगर मुझे उन सभी पैकेजों का निर्माण करना चाहिए जिनकी मुझे ज़रूरत है और बस फ्लैश करें XO की छवि, मैं समय और स्थान बचा सकता हूं।

जब मैंने कुछ पैकेजों को स्थापित करने की कोशिश की, तो यह खरीद, एसआईएस, देव निर्देशिकाओं को याद करने के कारण कॉन्फ़िगर करने में विफल रहा। इसलिए, मुझे अन्य स्थानों से पता चला कि मुझे मेजबान खरीद को "माउंट" करने की आवश्यकता है, ... मेरे चिरोट के वातावरण की निर्देशिका।

मैंने दो वाक्यविन्यास देखे और निश्चित नहीं है कि किसका उपयोग करना है।

मेजबान मशीन में:

  mount --bind /proc <chroot dir>/proc 

और एक अन्य वाक्यविन्यास (चुरोट वातावरण में):

  mount -t proc none /proc

मुझे कौन सा उपयोग करना चाहिए, और क्या अंतर हैं?


खबरदार: डिस्क उपकरणों तक पहुंच प्रदान करने का मतलब है कि आप ' chroot()' के कुछ लाभ खो देते हैं । विशेष रूप से, यदि आप सावधान नहीं हैं, तो निर्धारित फ़ाइल सिस्टम के उनके अनुभाग के बाहर की फाइलें पढ़ सकता है।
जोनाथन लेफलर

2
@ जोनाथन लेफ़लर: जो वह कर रहा है उसके लिए एक मुद्दे की तरह आवाज़ नहीं करता है।
जिफ़्रे

@JonathanLeffler एक रूट उपयोगकर्ता को क्रॉच में हमेशा वैसे भी चेरोट से बच सकते हैं।
लेटफॉर्फ़

जवाबों:


43

के लिए /procऔर /sys, मैं तुम्हें किसी भी विधि इस्तेमाल कर सकते हैं लगता है। वे दोनों विशेष फाइल सिस्टम हैं, इसलिए उन्हें किसी भी समय फिर से बनाया जा सकता है (बाइंड माउंट विधि मेजबान सिस्टम के समान सटीक माउंट का उपयोग करती है, जबकि दूसरी विधि एक नए माउंट का उपयोग करती है)। मैंने हमेशा गाइड में अनुशंसित माउंट को देखा है, इसलिए मैं इसका उपयोग करूंगा। जहाँ तक मुझे पता है, कोई वास्तविक महत्वपूर्ण अंतर नहीं है।

हालांकि, /devआमतौर पर एक tmpfs माउंट होता है जिसे udev द्वारा प्रबंधित किया जाता है, इसलिए इसे होस्ट मशीन पर वास्तविक समान फ़ाइल सिस्टम होना चाहिए। इसका मतलब है कि आपको बाइंड माउंट विधि का उपयोग करने की आवश्यकता होगी।

यदि यह चेरोट थोड़ी देर के लिए आसपास रहने वाला है, तो आप /etc/fstabचीजों को सरल बनाने के लिए इन प्रविष्टियों को मेजबान सिस्टम पर रख सकते हैं।


मैं पूछना चाहता हूं कि क्या यह मेजबान से किसी अन्य मशीन की खरीद / बिक्री की नकल करने (बंधने) का मतलब है? उन्हें उस मशीन से क्यों मिलना चाहिए?
रैनश

@ransh यह समझ में आता है कि अगर आप $ chrootdir / proc को बाँधते / खरीदते हैं, तो आपको सफल होने की संभावना होगी और दोनों सिस्टम से दोनों सिस्टमों के अंदर / खरीद की जा रही है; उदाहरण: चेरोट से आप देख सकते हैं कि क्या कोई कार्यक्रम होस्ट पर चल रहा है ... आदि
योना

हो सकता है कि sys typeफ़ाइल सिस्टम अब प्रकट नहीं होता है ( आज )?
174140

111

आर्क लिनक्स विकी पता चलता निम्न कमांड:

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/

2
वे भी ubuntu में मेरे लिए काम करने लग रहे थे।
isaaclw

4
मेरे मामले में (उबंटू भी) मुझे "माउंट-बिंद / देव / पीटीएस देव / पीटीएस" की भी आवश्यकता थी।
थॉमस

कृपया स्रोत का लिंक शामिल करें।
स्टायरोफोम मक्खी

@styrofoamfly जोड़ा गया।
gacrux

1
2019 के रूप में, ArchLinux विकि अब करता है --rbindके लिए sysऔर dev
साद मलिक

12

Gentoo हैंडबुक विशेष रूप से फिर से बढ़ते / proc और / dev के लिए इन दो आदेशों बाहर कहता है। मैंने कई बार उनका उपयोग किया है।

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

मुझे संदेह है / sys सिर्फ एक नियमित फ़ोल्डर है, इसलिए आपको एक कड़ी बनाने में सक्षम होना चाहिए।

ln /sys /mnt/chroot/sys

17
आप एक निर्देशिका (आमतौर पर) को हार्डलिंक नहीं कर सकते हैं जैसे कि आप / sys के लिए सुझाव देते हैं, और यदि आप एक सिमलिंक का उपयोग करते हैं तो जैसे ही आप चौराहा करेंगे यह टूट जाएगा।

उन्होंने systemd के आधार पर कुछ नए जोड़े हैं। शायद उन्हें जोड़ना एक अच्छा विचार है।
अज़प

1

यह इस लोकप्रिय प्रश्न में ध्यान देने योग्य हो सकता है, कि आर्क लिनक्स ने एक स्क्रिप्ट आर्क-चेरोट बनाया है ; डाउनलोडarch-install-scripts-15-1-any.pkg.tar.xz

यह आर्क-लिनक्स और मंज़रो दोनों में विभिन्न संबंधित समस्याओं का ख्याल रखता है , जहां मैंने इसका सफलतापूर्वक उपयोग भी किया है। संभवत: अधिक Arch- derivates तरह परवलय बस के रूप में अच्छी तरह से संगत हैं।

जबकि chrootद्वितीयक मंज़रो इंस्टॉलेशन में एक साधारण मानक आपको चलाने की अनुमति नहीं देगा

pacman --sync linux

(सिस्टम क्रैश के बाद सिल्वर बुलेट), लाइन को बदलकर

arch-chroot /run/media/*YOURSELF*/manja-disk2

आप के माध्यम से अपने माध्यमिक आर्क व्युत्पन्न स्थापना को ठीक करने में सक्षम हो जाएगा

pacman --sync linux

जादू की तरह। बैश स्क्रिप्ट arch-chrootका ध्यान रखता है /dev /sys /procऔर बहुत कुछ, जो मानक द्वारा अकेले छोड़ दिया जाता है chroot

इसे भी देखें: आर्क-चेरोट का उपयोग


-1

अन्य छद्म फाइलसिस्टम और tmpfs स्थान हैं। यह डेबियन पर है:

/dev/pts 
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb

यह माउंट करने के लिए ठीक होना चाहिए usbfs, rpc_pipefsऔर devptschroot के भीतर से छद्म फ़ाइल सिस्टम। मुझे लगता है कि चेरोट के लिए बाध्यकारी नहीं है , क्योंकि कर्नेल में नामस्थान की अवधारणा है, और वास्तव में चेरोट की खरीद में अलग-अलग चीजें डाल सकते हैं। /proc/proc

अपडेट: इस मेलिंग लिस्ट थ्रेड के अनुसार , / sys को बाइंड माउंटेड नहीं किया जाना चाहिए, खासकर अगर क्रोकेटेड प्रक्रियाएं अपने स्वयं के नेटवर्क नेमस्पेस का उपयोग कर रही हों।

सिस्टम का /varया /runचेरोट पर माउंट करना एक बुरा विचार है , अगर चेरोट का अपना पिड नेमस्पेस है।


अटकलें? सुपरयूज़र (और अन्य स्टैक-फ़ोरम) पर आमतौर पर बेहतर होता है, यदि आप अनिश्चित हैं, तो लिंक किए गए स्रोतों के साथ शोध या उत्तर दें। यह भ्रामक संकेत फैलाने से बचने के लिए है। खेद है अगर निराश और शुभकामनाएँ!
साइमन बी।

@SimonB। मैंने एक मेलिंग सूची के लिए एक लिंक जोड़ा है जो इस विचार का समर्थन करता है कि / sys को बांधना नहीं चाहिए।
ब्रायन मिंटन

Pid नाम स्थान के साथ, आप और अधिक उन्नत उपयोगकर्ता नाम स्थान सुविधाओं के बारे में बात कर रहे हैं जिन्हें हम आधुनिक लिनक्स कर्नेल (यानी "कंटेनर" पर आधारित हैं) पर पा सकते हैं, जबकि जब हम शब्द chroot का उपयोग करते हैं, तो हम पारंपरिक फ़ाइल नाम स्थान परिवर्तन का उल्लेख करते हैं ( और कुछ नहीं)।
जोहान बोले

-1

सबसे आसान तरीका पाश के लिए उपयोग करना है:

cd /

for i in proc sys dev; do mount -o bind $i /folder/$i; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.