Jak mogę ponownie zainstalować GRUB na partycji EFI?


32

Chcę ponownie zainstalować GRUB 2 i znalazłem następujące instrukcje: Jak naprawić, przywrócić lub ponownie zainstalować Grub 2 z Ubuntu Live CD lub USB . W moim przypadku moduł ładujący jest zainstalowany na partycji EFI. Jeśli użyję poleceń zawartych w tym przewodniku, czy GRUB zostanie automatycznie ponownie zainstalowany na partycji EFI, czy też zostanie zainstalowany na partycji głównej, na której jest zainstalowany Ubuntu? Oczywiście nie chcę, aby tak się stało.


3
Instrukcje w podanym linku są ważne tylko w przypadku ponownej instalacji GRUB-a w starszym trybie BIOS, nie będzie to miało zastosowania w twoim przypadku. Aby ponownie zainstalować GRUB do instalacji Ubuntu w trybie EFI BIOS, przeczytaj moją odpowiedź. :)
cl-netbox

Dziękuję Ci bardzo! :) Mam kilka pytań: kiedy zainstalowałem Ubuntu w moim systemie UEFI, znalazłem dwa wpisy w bios. Czy istnieje sposób, aby mieć wpis w Ubuntu? W przypadku tabeli partycji MBR (więc nie ma EFI ani żadnej innej partycji rozruchowej), czy mogę używać tych samych poleceń, z wyjątkiem: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso

Możesz spróbować usunąć drugi wpis Ubuntu za pomocą: sudo efibootmgr (wyświetla wszystkie wpisy) | sudo efi bootmgr -b <numer_wpisu> -B .... i aby ponownie zainstalować GRUB w starszym trybie BIOS, wykonaj następujące polecenia: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = dysk | ** = partycja systemowa)! :)
cl-netbox 30.09.16

Idealnie :) W każdym razie, mając system UEFI i partycję EFI, czy jest sposób, aby uniknąć nadpisywania grub podczas wykonywania nowej instalacji Windows?
Generoso

Cóż, Microsoft nie dba o nic innego oprócz swoich własnych produktów, więc możesz instalować systemy Linux bez wyrządzania szkody systemowi Windows - niestety nie dzieje się tak na odwrót - więc kiedy instalujesz system Windows po zainstalowaniu Ubuntu, musisz później przywrócić program ładujący GRUB. :)
cl-netbox 30.09.16

Odpowiedzi:


54

Ponownie zainstaluj moduł ładujący GRUB do instalacji Ubuntu w trybie EFI w ten sposób ...

Uruchom komputer z nośnika instalacyjnego Ubuntu i wybierz „Wypróbuj Ubuntu bez instalacji”.
(Uruchom nośnik instalacyjny w trybie EFI, wybierz pozycję Ubuntu z UEFI z przodu.)

Po przejściu na pulpit Live otwórz terminal i wykonaj następujące polecenia:

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  

Uwaga: sdX= dysk | sdXX= partycja efi | sdXXX= partycja systemowa

Aby zidentyfikować partycje za pomocą GParted, narzędzie znajduje się na nośniku instalacyjnym.
Po uruchomieniu poleceń GRUB zostanie zainstalowany na osobnej partycji EFI.


+1, ale dlaczego nie instalujesz z samego Ubuntu?

1
@MarkYisri: Dziękuję bardzo! :) Ponieważ jest to najbezpieczniejszy sposób na ponowną instalację modułu ładującego GRUB bez uszkadzania rzeczy, a jeśli system nie uruchomi się poprawnie ... jedyny sposób, aby to zrobić! :)
cl-netbox

1
W tym rozwiązaniu, skąd „grub-install” wie, że powinien zostać zainstalowany w trybie EFI?
user334639,

3
Ważną kwestią jest uruchomienie nośnika instalacyjnego we właściwym trybie rozruchowym, jeśli chcemy ponownie zainstalować, grub-efimusimy uruchomić w trybie UEFI, jeśli chcemy ponownie zainstalować, grub-pcmusimy uruchomić w starszym trybie.
mook765

1
Działa to dla mnie z jedną zmianą: działałem grub-install /dev/sdXX, tzn. Nie dysk, ale partycja EFI była używana do instalacji gruba i działało.
Duck Dodgers

3

to jedyny sposób, który działał dla mnie: (System: sdb8, boot: sdb6, efi: sdb2)

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

Co ma --recheckzrobić? Instrukcja mówi delete device map if it already exists?
MrCalvin

Jeśli nazwę rozruchu nazywam inną niż domyślna, np --bootloader-id=Ubuntu_02. Rozruch nie powiedzie się. Po prostu uruchamia się w konsoli Grub ... jakieś rozwiązanie?
MrCalvin

tak. wydaje się, że grub-install --recheckjest potrzebny. Naprawił mój niedziałający EFI USB HDD.
solsTiCe

2

Dzięki @ cl-netbox za instrukcje!

Po aktualizacji (Linux Mint 18.2 Sonya do 18.3 Sylvia) mój system nie uruchomił się, więc postępowałem zgodnie z powyższymi instrukcjami, ale nadal nie powiodło się. Zauważyłem jednak, że mój komputer ma / boot na osobnej partycji (być może dlatego, że używam LVM), więc mój nieco zmodyfikowany proces to:

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 

Uwaga: sdX = dysk | sdXX = partycja efi | sdXY = partycja rozruchowa | sdXXX = partycja systemowa


Miałem działający system Ubuntu Bionic, na którym przypadkowo wykonałem rm -Rf / boot / efi! Mój system wciąż działał, więc spróbowałem użyć dwóch ostatnich poleceń (grub-install / dev / mapper / ubuntu - vg-root AND update-grub). Zrestartowano i wszystko działa idealnie. Phewy i dziękuję :)
Roel Van de Paar

2

Ponadto, jeśli uruchamianie z Live CD w celu odzyskania może się zdarzyć, że brakuje Ci pakietu grub-efi-amd64-bin, a następnie linii

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

kończy się niepowodzeniem z komunikatem o błędzie: „Grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh nie istnieje. Podaj --target lub --directory.”

W takim przypadku uruchom to poza chroot

sudo apt get grub-efi-amd64-bin

a następnie dodaj / usr / lib / grub / x86_64-efi do montowań chroot.

Parametr BTW „/ dev / sdb” jest przestarzały i jest ignorowany.


0

oprócz odpowiedzi ci-netbox.
Jeśli wersja systemu pendrive nie jest zgodna z wersją zainstalowaną na dysku, grub-install może mieć trudności ze zidentyfikowaniem właściwej instalacji grub:

$ 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.

Spróbuj zidentyfikować instalację, której chcesz użyć

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

Następnie uruchom ponownie grub-install:

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

0

Jeśli zdarzy ci się zgubić partycję EFI, łatwo ją odzyskać. Możesz użyć fdisklub, partedaby utworzyć nową partycję GPT, wpisując „Partycja EFI (1)” i sformatować ją za pomocą:

sudo mkfs.msdos /dev/sdX

następnie zamontuj go i możesz uruchomić:

sudo grub-install /dev/sdX

jak w innych rozwiązaniach.


0

więc przypuszczam, że przyczyną problemu jest to, że instalacja Ubuntu nie instaluje partycji efi, jeśli fstab. i aktualizuje grub. po aktualizacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.