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.
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.
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ł.
Również dziękuję za info, Pozdrawiam Andrzej
To prawda. Ogólnie wpis pomógł, dziękuję
Bardzo dziękuję, miło się czyta, że mój wpis okazał się pomocny. Pozdrawiam serdecznie, Andrzej.
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’
Zmień powłokę (interpreter poleceń) w terminalu. Prawdopodobnie to będzie rozwiązaniem twojego problemu.
https://reporter.pl/linux-jak-sprawdzic-jakie-powloki-shells-dostepne-sa-w-systemie-i-jak-zmieniac-je-na-inne-300
Pozdrawiam, Andrzej