यहाँ कुछ संसाधन हैं:
"चेंजिंग रूट" या "चेरोटिंग" आपके फाइलसिस्टम के हिस्से पर ज़ूम करने के लिए एक विधि है, इसलिए, उदाहरण के लिए, /path
जो पूर्व में सुलभ था , का उल्लेख करेगा /mnt/path
। "रूट" अभिव्यक्ति "चेरोट" रूट फाइलसिस्टम को संदर्भित करता है /
, रूट उपयोगकर्ता को नहीं। (हालांकि आम तौर पर आपको रूट उपयोगकर्ता विशेषाधिकारों की आवश्यकता होगी ताकि क्रॉच करें।)
तैयारी
इस गाइड के सभी चरणों को रूट उपयोगकर्ता के रूप में प्रदर्शन करना होगा।
हमें लगता है कि आपकी हार्ड डिस्क / dev / sda1 पर है और इसका फ़ाइल एक्सटेंशन ext3 है। यदि आपको अपनी डिस्क का स्थान और फ़ाइल प्रकार पता नहीं है, तो इसका आउटपुट पढ़ें fdisk -l
।
सुनिश्चित करें कि आपके द्वारा बूट किए गए सिस्टम के आर्किटेक्चर (जैसे कि यह एक 32 बिट लाइवसीडी) है और आप जिस सिस्टम में प्रवेश करना चाहते हैं (जैसे यह आपकी हार्ड ड्राइव पर 32 बिट का इंस्टॉलेशन है) मैच। आप उपयोग करके बूट किए गए आर्किटेक्चर को निर्धारित कर सकते हैं uname -m
।
सुनिश्चित करें कि आपके द्वारा आवश्यक किसी भी कर्नेल मॉड्यूल लोड किए गए हैं।
यदि आपको इसकी आवश्यकता है तो अपना नेटवर्क सेट करें (जैसे, अपडेट किए गए पैकेजों को स्थापित करने के लिए)।
यदि आवश्यक हो तो अपने स्वैप विभाजन को प्रारंभ करें (जैसे, swapon /dev/sda3
)।
चुरोट का प्रदर्शन
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
यदि आपकी /boot
निर्देशिका आपके से भिन्न विभाजन पर है /
, और आप उस पर फ़ाइलों में हेरफेर करना चाहते हैं (जैसे, यदि आप GRUB के साथ काम कर रहे हैं, तो कर्नेल अपग्रेड करना, आदि), आपको उस विभाजन को माउंट करने की भी आवश्यकता होगी। यदि यह / dev / sda2 पर है और इसका फ़िलाइट ext2 है, तो करें:
mount -t ext2 /dev/sda2 /mnt/boot
इसी तरह आपके फाइलसिस्टम के किसी भी अन्य हिस्से ( /var
, /usr
) के लिए जो अलग-अलग विभाजनों पर रहते हैं , लेकिन जिनकी आपको पहुंच की आवश्यकता होती है। आम तौर पर जब आप कुछ ठीक करने के लिए चुरोटिंग कर रहे होते हैं, तो आपको / घर तक पहुंच की आवश्यकता नहीं होगी, इसलिए आपको इससे परेशान होने की आवश्यकता नहीं है।
(आपके द्वारा क्रियोट किए जाने के बाद फाइलसिस्टम माउंट करना भी संभव है, लेकिन यह पहले से करने के लिए अधिक स्मार्ट है। इसका कारण यह है कि जब आप इसे करते हैं, तो बाहर के / कर्नेल वातावरण को माउंट किए गए फाइल सिस्टम के बारे में नहीं पता होगा, इसलिए यदि आप भूल जाते हैं चेरोट से बाहर निकलने से पहले उन्हें umount कर दें, सिस्टम को पता नहीं चलेगा कि उन्हें बंद करना है या तो वह बंद हो जाता है या तो। यह उन फाइल सिस्टम को नुकसान पहुंचा सकता है।)
यदि आप अपना नेटवर्क सेटअप कर चुके हैं और इसे क्रॉओटेड सिस्टम में उपयोग करना चाहते हैं, /etc/resolv.conf
तो कॉपी करें ताकि आप डोमेन नामों को हल कर सकें:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
अब आप माउंटेड फाइल सिस्टम में जाने के लिए तैयार हैं:
chroot /mnt /bin/bash
(यदि यह एक त्रुटि देता है chroot: cannot run command '/bin/bash': Exec format error
, तो यह आमतौर पर इंगित करता है कि आपने एक आर्किटेक्चर (जैसे x86_32) के साथ बूट किया है और दूसरे (जैसे x86_64) में घूमने की कोशिश कर रहे हैं। समाधान एक LiveCD का उपयोग करना है जिसमें उसी आर्किटेक्चर का उपयोग करना है जिस सिस्टम को आप चाहते हैं। चुरोट में।)
इस बिंदु पर, आप अभी भी उस कर्नेल को चला रहे हैं जिसे आपने बूट किया था, लेकिन सभी रास्तों /path
का उल्लेख होगा कि क्या उपयोग किया जाता है /mnt/path
।
यदि आप GRUB के साथ कुछ भी कर रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपकी /etc/mtab
फ़ाइल अद्यतित है:
grep -v rootfs /proc/mounts > /etc/mtab
यह इस बिंदु पर सहायक भी हो सकता है:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
अपना गंदा काम करो
इस बिंदु पर, आप जो भी समस्या निवारण कर सकते हैं, उसे आप कर सकते हैं:
- अपने डिस्क के MBR पर GRUB का आकार दें
- एक भूल पासवर्ड रीसेट करें
- कर्नेल अपग्रेड करें (या डाउनग्रेड करें)
- अपने initramdisk का पुनर्निर्माण करें
- अपने / etc / fstab को ठीक करें
- अपने पैकेज प्रबंधक का उपयोग करके संकुल को पुनर्स्थापित करें
- जो कुछ
सफाई करना
जब आप समाप्त कर लें, तो सुनिश्चित करें कि सभी चल रहे कार्यक्रम बंद हो गए हैं। फिर चुरोट से बाहर निकलें:
exit
अब आपके द्वारा लगाए गए सभी विभाजनों को अनमाउंट करें:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
अंत में अपनी हार्ड ड्राइव को अनमाउंट करने का प्रयास करें:
umount /mnt
यदि आपको यह कहते हुए कोई त्रुटि मिलती है कि / mnt (या कोई अन्य विभाजन) व्यस्त है, तो इसका मतलब दो चीजों में से एक हो सकता है:
एक कार्यक्रम चुरोट के अंदर चल रहा था।
या अधिक बार: इस माउंट पर अभी भी एक माउंट पॉइंट मौजूद है। उदाहरण के लिए, / mnt / usr को अभी भी माउंट किया गया है जब अनमाउंट / mnt की कोशिश कर रहा है।
उत्तरार्द्ध मामले में, पहले अपमानजनक माउंट बिंदु को अनमाउंट करें। सभी वर्तमान माउंट बिंदुओं का अनुस्मारक प्राप्त करने के लिए, mount
बिना किसी पैरामीटर के साथ चलाएँ ।
आखिरकार:
reboot
chroot.sh
वाले प्रत्येक सिस्टम के मूल में एक स्क्रिप्ट को छोड़ने के लिए कहता हूं, जिसकी सामग्री कम या ज्यादा ऊपर मेल खाती है। जब मुझे लाइवसीडी या किसी चीज से उस सिस्टम में चेरोट करने की आवश्यकता होती है, तो मैं बस रूट फाइलसिस्टम को माउंट करता हूं और चेरोट स्क्रिप्ट चलाता हूं। सही आदेशों के लिए और अधिक उन्मत्त गुगली नहीं।