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.

Generoso
źródł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.

cl-netbox
źródło
+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
Chilu Pereira
źródło
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

Rob Pearman
źródło
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.

mprot
źródło
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.
Emmanuel
źródło
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.

cengique
źródło
0

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

Shimon Doodkin
źródło