अगर डिवाइस पर ग्रब स्थापित किया गया है तो मैं कैसे बताऊं?


37

मैं कैसे बता सकता हूं कि क्या डिस्क पर ग्रब स्थापित है, और यदि यह है कि इसकी सेटिंग्स क्या है (बिल्कुल, रूट पैरामीटर के लिए इसके पास क्या है)

मुझे सॉफ़्टवेयर RAID1 सरणियों में बहुत सारे डिस्क की जांच करने की आवश्यकता है, यह सुनिश्चित करने के लिए कि दोनों डिस्क में ग्रब स्थापित है, प्रत्येक डिस्क पर उचित रूट मान वाले ग्रब के साथ।


3
क्या आप नीचे दिए गए नए उत्तर को स्वीकार करने पर विचार कर सकते हैं? चूंकि स्वीकृत उत्तर अब तक पुराना है
rubo77

@ rubo77, मेरा उत्तर उस समय सही था, जब grub0.9x या उससे कम का उपयोग आम था और बहुत पहले इसका नाम बदल दिया गया था grub-legacy। यदि यह आपको परेशान करता है, तो मेरा सुझाव है कि विशेष रूप से एक नया प्रश्न पूछें grub2। वैकल्पिक रूप से, प्रत्येक प्रश्न और उत्तर को सही करने वाले अभियान का संचालन करें जो समय बीतने के साथ अप्रचलित हो गया है।
कैस

3
कोई अपराध नहीं। मुझे लगता है कि SO ज्ञान का आधार है और समय के साथ बदलने वाला है। एक बार पुराना उत्तर अपडेट कर दिया जाना चाहिए।
रुब77 7

जवाबों:


28

अद्यतन करें:

यह उत्तर 2009 से है और ग्रब-लीगेसी पर लागू होता है, ग्रब 2 पर नहीं।

आप fileएमबीआर में GRUB की पहचान करने के लिए उपयोग कर सकते हैं । जैसे

# file -s /dev/sda
/dev/sda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3
, stage2 address 0x2000, stage2 segment 0x200; partition 1:
ID=0xfd, starthead 1, startsector 63, 1044162 sectors; partition
2: ID=0x82, starthead 0, startsector 1044225, 1028160 sectors;
partition 3: ID=0xfd, starthead 0, startsector 2072385,
1951447680 sectors, code offset 0x48

root=परमाटर एमबीआर, जो GRUB के दशक में संग्रह किया गया है में संग्रहीत नहीं है menu.lstफ़ाइल जो एक फाइल सिस्टम (पर संग्रहीत है आम तौर पर जड़ FS की / बूट / grub निर्देशिका या / बूट फाइल सिस्टम के कोड़ना निर्देशिका में - लेकिन हमेशा नहीं, यह कहीं भी हो सकता है)।

आपको ऊपर फ़ाइल के आउटपुट को पार्स करना होगा, यह निर्धारित करें कि फ़ाइल किस डिस्क / पार्टीशन menu.lstपर है, इसे माउंट करें, इसे पढ़ें और इसमें पार्स करें। आप यह भी जानना चाहेंगे कि ग्रब / डिफॉल्ट फाइल में यह जानने के लिए कि कौन सा ग्रब मेनू प्रविष्टि डिफ़ॉल्ट है, क्योंकि संभवत: वह रूट = पैरामीटर है जिसमें आप सबसे अधिक रुचि रखते हैं।


उस स्थिति में मुझे यह सुनिश्चित करने के लिए एक तरीका चाहिए कि ग्रब मेनू की तलाश में है। उचित स्थान पर ... कहीं न कहीं बूट लोडर को यह बताना होगा कि उसे किस डिस्क और पार्टीशन पर जाना है ताकि वह बूट मेनू प्राप्त कर सके।
DrStalker

वहाँ भोजन के मुख पृष्ठ पर भोजन के बारे में उपयोगी जानकारी का एक बहुत कुछ है gnu.org/software/grub , भोजन विकी grub.enbug.org , और विकिपीडिया पर en.wikipedia.org/wiki/GRUB
cas

8
यह grub2 के साथ सही नहीं है। इसके बजाय @ बेरीफाक का जवाब देखें।
पॉल टॉम्बलिन

52

वैकल्पिक विधि

file -sउबंटू ल्यूसिड में मेरे लिए काम नहीं किया क्योंकि मेरी फाइल कमांड की मैजिक फाइलें पुरानी थीं । ऐसा करने का एक और तरीका यदि आपकी मैजिक फाइलें GRUB परिवर्तनों के साथ नहीं पकड़ी गई हैं, तो ddकमांड का उपयोग करके डिवाइस के पहले 512 बाइट्स की जांच करना है :

user@host:~$ sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
 Error

यह ddकमांड के आउटपुट को कमांड के माध्यम से भेजता है और stringsइस प्रकार अनपेक्षित वर्णों को हटा देता है (ट्रांसफर के आँकड़े छूट जाते हैं /dev/null)।

