कैसे जांचें कि किस ड्राइव पर ग्रब 2 ने वास्तव में एमबीआर स्थापित किया है?


17

मैं एक डेबियन / निचोड़ प्रणाली पर हूं (कम से कम वुडी में वापस जाने के इतिहास के साथ) जिसे स्क्वीज़ अपग्रेड के हिस्से के रूप में ग्रब 2 में अपग्रेड किया गया था। सभी अच्छी तरह से काम करते हैं, लेकिन मैं डिस्क कॉन्फ़िगरेशन के साथ गड़बड़ करने वाला हूं।

वर्तमान में मशीन RAID1-ed /, / home और / boot विभाजन के साथ 2 80GB ड्राइव को चलाता है (किसी RAID1-ed "/ डेटा" के साथ ड्राइव की एक और जोड़ी और स्वैप की एक जोड़ी है, अगर कोई सोच रहा था कि स्वैप कहां है) , लेकिन मैं उन लोगों को नहीं छू रहा हूं)।

मैंने 2 130GB SSDs जोड़े हैं, उन्हें कम से कम 80GB ड्राइव पर विभाजन के रूप में बड़े होने के लिए विभाजित किया है, और उन्हें शामिल करने के लिए RAID1s को बढ़ाकर नए SSD ड्राइव पर स्विच करने का इरादा है, जो सिंक के लिए इंतजार कर रहा है, फिर पुराने को हटा रहा है सरणियों से ड्राइव तो बस एसएसडी बचे हैं (और फिर फाइल सिस्टम बढ़ रहे हैं)। लेकिन mdadm / ext3 तकरार इस सवाल के बारे में नहीं है ...

यह मुझे 2 अप्रचलित 80GB (IDE) ड्राइव के साथ छोड़ देगा, जिसे मैं मशीन से निकालना चाहता हूं। मेरी चिंता यह है कि उन्हें हटाने से कुछ महत्वपूर्ण एमबीआर उनके साथ हो जाएंगे। मैं यह कैसे सुनिश्चित करूँ कि मशीन बूट करने योग्य बनी रहे?

अधिक विशेष रूप से:

  • जब मैंने स्क्वीज़ को अपग्रेड किया, तो मुझे याद है कि वहाँ कुछ विकल्प प्रस्तुत किया गया था जिसके बारे में grub2 को ड्राइव करना चाहिए (मैं डिफ़ॉल्ट के साथ गया था, जो सभी ड्राइव था)। हालांकि उस समय SSDs मशीन में नहीं थे; मैं एसएसडी एमबीआर पर स्थापित करने के लिए ग्रब प्राप्त करने के लिए इसे फिर से कैसे कर सकता हूं? (मुझे लगता है कि यह कुछ पैकेज का dpkg-reconfigure है)।

  • मुझे कैसे पता चलेगा कि कौन से ड्राइव grub2 को लगता है कि यह स्थापित है? अच्छा दु: ख है कि लगभग 200 फाइलें / बूट / ग्रब / इन दिनों के तहत हैं! कहा देखना चाहिए ? इसके अलावा, यह थोड़ा अजीब लगता है कि /boot/grub/device.map.auto वर्तमान में केवल 3 ड्राइव को सूचीबद्ध करता है (80GB में से 2, लेकिन अन्य ड्राइव जोड़ी में से केवल एक, और SSD में से कोई भी नहीं)। मुझे यह कैसे पता चलेगा? ( अपडेट: यह एक लाल हेरिंग था; डिवाइस.मैप.ऑटो सालों पहले से एक अवशेष प्रतीत होता है; डिवाइस.मैप ग्रुब- mkdevicemap द्वारा अपडेट पर समझदार दिखता है। सोचिए इस क्षेत्र में मेरा व्यामोह एक पुराने मोबो के BIOS से उत्पन्न होता है जो होगा। उपकरण आदेश को GRUB द्वारा फुसफुसा कर देखा जाता है)।

परिणाम: सभी ठीक हो गए और मेरे पास अब दो पुरानी 80GB IDE ड्राइव हैं, और सभी फाइल सिस्टम के साथ RAID1-ed SSDs के साथ चल रहे एक तेज़ और तेज़ बूटिंग सिस्टम को उनके नए विभाजन आकारों तक आकार दिया गया है। "ग्रब पहेली का दूसरा अनुपलब्ध टुकड़ा" जिसकी मुझे तलाश थी, वह dpkg-reconfigure grub-pcसंकेत था जिसके लिए एमबीआर बनाए रखने के लिए डिस्क। हारून के जवाब ने वास्तव में मुझे आश्वस्त करने के लिए सबसे अधिक किया कि यह उम्मीद के मुताबिक काम कर रहा था, इसलिए उस जवाब को स्वीकार कर रहा था।

जवाबों:


17

MBR 512 बाइट्स है, इसलिए यह देखने का एक त्वरित तरीका है कि क्या GRUB है ...

dd if=/dev/sda bs=512 count=1 | xxd

