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 found
wskazuje, ż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 ls
polecenia 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
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.