यदि आपको कोई संदेश दिखाई देता है जो GRUB तब प्रदर्शित होता है जब यह विफलता का सामना करता है तो आपको ग्रब स्थापित हो गया है।

इस पासवर्ड संरक्षित पोस्ट में जवाब देने के लिए ubuntuforums.org पर louib पर हैट टिप: http://ubuntuforums.org/showthread.php?t=363372

जिज्ञासु के लिए यह वही है जो मुझे मिला है file -s:

user@host:~$ sudo file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 20
48, 337211392 sectors; partition 2: ID=0x5, starthead 254, startsector 337215486, 1434214
6 sectors, code offset 0x63

विशेष रूप से वहाँ GRUB के बारे में कुछ भी नहीं है।


5
सटीक। स्वीकृत उत्तर ने मेरे लिए कई मशीनों पर काम नहीं किया, लेकिन आपका किया।
सेरिन

13
स्वीकृत उत्तर 2009 में लिखा गया था और (जैसा कि मेनू के उल्लेख से स्पष्ट होना चाहिए। grub.cfg के बजाय) grub1 उर्फ ​​"ग्रब-विरासत" के लिए था। स्पष्ट रूप से तब से चीजें बदल गई हैं, और ग्रब 2 एमबीआर में एक पहचानकर्ता नहीं रखता है। अगर यह आपके लिए कुछ मशीनों पर काम करता है, लेकिन दूसरों पर नहीं, तो इसका मतलब है कि आपके पास कुछ पर grub1 और दूसरों पर grub2 होगा।
कैस

1
स्पष्टीकरण के लिए धन्यवाद क्रेग। मैंने जिस सिस्टम को मूल रूप से file -sग्रब-पीसी का उपयोग करने की आज्ञा दी थी, वह स्पष्ट रूप से GRUB2 है, इसलिए ऐसा लगता है कि आप आंशिक रूप से सही हैं। हालाँकि, मैं file -sGRUB 0.97 पर चलने वाली कुछ अन्य प्रणालियों पर चला गया और कुछ पर यह काम किया जबकि अन्य पर नहीं। इन प्रणालियों के बीच का अंतर मैजिक फाइलों में उन संख्याओं में था जो फाइल कमांड के साथ आते हैं। मैजिक नंबर फ़ाइलों की स्वैपिंग ने पुष्टि की कि गैर-कार्य प्रणाली से परिभाषाएं कार्य प्रणाली को विफल करने का कारण बनीं।
19 मई को बेरीफकह

7

आप grub-emuउस मेनू को देखने के लिए उपयोग कर सकते हैं जो ग्रब दिखाएगा जब मशीन अगले रिबूट करता है।

$ sudo apt-get install grub-emu
$ sudo grub-emu

मेरे डेस्कटॉप मशीन पर मेनू को उम्मीद के मुताबिक प्रदर्शित किया गया था, हालांकि अगर मैं वास्तव में एक कर्नेल को बूट करने का नाटक करता हूं तो मुझे "ऐसी कोई डिवाइस नहीं" त्रुटि मिली। मुझे लगता है कि अपेक्षित व्यवहार है।

मेरे DigitalOcean VPS पर ग्रब मेनू में कोई प्रविष्टियाँ प्रदर्शित नहीं की गई थीं, हालाँकि सर्वर ने वास्तव में ठीक रीबूट किया था। (यह 2013 का वीपीएस है, इसलिए आपका माइलेज अलग हो सकता है।)

दौड़ते समय कुछ नोट grub-emu:

  • एक्स-विंडो में, यदि आप ग्रब के साथ इंटरैक्ट करना चाहते हैं, तो आपको अपने कीबोर्ड पर उस टर्मिनल पर ध्यान केंद्रित करने की आवश्यकता है, जहां से आप ग्रब-एमू भागे हैं, न कि उस विंडो पर, जो पॉप-अप हुई।
  • आप cतब टाइप करके एमुलेटर से बाहर निकल सकते हैं exit
  • बाहर निकलने के बाद, आपका टर्मिनल एमुलेटर खराब स्थिति में हो सकता है (जैसे कि एन्टर नई लाइन पर प्रदर्शित नहीं होगा)। टाइप करके ठीक करें reset। (चिंता न करें कि यह आपकी मशीन को पुनः आरंभ नहीं करेगा। यह आपके टर्मिनल को साफ कर देगा।)

cइसके बाद टाइप exitकरना मेरे लिए कारगर नहीं रहा।
फहीम मीठा

1
सुनिश्चित करें कि आपके पास मूल टर्मिनल पर ध्यान केंद्रित है जो ग्रब विंडो को जन्म देता है न कि ग्रब विंडो को स्वयं (मुझे यह महसूस करने में एक सेकंड लगता है)
मादिवद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.