błąd: nie znaleziono pliku „/grub/i386-pc/normal.mod”

46
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

Co mogę zrobić? Po prostu siedzę i patrzę na to.

Znalazłem mojego starego netbooka (Dell Inspiron 1010), z którego nie korzystałem przez około cztery lata. Zastąpiłem Windows XP Ubuntu 12.10. Użyłem rozruchowego napędu USB. Zainstalowałem i uruchomiłem ponownie. Mam wiadomość, której normal.modnie znaleziono.

Co powinienem zrobić? Typ exit, rebootalbo quit? Czy powinienem ponownie zainstalować?

Don Metlay
źródło
1
ODPOWIEDŹ PONIŻEJ NIGDY NIE DZIAŁA. TO DZIAŁA: ponownie zainstaluj system operacyjny, przejdź do „zrób coś innego”, a następnie utwórz tabele partycji use your windows partition as your primary boot device. Ten ostatni krok jest niezbędny. NIE UŻYWAJ / bootuj. Może być inne rozwiązanie: spróbuj ręcznie zmienić urządzenie rozruchowe podczas uruchamiania; nie sądzę jednak, żeby to zadziałało. Jest to od dawna problem utrzymujący się w Ubuntu do wersji 17.10 włącznie. Dziękuję Ci.
Wolfpack'08,
Żadna z tych instrukcji nie działała dla mnie. W rzeczywistości użycie różnych narzędzi do odzyskiwania pogorszyło problem. Byłem w stanie ponownie zainstalować gruba, ale ponieważ używam lvm2, jądro nie uruchomiło się. Jeśli używasz lvm2 do czegokolwiek, to kiedy wystąpi ten problem, będziesz musiał ponownie zainstalować system operacyjny. O ile mi wiadomo, nie ma odzyskiwania po nieudanej aktualizacji jądra + grub + lvm2. lvm2 widzi bardzo mało oficjalnego wsparcia, mimo że w pewnym momencie został wypchnięty dla Ubuntu Server LTS. Tworzę kopię zapasową danych i ponownie instaluję system operacyjny i nie chcę ponownie dotykać lvm2. Nauczyłem się mojej lekcji.
CubicleSoft,
1
Już przeszedłem z lvm2 i od tego czasu miałem zero problemów. Żadna z mojej infrastruktury już z niej nie korzysta. Domyślne rozwiązania ratowania systemu (zarówno graficzne, jak i CLI) są nieświadome lub ledwie zdają sobie sprawę z LVM i to jest wystarczający powód, dla którego nie używam LVM. Nawet gdybym postępował zgodnie z instrukcjami, aby odzyskać system i zadziałały, problem prawdopodobnie powtórzy się w przyszłości. Ponowna instalacja systemu operacyjnego i porzucenie LVM było dla mnie najlepszą i najszybszą opcją.
CubicleSoft
1
@ Wolfpack w moim przypadku problem polega na tym, że bez zestawu normal.mod uniemożliwia mi ewentualną ponowną instalację ubuntu, lgoin nie działa. Co mogę zrobić?
HoCo_
1
@ Wolfpack'08 Prześlij ponownie swoje rozwiązanie jako odpowiedź. Publikowanie rozwiązań jako komentarzy obchodzi zasady witryny. Należy również wspomnieć, która „odpowiedź poniżej nigdy nie działa”, ponieważ jest ich więcej.
Melebius

Odpowiedzi:

40

Grub ma mały obraz rdzenia, który jest ładowany podczas uruchamiania. Obraz rdzenia dynamicznie ładuje moduły, które zapewniają dalszą funkcjonalność. i386-pc/normal.mod not foundwskazuje, że grub nie może załadować normal.mod , który jest modułem grub, który udostępnia normalne polecenie . Aby załadować normal.mod , musisz powiedzieć grub, gdzie to jest. Aby to zrobić, możesz użyć wiersza polecenia grub (zwanego także konsolą ratunkową). Grub uruchomi wiersz poleceń, jeśli wystąpi problem z uruchomieniem, lub możesz uruchomić go ręcznie, przytrzymując klawisz Shift podczas uruchamiania grub (aby wymusić pokazanie menu grub), a następnie naciskając klawisz „c”.

Za pomocą gruba możesz eksplorować dyski, partycje i systemy plików. Musisz:

  • zlokalizuj instalację grub za pomocą ls lub search.file
  • ustaw zmienne gruba $ prefiks i $ root
  • załaduj i uruchom normalny moduł

