Polecenie ratowania gruba, napraw grub

30

Niedawno dokonałem podziału dysku twardego na partycje i uszkodziłem GRUB w moim systemie. Podczas uruchamiania pojawia się monit ratunkowy GRUB i muszę wykonać następujące kroki, aby uruchomić się normalnie:

set root=(hd0,msdos6)
set prefix=(hd0,msdos6)/boot/grub
insmod normal
normal

(Te kroki zostały znalezione w innym poście tutaj!).

Mam dość powtarzania tego przy każdym rozruchu. Jak trwale naprawić GRUB?

Codito ergo sum
źródło
1
Dwie możliwości: (1) Boot-Repair (2) Super Grub Rescue Disk Patrz: http://linuxnorth.wordpress.com/2012/02/07/repairing-grub/
CentaurusA
1
Kroki wymienione w pytaniu, aby uruchomić, działały dla mnie. Należy jednak poprawnie pamiętać o partycji linux.
TheCrazyProgrammer
1
Jak powiedzieli inni, wykonanie update-grub, a następnie grub-install / dev / sda rozwiązuje problem.
TheCrazyProgrammer
Zobacz odpowiedź Karthika na „nie znaleziono pliku”: askubuntu.com/questions/443241/...
samis,

Odpowiedzi:

12

Aby naprawić GRUB Rescue, wykonaj następujące czynności:

  • Po pierwsze, musimy uruchomić nasz system operacyjny dopiero po tym, jak będziemy mogli naprawić grub.

    #to start OS-->
    error: unknown filesystem.
    Entering rescue mode...
    grub rescue>

    Kiedy zobaczysz taki błąd, najpierw musimy sprawdzić, czy „System plików” to ext2 '

    grub rescue> ls        # type 'ls' and hit enter to see drive partition.
    (hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos4) ...   # you will see such things 

to są nasze dyski, teraz musimy sprawdzić, który z nich jest ext2.

grub rescue>ls (hd0,msdos6)
error: disk 'hd,msdos6' not found.

idź po kolejne dyski, aż pojawi się „System plików to ext2”.

grub rescue>ls (hd0,msdos5)
error: disk 'hd,msdos5' not found.
grub rescue>ls (hd0,msdos2)
(hd0,msdos2): Filesystem is ext2        # this is what we want

teraz ustaw ścieżkę

grub rescue>set boot=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos6)/boot/grub
grub rescue>insmod normal
grub rescue>normal
  • Teraz po prostu napraw grub, wykonując polecenie na dowolnym Ubuntu

    sudo grub-install /dev/sda
    sudo apt-get update
    # to update grub
    sudo apt-get upgrade

upewnij się, że musisz zaktualizować GRUB po zalogowaniu się do systemu operacyjnego

Roshan Sherkure
źródło
1
OP już wie, jak uruchomić system operacyjny. Ta odpowiedź może być bardziej zwięzła.
Starszy Geek
1
Ta odpowiedź była dla mnie pomocna. Mój problem nie był dokładnie taki sam jak oryginalne pytanie, więc dodatkowe informacje stały się przydatne.
retroj
1
+1 To naprawiono przez problemy z nieudaną instalacją KDE Neon.
Darren Lewis,
błąd: nie znaleziono pliku „/boot/grub/i386-pc/normal.mod” Co należy zrobić?
BhushanDhamale
7

Spróbowałbym uruchomić update-grub, aby zbudować grub.conf/ grub.cfgponownie.

Możesz także spróbować użyć grub-install, ale myślę, że to nie pomoże.

Jeśli chcesz przeczytać więcej, najpierw sprawdź, którą wersję posiadasz (GRUB 1 lub 2), uruchamiając:

dpkg -l | grep grub

Jeśli masz GRUB 2, możesz skorzystać z następującego samouczka: http://www.dedoimedo.com/computers/grub-2.html

Oczywiście uważaj na GRUB, ponieważ mówimy o procesie rozruchu, który jest wrażliwym mechanizmem.

idgar
źródło
2
grub-install <correct-drive, i.e. /dev/sda>i update-grub2wreszcie zrobiłem to dla Ubuntu 15.04
Greg Kramida
6

Wydaje mi się, że update-grubskłada grub.cfg, ale trzeba także (ponownie) uruchomić grub-install(lub grub-setup?), Aby zaktualizować sektory MBR / boot z podstawowymi informacjami - na której partycji znaleźć grub.cfgplik i najwyraźniej te moduły.

mmaruska
źródło
4

Gdy pojawi się monit ratunkowy GRUB, oznacza to, że bootloader GRUB nie może zlokalizować swoich modułów na partycji, w której są one zapisane /boot/grub. Powodem tego jest to, że kod, który mieści się w rekordzie MBR dysku, jest niewielki, więc jego głównym celem jest zlokalizowanie i załadowanie reszty kodu programu ładującego. Po załadowaniu modułów może wyświetlić menu GRUB i obsłużyć resztę procesu rozruchu. Jeśli nie może znaleźć modułów, wyświetla bardzo ograniczone monit ratunkowy.

