Reinstalacja GRUB 2 | GrubEFIReinstall (Debian)

O tym, że istnieje duże prawdopodobieństwo uszkodzenia boot menadżera w systemach multiboot już wspomniałem w artykule „BCDBoot w akcji. Czyli jak przywrócić pliki rozruchowe Windows„, dotyczący systemów Microsoftu. Dlatego przyszła też pora opisać ten przypadek dla systemów z rodziny Linuksa. Jako że nie mam tutaj niczego więcej do opisywania, przejdźmy do konkretów. Poniższy opis ponownej instalacji Grub2 będzie na przykładzie dystrybucji Debian.

Reinstalacja GRUB 2 | GrubEFIReinstall

1 .Uruchom system z nośnika instalacyjnego Live i otwórz terminal. Nośnik musi być w wersji takiej samej, jaka jest zainstalowana dystrybucja na dysku tzn. jeżeli jest 64 bitowa, to na nośniku musi być też 64 bitowa itd.

2. Nośnik Live musi być uruchomiony w trybie EFI. W celu sprawdzenia wykonaj poniższe polecenie:

[ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
should return "EFI boot on HDD". //Odpowiedź jaką musimy otrzymać

3. Te polecenia mogą być pomocne przy identyfikacji partycji.

sudo fdisk -l
sudo blkid
df -Th

4. Zamontuj partycje systemową.

sudo mount /dev/sdXY /mnt

Gdzie X to litera dysku a Y to numer partycji.

5. Jeśli masz oddzielną partycje rozruchową, zamontuj ją teraz.

sudo mount /dev/sdXY /mnt/boot/efi

6. Jeśli nie istnieje katalog efi na partycji rozruchowej, to stwórz go.

sudo mkdir /mnt/boot/efi

7. Zamontuj wirtualne systemy plików.

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

8. Ustaw katalog główny root dla zamontowanego systemu podstawowego na dysku.

sudo chroot /mnt

9. Ponownie zainstaluj pakiet grub-efi.

apt-get install --reinstall grub-efi

10. Zainstaluj bootloader (program ładujący) w /boot/efi i utwórz odpowiedni wpis w NVRAM komputera.

grub-install /dev/sdX

11. Ponownie utwórz plik konfiguracyjny na podstawie schematu partycjonowania dysku.

update grub

12. Sprawdź, czy bootloader istnieje w /boot/efi/EFI/debian/grubx64.efi.

file /boot/efi/EFI/debian/grubx64.efi

/boot/efi/EFI/debian/grubx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows //Odpowiedź, jaką powinieneś uzyskać.

13. Sprawdź, czy pozycja nvram została poprawnie utworzona.

efibootmgr --verbose | grep debian

W tym momencie zakończyłeś/aś proces ponownej instalacji programu ładującego systemy operacyjne. Możesz uruchomić ponownie komputer i z powrotem GRUB 2 powinien pojawić się na twoim ekranie.

Grub2, ekran startowy.

Dodanie dodatkowych wpisów do GRUB 2.

Czasami zdarza się , że nie zostanie dodane (wykryte) wszystkie systemy operacyjne, jakie posiadamy. W taki przypadku możemy dodać je ręcznie, edytując plik konfiguracyjny /etc/grub.d/40_custom. Przykładowy wpis:

menuentry 'Windows 10' {
    search --fs-uuid --no-floppy --set=root CC66-4B02
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Gdzie CC66-4B02 to UUID partycji EFI oraz /EFI/Microsoft/Boot/bootmgfw.efi jest ścieżką do programu rozruchowego systemu Windows, który chcemy dodać do listy.

Dokumentacja / Linki

6 komentarzy do “Reinstalacja GRUB 2 | GrubEFIReinstall (Debian)”

  1. brakujące ogniwo w przypadku problemów z efi po zchrootowaniu:
    (EFI variables are not supported …)

    mount -t efivarfs efivarfs /sys/firmware/efi/efivars

    Dziękuję za pomocny artykuł.

    Odpowiedz
  2. Przy tym poleceniu

    for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

    wyskakuje blad:

    parse error near `do’

    Odpowiedz

Dołącz do rozmowy

Witaj na moim blogu, gdzie elektronika i oprogramowanie to główne tematy. Jako osoba za sterami tego miejsca, dążę do dostarczania wartościowych treści. Twoje komentarze stanowią dla mnie napęd do ciągłego doskonalenia. Ciekawią mnie Twoje myśli, pytania i osobiste doświadczenia związane z tym fascynującym światem. Przeglądając wpisy, na pewno masz wiele pomysłów i opinii. Nie krępuj się, podziel się nimi poniżej. Każdy komentarz to nie tylko opinia zwrotna, ale także początek inspirującej dyskusji.