यह एमबीआर को डंप करता है, मुझे बाइट 0x17F = 383 पर मेरा "GRUB" दिखता है।

dd if=/dev/sda bs=1 count=4 skip=383

जब मैं ऐसा करता हूं, तो यह आउटपुट के GRUBबाद ' ' प्रिंट करता ddहै।

आप इसे बैश forलूप या कुछ और ड्राइव पर जाने के लिए लपेट सकते हैं। यदि आप इसे मैन्युअल रूप से नहीं करना चाहते हैं।


4
बस एक मामूली जोड़ - क्योंकि GRUB की स्थिति संस्करण से संस्करण में बदलने की संभावना है, कोई भी उपयोग कर सकता है dd if=/dev/sda bs=1 count=512 | grep -aob GRUB। वह बूट सेक्टर के भीतर मार्कर की स्थिति लौटा देगा।
एलेसेंड्रो शांतििनी

16

बूट प्रक्रिया में कई चरण हैं (मैं एक पारंपरिक पीसी BIOS का वर्णन कर रहा हूं):

  1. BIOS बूट डिस्क के पहले सेक्टर (512 बाइट्स) को पढ़ता है।
  2. इस पहले सेक्टर का कोड आगे डेटा और कोड को एक निश्चित स्थान पर BIOS इंटरफ़ेस के माध्यम से पढ़ता है। यह BIOS इंटरफ़ेस केवल दो हार्ड डिस्क को उजागर करता है: डिस्क 0 वह जगह है जहां से पहला सेक्टर पढ़ा गया था, और डिस्क 1 एक और डिस्क है जो कि दो से अधिक होने पर आसानी से अनुमानित नहीं है। बूट सेक्टर में एक बाइट होता है जो यह इंगित करता है कि आगे डेटा किस हार्ड डिस्क पर है; यह डिस्क युक्त है /boot/grub
  3. पिछले चरण में लोड किया गया कोड विभाजन, फाइल सिस्टम और अन्य उच्च-स्तरीय धारणाओं को समझता है। डेटा में एक फाइल सिस्टम लोकेशन (यानी एक स्ट्रिंग जैसा (hd0)/boot/grub) शामिल है जो निर्धारित करता है कि grub.cfgग्रब मॉड्यूल को कहां ढूंढना है और कहां जाना है ।
  4. grub.cfg अमल किया जाता है, आमतौर पर एक मेनू दिखाने के लिए और एक ओएस बूट करने के लिए।

बूट सेक्टर द्वारा उत्पन्न किया जाता है grub-setup, आम तौर पर के माध्यम से आह्वान किया grub-install। बूट सेक्टर आपके grub-installया grub-setupकमांड लाइन पर (लिनक्स सिंटैक्स में) निर्दिष्ट की गई डिस्क पर समाप्त होता है । आप जाँच कर सकते हैं कि आपके पास डिस्क पर बूट सेक्टर है या नहीं file -s /dev/sda। चूंकि आप एक नई डिस्क जोड़ रहे हैं और इससे बूट करना चाहते हैं, इसलिए आपको grub-installनई डिस्क पर चलना होगा । grub-installएक ही डिस्क पर कई बार चलाना हानिरहित होता है।

मुश्किल हिस्सा ऊपर चरण 2 में है। यदि संभव हो, /boot/grubतो BIOS बूट डिस्क पर Grub (यानी डायरेक्टरी) लगाएं (या, दूसरी दिशा से आकर, अपने BIOS को उस डिस्क से बूट करने के लिए कहें जहां पर /boot/grubहै)। यह वह जगह है जहाँ device.mapखेलने में आता है। सुनिश्चित करें (hd0)कि इसमें शामिल डिस्क पर मैप किया गया है /boot/grub, फिर grub-installउस डिस्क पर चलाएं ।

यदि आपके दो डिस्क एक सॉफ़्टवेयर RAID-1 कॉन्फ़िगरेशन में हैं, तो आपके पास समान बूट सेक्टर होंगे। यह वांछनीय व्यवहार है: यदि एक डिस्क जो BIOS बूट डिस्क विफल रहती है, तो दूसरे से बूट करना सिर्फ काम करेगा (क्योंकि वे एक ही बाइट्स को समान प्रासंगिक स्थानों पर रखते हैं)। यदि आपने केवल कुछ विभाजनों को प्रतिबिंबित किया है, तो एक बूट सेक्टर स्थापित करने से केवल एक डिस्क प्रभावित होती है। दूसरी मिरर कॉपी वाली डिस्क के साथ जुड़ने के grub-installबाद, आपको दूसरी डिस्क पर फिर से चलना चाहिए ।device.map(hd0)/boot/grub

चरण 3 बहुत जटिल है, लेकिन आमतौर पर बॉक्स से बाहर काम करता है। चरण 4 पर, ग्रब UUID द्वारा फाइल सिस्टम का पता लगाता है या नामित फ़ाइलों की तलाश करता है, इसलिए आपको डिस्क को नामित करने के विभिन्न तरीकों के बारे में चिंता करने की आवश्यकता नहीं है।

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