Tak więc to, co widzisz, jest całkowicie normalne, jeśli dokonałeś podziału na partycje, tym samym niszcząc odniesienie, które bootloader miał do partycji zawierającej moduły rozruchowe.

Ponieważ można uruchomić ręcznie, najprostszą poprawką jest ręczne uruchomienie i ponowna instalacja modułu ładującego w MBR, tak aby zawierał prawidłowe odniesienie do partycji. Sposobem na to jest:

sudo grub-install /dev/sda

Zakłada się, że uruchamiasz się z niego /dev/sda(w większości przypadków, ale jeśli nie, zamień go na właściwy dysk).

To rozwiązanie jest znacznie prostsze niż użycie boot-repair, ale jeśli nie masz pewności, może być bardziej odpowiednie.

bcbc
źródło
1
+1 za wyjaśnienie, co się dzieje w łatwy do zrozumienia sposób.
monotasker
2

Najprostszym sposobem byłoby:

sudo apt-get purge grub-pc grub-pc-bin

Następnie:

sudo apt-get install grub-pc grub-pc-bin
hyao
źródło
2
Jest to podejście młot kowalski, które prawdopodobnie będzie działać, ale prostsze jest po prostu ponowne zainstalowanie programu ładującego, aby zaktualizować odwołanie do partycji (która została uszkodzona przez podział na partycje).
bcbc
1

Rozwiąż ostateczny przypadek awarii ratowania gruba: problemy: 1. i386-pc nie znaleziono **** tryb normalny nie działa cp nie działa wyszukiwanie. Plik nie działa . Wszystko można rozwiązać za pomocą następujących poleceń, Działa również z Ubuntu 18.04. Krok 1: Znajdź folder główny zawierający katalog.

ls

Na przykład, jeśli folder główny znajduje się w (hd0, gpt4), wpisz

tak to wygląda

ls (hd0, 4)/

Zobaczysz niektóre pliki lub foldery:

mój plik główny znajduje się w (hd0, gpt4)

Teraz, jeśli masz szczęście, wykonaj następujące czynności:

set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal

Jeśli masz szczęście, rozwiąże to twój problem. Czasami ludzie mają problemy, takie jak nie można znaleźć folderu 1386-pc. W takim przypadku musisz sprawdzić, gdzie jest folder grub. Jeśli masz problem, taki jak:

boot / grub / i386-pc / normal.mod nie znaleziono

W takim przypadku musisz znaleźć folder grub2. Jeśli masz grub2 i wewnątrz tego folderu, możesz mieć folder i386-pc. Następnie musisz wpisać

prefix=(hd0, 4)/grub2/

to będzie działać. Jeśli nie masz grub2 i nie możesz zlokalizować folderu i386-pc, wykonaj następujące czynności:

grub rescue>set root=(hd0, 4)
grub rescue>set prefix=(hd0, 4)/usr/lib/grub
grub rescue>insmode normal
grub rescue>normal

po wykonaniu tej komendy tryb ratowania gruba przejdzie do menu grub . Teraz możesz wykonać polecenie linux.

komenda linux

grub>set root =(hd0, 4)
grub>set prefix= (hd0, 4)/boot
grub>insmaod linux
grub>linux vmlinuz.....-generic
grub>intrd (hd0, 4)/boot/...-generic
grub>boot

Nastąpi przejście do trybu odzyskiwania. Stamtąd możesz wybrać jedną z kilku dostępnych opcji odzyskiwania. Jeśli to nie pomoże, musisz pobrać system Ubuntu, na przykład Ubuntu 18.04. Możesz pobrać z następującego linku: link ubuntu

Utwórz dysk rozruchowy i otwórz komputer z tym dyskiem aktywnym. Nie zaszkodzi żadnym twoim dokumentom. Zobacz wideo, jak to zrobić. Teraz musisz znaleźć folder i386-pc. Będzie

rootContainingDirectory-usr-lib-grub

Teraz skopiuj i386-pc do folderu boot / grub /. możesz mieć problem z uprawnieniami, aby obejść ten typ, następujące polecenie:

sudo nautilus

Teraz kliknij prawym przyciskiem myszy ten katalog i zmień właściciela na użytkownika sesji Live Ubuntu

śledź wideo: zmiana uprawnień

Teraz po wklejeniu go do folderu boot / grub uruchom ponownie i usuń dysk USB. Tym razem użyj 1. zestawu poleceń, zadziała. Jeśli polecenie cp działa, możesz to zrobić również z menu grub.

Sanat
źródło