'ग्रब रेस्क्यू>' क्रैश से पुनर्प्राप्त [बंद]


25

मूल रूप से AskUbuntu.com पर पोस्ट ...

AskUbuntu ने EOL (End of Life) संस्करणों के बारे में सवालों को बंद करने की नीति अपनाई है । उन्हें हटाने के लिए एक मुखर दल भी है। इस लोकप्रिय प्रश्न के संभावित नुकसान (342335 विचार) को रोकने के लिए, यहां एक संशोधित संस्करण दे रहा हूं। --- डॉक्साल्वेजर

"क्लासिक" प्रणाली ...

  • उबंटू 10.04 (ल्यूसिड लिंक्स) पर आधारित पिल्ला लिनक्स 5.2.8 (ल्यूसिड)
  • ग्रब 2 बूट लोडर

GRUB 2 कई *.modफाइलों (कर्नेल मॉड्यूल) को अंदर डालता है /boot/grub। इन फ़ाइलों को हटाने (यह सोचते हुए कि उन्हें ध्वनि फ़ाइलों को गलत तरीके से हटाया गया था) के परिणामस्वरूप रिबूट और प्रॉम्प्ट पर विफलता हुई grub rescue>

इस स्थिति में कैसे उबरें?


1
एक गूंगा प्रश्न की तरह लगता है .. जाहिर है कि आप या तो बैकअप से हटाए गए फ़ाइलों को पुनर्स्थापित करते हैं, या ग्रब को पुनर्स्थापित करते हैं (और पहले से ही कैसे करें इस बारे में बहुत सारे प्रश्न हैं)
psusi

कल के समाचार पत्र के रूप में पिछले अतीत को देखने के आँकड़े के रूप में प्रासंगिक हैं।
एंथन

अतीत के अखबारों ने अनगिनत अपराधों को हल किया है और दुनिया को एक बेहतर जगह बनाने वाले समस्या-समाधान के लिए बहुत कुछ जिम्मेदार है।
डोकलासवगर

यह मुझे लगता है कि डीवीडी से बचाव मोड में बूट करना और वहां से ग्रब को फिर से स्थापित करना शायद आदर्श होगा। यह संभवतः अधिकांश लोगों के लिए बहुत अधिक सीधा है क्योंकि उल्लेखित डेटा हानि पैकेज में फ़ाइलों तक ही सीमित होनी चाहिए।
ब्राचली

यह कहने के लिए नहीं कि मुझे नहीं लगता कि initrd से बाहर की गई विशिष्ट फ़ाइलों को मछली पकड़ने में कोई चतुराई नहीं है। मुझे लगता है कि यह लोगों को भ्रमित करने की संभावना है क्योंकि यह मदद करना है। बचाव / रिकवरी मोड में बूट करना एक अधिक सामान्य प्रक्रिया है।
ब्राचली

जवाबों:


43

यह उत्तर दूसरों के लिए है कि डॉकस्लेवगर का उत्तर काम नहीं करता है।

  1. मैंने lsसही हार्ड ड्राइव विभाजन को खोजने के लिए DocSalvager के उपयोग का अनुसरण किया । मेरे मामले में यह था (hd0,msdos5)
  2. फिर मैंने सामान्य ग्रब बूट लोडर स्क्रीन पर वापस जाने के लिए निम्न आदेशों को निष्पादित किया।

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. उबंटू में बूट करने के बाद मैंने टर्मिनल से निम्न कमांड के साथ ग्रब बूट लोडर की मरम्मत की।

    sudo grub-install /dev/sda 
    

कृपया इस प्रक्रिया के माध्यम से दृश्य चलने के लिए इस स्रोत का संदर्भ लें ।


6
मुझे खुशी है कि आप लोग इससे पहले तैनात थे
smac89

2
बिल्कुल सही - मैं बूट करने के लिए आवश्यक मदद! मैं sudo update-grubपहले भी भागा था grub-install, क्योंकि मेरा विभाजन लेआउट बदल गया था।
mwfearnley

insmod normalआदेश में कितना समय लगता है ? Enter दबाने के बाद मेरा ubuntu लटक गया। हालांकि यह Oracle VirtualBox में VM के रूप में 'रनिंग' है।
स्नार्क

1
अद्यतन: यह अंत में वापस आ गया है error: failure reading sector 0x8019a4 from 'hd0'तो मुझे लगता है कि यह सुंदर टर्मिनल है!
स्नार्क

महान जवाब!
ज़ैक

28

एक ग्रब बचाव दुर्घटना से उबरने ...

  • grub rescue>समर्थन नहीं करता है cd, cpया किसी भी अन्य फाइलसिस्टम की अपनी भिन्नता को छोड़कर आदेश देता है, lsजो वास्तव में एक प्रकार की findकमांड है।
  • तो पहले, /bootनिर्देशिका को vmlinuzऔर अन्य बूट छवि फ़ाइलों वाले विभाजन को ढूंढना था ...

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls बिना तर्क के इस प्रणाली पर चार विभाजन लौटाता है।
    • ls (hd0,4)/boot/bootविभाजन पर निर्देशिका नहीं मिलती है (hd0,4)
    • ls (hd0,3)/boot/bootविभाजन पर निर्देशिका नहीं मिलती है (hd0,3)
    • ls (hd0,2)/boot/bootविभाजन पर एक निर्देशिका मिलती है (hd0,2)और इसमें एक vmlinuzऔर अन्य बूट छवि फ़ाइलें होती हैं जो हम चाहते हैं।
  • grub rescue>प्रॉम्प्ट से मैन्युअल बूट करने के लिए ...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • विभाजन पर निर्देशिका rootका उपयोग करने के लिए सेट करें ।/boot(hd0,2)
    • ग्रब मॉड्यूल लोड करें linux
    • कर्नेल छवि का उपयोग करने के लिए उस मॉड्यूल को सेट करें vmlinuz-2.6.32-33-generic
    • छवि का उपयोग करने के लिए initrd (init RAM डिस्क) सेट करें initrd.img-2.6.32-33-generic
    • बूट लिनक्स।
  • एक करने के लिए इस जूते बिजीबॉक्स शीघ्र कमांडलाइन जो सभी बुनियादी फाइल सिस्टम आदेशों है ( और फिर कुछ! )।

  • फिर *.modफ़ाइलों को /boot/grubनिर्देशिका में वापस ले जा सकता है ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • सफल रिबूट!

यह भी देखें ...



1
Vmlinuz, ... बूट छवियां जिन्हें आप देख रहे हैं, वे शीर्ष-स्तरीय रूट फाइल सिस्टम में हो सकते हैं, इसलिए केवल स्लैश का उपयोग करके देखें। यह शीर्ष स्तर की निर्देशिका भी दिखाएगा। यदि बूट छवियां शीर्ष-स्तरीय रूट में नहीं हैं, तो आप निर्देशिकाओं के सबसे आशाजनक प्रयास तब तक शुरू कर सकते हैं जब तक आप उन्हें ढूंढ नहीं लेते। उदाहरण के लिए: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, आदि ..
DocSalvager

मेरे मामले में, दौड़ने के बाद ls (hd0,7)/boot, यह पता चलता है attempt to read or write outside of disk 'hd0'
डेज़ी

ड्राइव HD0 पर 7 से कम विभाजन हैं। यह भी हो सकता है कि ड्राइव पर कुछ अनअलोकेटेड स्पेस है जो किसी भी विभाजन का हिस्सा नहीं है।
DocSalvager

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