मैं GRUB को EFI विभाजन में कैसे पुनर्स्थापित कर सकता हूं?


32

मैं GRUB 2 को फिर से स्थापित करना चाहता हूं और मुझे ये निर्देश मिले हैं: उबंटू लाइव सीडी या यूएसबी के साथ ग्रब 2 को कैसे सुधारें, पुनर्स्थापित करें, या फिर से इंस्टॉल करें । मेरे मामले में, EFI विभाजन में बूट लोडर स्थापित है। यदि मैं इस गाइड में दिए गए कमांड का उपयोग करता हूं, तो क्या GRUB को EFI विभाजन में स्वचालित रूप से पुन: इंस्टॉल किया जाएगा, या इसे रूट विभाजन में स्थापित किया जाएगा जहां Ubuntu स्थापित है? जाहिर है, मैं नहीं चाहता कि ऐसा हो।


3
दिए गए लिंक में दिए गए निर्देश केवल विरासत BIOS मोड में GRUB को फिर से स्थापित करने के लिए मान्य हैं, यह आपके मामले में काम नहीं करेगा। EFI BIOS मोड में GRUB को Ubuntu इंस्टालेशन पर पुनः स्थापित करने के लिए, कृपया मेरा उत्तर पढ़ें। :)
सीएल-नेटबॉक्स सेप

आपका बहुत बहुत धन्यवाद! :) मेरे पास कुछ सवाल हैं: जब मैंने अपने यूईएफआई सिस्टम में उबंटू स्थापित किया, तो मुझे बायोस में दो प्रविष्टियां मिलीं। वहाँ एक यूनिक ubuntu प्रविष्टि के लिए एक रास्ता है? एमबीआर विभाजन तालिका (इसलिए कोई ईएफआई या कोई अन्य बूट विभाजन) के मामले में, क्या मैं इसके अलावा एक ही कमांड का उपयोग नहीं कर सकता हूं: सुडो माउंट / देव / एसडी ** ** / मंट / बूट / एफ़आईआई?
जेनोसो सेप

आप के साथ दूसरी उबंटू प्रविष्टि को हटाने की कोशिश कर सकते हैं: sudo efibootmgr (सभी प्रविष्टियों की सूची) | sudo efi bootmgr -b <एंट्री-नंबर> -B .... और विरासत में GRUB को पुनर्स्थापित करने के लिए BIOS मोड में इन कमांड्स को निष्पादित करें: sudo Mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = = ×; ** = सिस्टम पार्टिशन)! :)
सीएल-नेटबॉक्स 10

बिल्कुल सही :) वैसे भी, एक यूईएफआई प्रणाली और एक ईएफआई विभाजन होने पर, जब मैं एक नया विंडोज इंस्टॉलेशन करता हूं, तो ग्रब ओवरराइड होने से बचने का एक तरीका है?
Generoso

ठीक है, Microsoft किसी और चीज़ के लिए नहीं बल्कि अपने स्वयं के उत्पादों की देखभाल करता है, इसलिए आप विंडोज को कोई नुकसान पहुंचाए बिना लिनक्स सिस्टम स्थापित कर सकते हैं - दुर्भाग्य से यह दूसरी तरह का मामला नहीं है - इसलिए जब आप इंस्टॉल करने के बाद विंडोज स्थापित करते हैं, तो उबंटू, आपको GRUB बूट लोडर को बाद में पुनर्स्थापित करना होगा। :)
cl-netbox

जवाबों:


54

इस तरह से EFI मोड में अपने Ubuntu इंस्टालेशन के लिए GRUB बूट लोडर को पुनर्स्थापित करें ...

उबंटू इंस्टॉलेशन मीडियम से बूट करें और 'बिना इंस्टॉल किए उबंटू ट्राई करें' चुनें।
(अपने स्थापित माध्यम को EFI मोड में बूट करें, सामने UEFI के साथ Ubuntu प्रविष्टि चुनें।)

लाइव डेस्कटॉप पर आने के बाद, एक टर्मिनल खोलें और इन कमांड्स को निष्पादित करें:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

नोट: sdX= डिस्क | sdXX= अफी विभाजन | sdXXX= सिस्टम विभाजन

GParted का उपयोग करने वाले विभाजन की पहचान करने के लिए, टूल को इंस्टॉलेशन माध्यम में शामिल किया गया है।
कमांड चलाने के बाद GRUB को अलग EFI विभाजन में स्थापित किया जाएगा।


+1 लेकिन आप उबंटू से ही इंस्टॉल क्यों नहीं करते?

1
@MarkYisri: बहुत-बहुत धन्यवाद! :) क्योंकि यह चीजों को भ्रष्ट किए बिना GRUB बूट लोडर को फिर से स्थापित करने का सबसे सुरक्षित तरीका है और अगर सिस्टम ठीक से बूट नहीं होता है ... तो ऐसा करने का एकमात्र तरीका है! :)
सीएल-नेटबॉक्स 13