Przykład

Poniższy przykład jest tylko przykładem. Będziesz musiał dostosować go do lokalnego dysku i konfiguracji partycji.

gdzie jest normal.mod? spójrz w niektóre prawdopodobne lokalizacje

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

Jeśli się pojawi, "Unknown command 'search.file'"oznacza to, że polecenie search.file nie jest dostępne. Wynika to prawdopodobnie z tego, że masz grub rescue>monit, a nie grub>monit. W takim przypadku możesz nadal korzystać z lspolecenia i swojej znajomości układu partycji, aby znaleźć normal.mod.

znalazłem w (hd0, msdos1)

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

dlaczego grub nie znalazł tego?
sprawdź $ prefix - bezwzględna lokalizacja katalogu grub
(ta opcja jest ustawiana, gdy grub jest instalowany przez grub-install)

grub> echo $prefix
(hd0,msdos2)/boot/grub

sprawdź $ root - domyślne urządzenie dla ścieżek, które nie zawierają
gruba urządzenia początkowo ustawia to urządzenie na prefiks $

grub> echo $root
hd0,msdos2

root i prefiks wskazują na niewłaściwą partycję (hd0, msdos2)
ustaw $ root i $ prefix na partycję, na której znaleźliśmy normal.mod (hd0, msdos1)

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

załaduj i uruchom normalny moduł

grub> insmod normal
grub> normal

Niektóre inne polecenia, które mogą być pomocne

Lista wszystkich urządzeń i partycji

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

partycja ls

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

system plików ls (uwaga / na końcu)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/

zajrzyj do katalogu / boot / grub
obecność katalogu i386-pc oznacza, że ​​jest to
obecność BIOS -u w katalogu x86_64-efi wskazuje na instalację EFI

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg

bain
źródło
+1 Po wykonaniu tych kroków, aby uruchomić się w mojej instalacji Ubuntu, pobiegłem, sudo grub-install /dev/sdXaby zainstalować swój grub. Myślę, że instalacja LVM w jakiś sposób myli mój grub.
DavidG
Myślę, że jeśli dostaniesz „plik wyszukiwania” „Nieznane polecenie”, tak jak właśnie to zrobiłem, czas się poddać. Moja rada dla ludzi nigdy nie instaluje Ubuntu bez dysku DVD odzyskiwania systemu Windows. Jak się właśnie dowiedziałem, posiadanie partycji odzyskiwania jest za mało, gdy Grub się zepsuje. Nigdy też nie instaluj Ubuntu na czyimś komputerze z systemem Windows, bo jeśli coś się popsuje, będą naprawdę wkurzeni.
Scooter
@ Skuter Zobacz tę odpowiedź, aby uzyskać instrukcje dotyczące ponownej instalacji Gruba poprzez uruchomienie płyty CD / USB na żywo.
bain
@bain Dzięki za odpowiedź. W moim przypadku wykonałem ponowną instalację z dysku ISO Ubuntu. Ubuntu zorientował się, że grub został pomieszany, a może po prostu automatycznie zapisuje, ale zmienił go tam, gdzie wróciłem do możliwości ponownego uruchomienia systemu Windows.
Skuter
Wydaje się, że powłoka ratunkowa Grub nie obsługuje żadnego z tych poleceń. „Nieznane polecenie„ plik szukania ””
Cerin
30

Rozwiązałem to na maszynie dziś po południu. Wydaje się, że jedną z przyczyn tego problemu jest to, że instalator myśli, że masz bezpieczny rozruch EFI, a nie ładujesz niepoprawnych plików GRUB.

Co musisz zrobić, to zainstalować GRUB 2. Aby to zrobić, musisz uruchomić system z instancji Live, zamontować partycję root i zainstalować.

Z instancji na żywo znajdź partycję, na której załadowana jest twoja partycja główna. GParted powie ci to, lub możesz użyć

sudo fdisk -l

Przejdź na partycję, na której jest zainstalowany Ubuntu.

Po utworzeniu partycji musisz ją zamontować. Zakładając, że partycja root znajduje się na / dev / sda5, byłoby to:

sudo mount /dev/sda5 /mnt

Następnie zainstaluj GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [użyj tego do skopiowania i wklejenia, ponieważ jest kilka spacji, które musisz poprawić.]

Zakładając, że to twój problem, powinieneś być w stanie ponownie uruchomić komputer i wszystko będzie działać poprawnie.

