मुझे USB हार्ड ड्राइव से लिनक्स कर्नेल बूट करने के लिए ग्रब को कैसे कॉन्फ़िगर करना चाहिए?


17

मेरे पास बाहरी परिक्षेत्र में एक लैपटॉप हार्ड ड्राइव है जो मैं एक बड़े पेनड्राइव के रूप में उपयोग करता हूं। एक अतिरिक्त मोड़ के लिए, मैंने इस पर लिनक्स स्थापित किया है, इसलिए मैं अपनी पसंद के वितरण के साथ किसी भी मशीन को बूट कर सकता हूं (उदाहरण के लिए डेटा रिकवरी या एक b0rked सिस्टम की मरम्मत या बस पूर्वस्थापित विंडोज को नष्ट किए बिना एक उधार लैपटॉप का उपयोग करके)। समस्या यह है कि, हार्डवेयर कॉन्फ़िगरेशन के आधार पर, विभिन्न रास्तों के तहत USB हार्ड ड्राइव दिखाई दे सकती है। ग्रब कॉन्फ़िगरेशन के लिए मैं अभी उपयोग (hda0,0)करता हूं क्योंकि यह उस डिवाइस के सापेक्ष है जिसे ग्रब से लॉन्च किया गया था। मेरे पास UUID प्रविष्टियाँ हैं /etc/fstab। मैं rootwaitकर्नेल मापदंडों में भी निर्दिष्ट करता हूं ताकि यह डिवाइस को माउंट करने की कोशिश करने से पहले यूएसबी सबसिस्टम का निपटान करने के लिए इंतजार करे।

मुझे कर्नेल को क्या पास करना चाहिए root=? वर्तमान में एक बार पेनड्राइव से बूट करें, डिबग संदेशों को देखने के लिए देखें कि /dev/sdXडिवाइस को कर्नेल द्वारा यूएसबी ड्राइव को क्या सौंपा गया है, फिर ग्रब कॉन्फ़िगरेशन को रिबूट और संपादित करें। मैं Boot from USB hard driveBIOS में सक्षम करने और आंतरिक हार्ड ड्राइव की तुलना में उच्च प्राथमिकता पर सेट करने के अलावा पीसी पर कुछ भी नहीं बदल सकता ।

विभिन्न initrd जनरेटिंग स्क्रिप्ट्स हैं, जो रूट डिवाइस पथ में UUID के लिए समर्थन शामिल हैं, दुर्भाग्य से Gentoo देशी एक (जेनकबर्न) समर्थन नहीं करता है rootwaitऔर मेरे पास दूसरों का उपयोग करने की कोशिश में कोई भाग्य नहीं था।

बूट प्रक्रिया इस तरह से होती है ( यह विंडोज में काफी समान है ):

  1. BIOS बूट डिवाइस को चुनता है और जो भी इसका एमबीआर है (जो ग्रब स्टेज -1 होता है) लोड करता है।
  2. ग्रब लोड यह उस डिवाइस से कॉन्फ़िगरेशन और स्टेज -2 फाइल है जिसे उसने सेट किया है root, (hd0)डिवाइस के लिए इसे BIOS से लोड किया गया था।
  3. ग्रब लोड करता है और एक कर्नेल शुरू करता है (अभी भी वही नंबरिंग है, इसलिए मैं (hd0,0)फिर से उपयोग कर सकता हूं )।
  4. कर्नेल सभी अंतर्निहित उपकरणों को इनिशियलाइज़ rootwaitकरता है ( क्या यह अब जादू है)।
  5. कर्नेल उस विभाजन को मापता है जिसे इसे पारित किया गया था root(यह कर्नेल पैरामीटर है, ग्रब पैरामीटर नहीं)।
  6. init.dउपयोगकर्ता की बूटिंग प्रक्रिया शुरू करता है, जिसमें से बढ़ती चीजें शामिल हैं /etc/fstab

भाग 5 मुझे समस्याएं दे रहा है।

जवाबों:


6

मुझे लगता है कि इसका उत्तर root=LABEL=...या तो उपयोग करना चाहिए याroot=UUID=...

लेकिन आप संकेत करते हैं कि यह आपके लिए काम नहीं करता है। मैं यह देखने का सुझाव दूंगा कि क्या आपके initrd के कार्यों में कुछ समस्या है।


मेरे पास एक initrd नहीं है, यह पूरी समस्या है। जीनकबर्न "रूटवाइट" विकल्प का समर्थन नहीं करता है, और अन्य जेंटू के साथ काम नहीं करते हैं।
skolima

2

मुझे गलत समझा जा सकता है या संभवतः आपको गलत समझा जा सकता है, लेकिन बूट डिवाइस का विकल्प नहीं है जो कि मशीन के BIOS से कॉन्फ़िगर किया जाएगा?

मुझे लगता है कि यह USB ड्राइव को चुनने की बात होगी, जिसमें GRUB को इसके बूटलोडर के रूप में स्थापित किया जाएगा, और फिर यह चुनना होगा कि आप GRUB मेनू से कौन से डिस्ट्रो को बूट करना चाहते हैं।


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