1
इस समाधान में, 'ग्रब-इनस्टॉल' को कैसे पता चलता है कि इसे EFI मोड में स्थापित करना है?
user334639

3
महत्वपूर्ण बिंदु सही बूट-मोड में इंस्टॉलेशन मीडिया को बूट करना है, अगर हम पुनर्स्थापित करना चाहते हैं grub-efiतो हमें यूईएफआई-मोड में बूट करना होगा, अगर हम चाहते हैं कि हम पुनर्स्थापित करें कि हमें grub-pcविरासत-मोड में बूट करना है।
mook765

1
यह मेरे लिए एक परिवर्तन को छोड़कर काम करता है: मैंने किया था grub-install /dev/sdXX, अर्थात डिस्क नहीं, लेकिन ग्रिल स्थापित करने के लिए EFI विभाजन का उपयोग किया गया था और यह काम किया।
बतख डोजर्स

3

यह एकमात्र तरीका है जिसने मेरे लिए काम किया है: (सिस्टम: sdb8, बूट: sdb6, efi: sdb8)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

क्या करता --recheckहै? मैनुअल कहता है delete device map if it already exists?
MrCalvin

अगर मैं बूट-एंट्री को डिफॉल्ट कुछ अलग कहता हूं, जैसे --bootloader-id=Ubuntu_02कि बूट फेल। यह सिर्फ ग्रब कंसोल में बूट होता है ... कोई समाधान?
MrCalvin

हाँ। इसकी grub-install --recheckजरूरत है। इसने मेरे गैर-कार्यशील USB HDD EFI को ठीक कर दिया।
solsTiCe

2

निर्देशों के लिए @ सीएल-नेटबॉक्स के लिए धन्यवाद!

जब मैंने अपग्रेड किया (लिनक्स मिंट 18.2 सोन्या से 18.3 सिल्विया) तो मेरा सिस्टम बूट नहीं हुआ, इसलिए मैंने ऊपर दिए गए निर्देशों का पालन किया लेकिन फिर भी कोई सफलता नहीं मिली। मैंने देखा कि मेरी मशीन में एक अलग पार्टीशन / बूट है (संभवतः इसलिए कि मैं LVM का उपयोग कर रहा हूँ) इसलिए मेरी थोड़ी संशोधित प्रक्रिया थी:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

नोट: sdX = डिस्क | sdXX = efi पार्टीशन | sdXY = बूट विभाजन | sdXXX = सिस्टम विभाजन


मेरे पास एक उबंटू बायोनिक सिस्टम था, जिस पर मैंने गलती से rm -Rf / boot / efi किया था! मेरा सिस्टम अभी भी चल रहा था, इसलिए मैंने अंतिम दो कमांड (grub-install / dev / mapper / ubuntu - vg-root और update-grub) का उपयोग करने की कोशिश की। रिबूट, और सब कुछ पूरी तरह से काम करते हैं। पावि और धन्यवाद :)
रोएल वान डे पार

2

इसके अलावा, यदि ठीक होने के लिए लाइव सीडी से बूटिंग हो सकती है, तो आप grub-efi-amd64-bin पैकेज और लाइन को याद कर रहे हैं।

"grub-install --target=x86_64-efi /dev/sdb" 

त्रुटि संदेश के साथ विफल रहता है: "ग्रब-स्थापित: त्रुटि: /usr/lib/grub/x86_64-efi/modinfo.sh मौजूद नहीं है। कृपया --target या --directory निर्दिष्ट करें।"

इस मामले में इसे चेरोट के बाहर चलाएं

sudo apt get grub-efi-amd64-bin

और उसके बाद / usr / lib / grub / x86_64-efi को आरोह में शामिल करें।

BTW "/ dev / sdb" परम अप्रचलित है और इसे अनदेखा किया जा रहा है।


0

ci-netbox उत्तर के अलावा।
यदि आपका pendrive OS संस्करण डिस्क पर स्थापित है से मेल नहीं खाता है, तो ग्रब-इन को सही ग्रिड इंस्टॉलेशन की पहचान करने में कठिनाई हो सकती है:

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

उपयोग करने के लिए मैन्युअल रूप से इंस्टॉलेशन की पहचान करने का प्रयास करें

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

फिर ग्रब-इन को फिर से शुरू करें:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

यदि आप EFI विभाजन को खो देते हैं, तो इसे वापस पाना आसान है। आप "ईएफआई विभाजन (1)" प्रकार के साथ एक नया जीपीटी विभाजन बनाने के लिए उपयोग कर सकते हैं fdiskया partedइसके साथ प्रारूपित कर सकते हैं:

sudo mkfs.msdos /dev/sdX

फिर इसे माउंट करें और आप रन का अनुसरण कर सकते हैं:

sudo grub-install /dev/sdX

अन्य समाधानों की तरह।


0

इसलिए मेरा अनुमान है कि समस्या का कारण यह है कि Ubuntu इंस्टालेशन अगर fstab है तो efi विभाजन को माउंट नहीं कर रहा है। और अपडेट ग्रब। अद्यतन पर।

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