Oryginalne rozwiązanie tego problemu pochodziło stąd: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html

MorrisseyJ
źródło
1
Nie działało dla mnie. Mam ten sam problem i wciąż szukam rozwiązania.
ExpatEgghead,
3
--root-katalog jest teraz --boot-katalog w grub2
bain
1
Inną łatwą poprawką, która działała dla mnie, jest skopiowanie kopii zapasowej grup znajdującej się w /etc/grub.d/backup do / boot / grub. Sprawdź w dołączonym pliku Readme odpowiednie foldery i ścieżki.
jhexp
W moim przypadku problem polegał na tym, że mam 2 dyski twarde, a sekwencja bios szukała najpierw niewłaściwego dysku. Ten dysk miał starą uszkodzoną instalację grub.
eusoubrasileiro
Jeśli nie możesz powiedzieć, który jest właściwy z fdisk, to SO może pomóc (pomogło mi znaleźć, które urządzenie / media / ubuntu / some-name było włączone) unix.stackexchange.com/questions/11311/…
Michael
2

Nie znalazłem tych informacji na forach, więc chcę się nimi podzielić, mimo że to pytanie zostało zadane dawno temu:

Jeśli masz dużą partycję (np. 1 TB) z zainstalowanym Ubuntu i nie przydzieliłeś dodatkowej partycji dla / boot /, może to być przyczyną takich błędów. Podczas uruchamiania GRUB używa sterownika biosdisk do odczytu normalnych sterowników z katalogu / boot / grub /. Czasami ten katalog może znajdować się fizycznie na dysku twardym gdzieś po maksimum obsługiwanym przez sektor biosdisk. Problem może pojawić się na przykład po aktualizacji systemu. Ponadto zawsze mam do czynienia z tym problemem po nowej instalacji Ubuntu 13.10, ale może się różnić, ponieważ zależy to od płyty głównej / BIOS-u.

Możesz sprawdzić, czy korzystając z odzyskiwania GRUB - po ustawieniu prawidłowego PREFIKSU i ROOT, spróbuj ls / boot - jeśli nic nie widzisz, ale widzisz tam pliki podczas uruchamiania z dysku CD / flash na żywo - niż masz problem opisany powyżej .

Możesz zrobić różne rzeczy, aby uruchomić system, ale jedynym sposobem na uniknięcie tego problemu w przyszłości (podczas aktualizacji systemu) jest umieszczenie katalogu / boot na osobnej małej partycji.

Smutek
źródło
1

Inne rozwiązania mogą nie działać, jeśli pojawi się grub-rescuemonit i / lub Twoja konfiguracja korzysta z LVM, to powinno.

Uruchom z dysku ratunkowego (wskazówka: mam małą dystrybucję na dedykowanej partycji dysku zapasowego USB).

Jeśli używasz LVM, znajdź nazwę swojej grupy woluminów za pomocą lvdisplaylub innych poleceń związanych z LVM. Aktywuj go (w przeciwnym razie mount: special drive /dev/volumegroupname/partition does not existpodczas próby zamontowania pojawi się błąd):

vgchange -a y volumegroupname

Teraz zamontuj zwykłą /partycję, np. Na /mnt :

mount /dev/volumegroupname/partition /mnt

Zamontuj także kilka specjalnych urządzeń (a także /bootjeśli są na osobnej partycji):

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

Następnie chrootdo zwykłej dystrybucji:

chroot /mnt

Na koniec zainstaluj ponownie GRUB2 - polecenia mogą się różnić w zależności od twojej dystrybucji, działa to na Slackware (jeśli masz dysk /dev/sda):

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Uruchom ponownie i powinieneś to zrobić.

Skippy le Grand Gourou
źródło
0

! WYBRANA ODPOWIEDŹ NIGDY NIE DZIAŁA.

TO DZIAŁA:

  1. Ponownie zainstaluj system operacyjny , przejdź do „ zrób coś innego ”, utwórz tabele partycji,
  2. Użyj partycji Windows jako podstawowego urządzenia rozruchowego .

Drugi krok jest niezbędny .

NIE UŻYWAJ/boot .

Może być inne rozwiązanie: spróbuj ręcznie zmienić urządzenie rozruchowe podczas uruchamiania; nie sądzę jednak, aby to zadziałało i muszę to jeszcze przetestować.

Jest to od dawna problem utrzymujący się w Ubuntu do wersji 17.10 włącznie.

Wolfpack'08
źródło