Zbiór błędów Gruba
1.
Uwagi wstępne
Podziękowania
Ogromne podziękowania należą się
Earthwingowi,
penetrode,
loyaltonone,
pilla
,
airheada
,
nephrosa
,
yamakawy
i tych wszystkich, którzy pomogli w tworzeniu oryginalnego wątku.
Ostrzeżenie
Załączone rozwiązania są tylko przykładowe. Należy zmienić numery partycji na
odpowiadające podziałowi dysków w komputerze. Autorzy niniejszego dokumentu nie
ponoszą odpowiedzialności za ewentualne konsekwencje wywołane korzystaniem z
rozwiązań w nim zawartych.
2.
Grub loading, please wait...
Sytuacja
Listing 2.1: Wyjście Gruba |
Grub loading stage 1.5
Grub loading, please wait...
|
Po tym komunikacie system zatrzymuje się. Kiedy uruchamiamy system za pomocą
dyskietki z Grubem, problem znika.
Rozwiązanie
Według
The_Bella możemy zmienić porządek ładowania systemu w BIOS-ie.
Należy ustawić BIOS tak, aby nie uruchamiał systemu najpierw z dyskietki.
penetrode pisał, że może to być również spowodowane złym ustawieniem
CFLAGS. Obecny ebuild Gruba filtruje flagę -fstack-protector, jednak
jeśli nic nie pomoże, wtedy można skompilować Gruba ponownie z podstawowymi
flagami CFLAGS.
Listing 2.2: Używanie podstawowych flag CFLAGS do ponownej kompilacji Gruba |
# CFLAGS="-O2 -march=i686 -fomit-frame-pointer -pipe" emerge grub
|
3.
Błąd Gruba numer 12
Sytuacja
Listing 3.1: Wyjście Gruba |
12 : Invalid device requested.
|
Ten błąd jest zwracany jeśli składnia nazw urządzeń jest poprawna, ale wystąpił
inny, niezdefiniowany błąd, np. użytkownik pominął jakiś wpis.
Rozwiązanie
Należy sprawdzić czy po zainstalowaniu Gruba do sektora rozruchowego, zostały
wykonane poniższe polecenie w jego powłoce..
Listing 3.2: Polecenia interaktywnej instalacji |
grub> root (hd0,0)
grub> setup (hd0)
|
Wpis (hd0,0) powinniśmy zastąpić naszą partycją rozruchową, a (hd0) wybranym
dyskiem twardym. Należy pamiętać, że (hd0) zainstaluje bootloadera w głównym
sektorze rozruchowym (MBR) pierwszego dysku czyli dysku ustawionego jako primary
master.
4.
Błąd Gruba numer 15
Sytuacja
Ten błąd występuje w dwóch różnych przypadkach. Podczas wstępnej konfiguracji
(instalując Gruba do głównego sektora rozruchowego) lub po załadowaniu systemu i
próbie uruchomienia Linuksa (lub innej pozycji).
Listing 4.1: Wyjście Gruba - wstępna konfiguracja |
grub> root (hd0,0)
Filesystem type is xfs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no
Error 15: File not found
|
Listing 4.2: Wyjście Gruba - ładowanie wpisu |
Booting 'gentoo Linux'
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel (hd0,0)/boot/kernel-2.4.20 root=/dev/hda3 vga=792
Error 15: File not found
Press any key to continue...
|
Rozwiązanie - wstępna konfiguracja
Ten błąd jest zwracany jeśli podana nazwa pliku nie może być znaleziona, ale
wszystko inne (takie jak informacje o dyskach i partycjach) jest poprawne.
Często ten błąd informuje o brakującym pliku obrazu jądra. Należy się upewnić,
że plik, do którego Grub się odnosi, istnieje na partycji rozruchowej.
Aby dowiedzieć się o dokładnej nazwie obrazu jądra należy załadować system z
płyty instalacyjnej i zamontować partycję głównego systemu plików i partycję
rozruchową (jeśli taką mamy). Potem chrootujemy się do naszego Gentoo, a
następnie wyświetlamy pliki, aby zobaczyć jakie mamy dostępne obrazy jądra:
Listing 4.3: Weryfikacja istnienia obrazu jądra |
# cd /boot
# ls
|
To polecenie wyświetli wszystkie obrazy jądra, które mamy na partycji
rozruchowej. Jeśli brakuje nam obrazu jądra, wtedy należy ponownie skompilować
jądro (za pomocą genkernela lub ręcznie):
Listing 4.4: Ponowna kompilacja jądra |
# cd /usr/src/linux/
# make menuconfig (konfigurujemy jądro, jeśli trzeba)
# make
|
Po czym skopiować obraz na partycję rozruchową:
Listing 4.5: Kopiowanie jądra |
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
|
Powinniśmy się upewnić czy nazwa obrazu jądra jest dokładnie taka sama jak w
pliku grub.conf. Musimy również sprawdzić czy linia kernel
w grub.conf odnosi sie do odpowiedniej partycji (jawnie lub
niejawnie).
Innym powodem tego problemu może być nakazanie BIOS-owi, aby ignorował dysk na
którym mamy stage Gruba lub obraz jądra. Ponadto partycja, na której znajdują
się etapy GRUB-a, nie może korzystać programowego RAID-5 (lub innej tego typu
techniki).
Rozwiązanie - ładowanie wpisu
Najpierw należy zweryfikować, że polecenia root oraz setup są
poprawne.
Jeśli jesteśmy pewni, że są poprawne, to jest możliwe, że używamy
wadliwej wersji Gruba (0.93.20031222). Wówczas należy uaktualnić drzewo
portage lub zamaskować tę wersję Gruba:
Listing 4.6: Maskowanie Gruba |
# echo "=sys-boot/grub-0.93.20031222" >> /etc/portage/package.mask
# emerge grub -p
|
Możemy również użyć skryptu grub-install, który jest zalecany przez
autorów Gruba:
Listing 4.7: Używanie grub-install |
# grub-install --root-directory=/boot /dev/hda
|
Jeśli to wszystko zawiedzie, to nasza partycja rozruchowa może być
uszkodzona. Należy sprawdzić tę partycję w poszukiwaniu błędów:
Listing 4.8: Sprawdzanie partycji w poszukiwaniu błędów |
# fsck -y /dev/hda1
|
5.
Błąd Gruba numer 17
Sytuacja
Listing 5.1: Wyjście Gruba |
root (hd0,0)
filesystem type unknown partition type 0x7
Error 17 : Cannot mount selected partition
|
Rozwiązanie
Ten błąd jest zwracany, jeśli żądana partycja istnieje, ale Grub nie może
rozpoznać typu systemu plików.
Należy być pewnym ustawień root(x,y) w pliku grub.conf.
Jeśli próbujemy także ładować system Windows, należy się upewnić, że plik
grub.conf zawiera linie root (hdX,Y) (lub rootnoverify
(hdX,Y)) i chainloader (hdX,Y)+1.
6.
Błąd Gruba numer 18
Sytuacja
Listing 6.1: Wyjście Gruba |
kernel (hd1,4)/bzImage root=/dev/hdb7
Error 18: Selected cylinder exceeds max supported by BIOS
|
Rozwiązanie
Ten błąd jest zwracany podczas odczytu adresu bloku liniowego poza obszarem
dysku, który przetłumaczył BIOS. Zwykle się to zdarza, gdy dysk jest większy niż
BIOS może obsłużyć (512MB dla dysków (E)IDE na starszych komputerach lub 8GB
ogólnie).
Należy uaktualnić BIOS i/lub przesunąć partycję rozruchową na początek dysku
(lub przynajmniej postarać się, aby była w okolicach początku dysku).
7.
GRUB GRUB GRUB GRUB GRUB ...
Sytuacja
Listing 7.1: Wyjście Gruba |
GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB
GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB
...
|
Rozwiązanie
Według
airheada
może to być spowodowane przez zmuszenie BIOS-u do automatycznego wykrywania
twardych dysków. Należy ustawić wpis w BIOS-ie na User Type HDD.
Inną możliwością jest posiadanie Gruba zainstalowanego w MBR i podczas jego
ponownej instalacji (dla przykładu z powodu zmian na dysku twardym), użycie
złych poleceń setup i root.
8.
Probing devices to guess BIOS drives. This may take a long time.
Sytuacja
Podczas instalacji Gruba, system zawiesza się po wyświetleniu następującego
komunikatu:
Listing 8.1: Wyjście Gruba |
# grub
Probing devices to guess BIOS drives. This may take a long time.
|
Rozwiązanie
Jak się okazuje jest to spowodowane egzotyczną konfiguracją dysków, taką jak np.
dysków ultra i non-ultra DMA podpiętych na jednym kablu.
9.
Podczas instalacji Gruba system się zawiesza
Sytuacja
Podczas instalacji Gruba, system się zawiesza:
Listing 9.1: Wyjście Gruba |
# grub
|
Rozwiązanie
Jeśli nie posiadamy stacji dyskietek, należy użyć parametru --no-floppy.
Listing 9.2: Instalacja Gruba z użyciem parametru --no-floppy |
# grub --no-floppy
|
10.
Uncompressing Linux... Ok, booting the kernel
Sytuacja
System się zawiesza po wyświetleniu następującej linii:
Listing 10.1: Wyjście Linuksa |
Uncompressing Linux... Ok, booting the kernel.
|
Rozwiązanie
Ściśle mówiąc, to nie jest błąd Gruba. Jedną z możliwości jest to, że ACPI nie
działa poprawnie, ale jest włączone w jądrze. Należy wyłączyć tą opcję w
BIOS-ie lub w jądrze.
11.
Grub pokazuje tylko znak zachęty
Sytuacja
Podczas ładowania systemu, pojawia się powłoka Gruba zamiast listy wpisów, które
zdefiniowaliśmy w pliku grub.conf.
Rozwiązanie
Należy zamontować partycję rozruchową i zweryfikować czy istnieje plik
grub/grub.conf.
Listing 11.1: Montowanie i weryfikacja |
# mount /dev/hda1 /mnt/gentoo/boot
# cat /mnt/gentoo/boot/grub/grub.conf
|
Należy się także upewnić, że istnieje dowiązanie symboliczne
menu.lst:
Listing 11.2: Weryfikacja dowiązania symbolicznego |
# ls -l /mnt/gentoo/boot/grub/menu.lst
lrwxrwxrwx 1 root root 9 Mar 7 14:00 /mnt/gentoo/boot/grub/menu.lst ->
grub.conf
|
Jeśli nie, to tworzymy ponownie dowiązanie symboliczne:
Listing 11.3: Ponowne tworzenie dowiązania symbolicznego menu.lst |
# cd /mnt/gentoo/boot/grub
# ln -snf grub.conf menu.lst
|
Po czym instalujemy ponownie Gruba:
Listing 11.4: Ponowna instalacja Gruba |
# grub-install --root-directory=/boot /dev/hda
|
12.
Could Not Find Device For /boot/boot: Not Found Or Not a Block Device
Sytuacja
Kiedy wykonujemy polecenie grub-install podczas instalacji Gruba,
otrzymujemy następujący błąd:
Listing 12.1: Wyjście Gruba |
# grub-install --root-directory=/boot /dev/hda
Could not find device for /boot/boot: not found or not a block device
|
Rozwiązanie
Należy wykonać poniższe polecenie:
Listing 12.2: Uaktualnianie pliku mtab |
# grep -v rootfs /proc/mounts > /etc/mtab
|
13.
System uruchamia się ponownie po wciśnięciu klawisza Enter w menu Gruba
Sytuacja
Po wciśnięciu klawisza Enter w menu Gruba podczas ładowania systemu, komputer
ponownie się uruchamia.
Rozwiązanie
Należy wyłączyć wsparcie dla bufora ramki w jądrze. Jeśli to nie pomoże, należy
wyłączyć w jądrze APM i ACPI.
14.
Po wciśnięciu klawisza Enter w menu Gruba, ekran staje się czarny
Sytuacja
Po wciśnięciu klawisza Enter w menu Gruba podczas ładowania systemu, ekran staje
się czarny, ale system reaguje (dla przykładu diodę numlock można włączać i
wyłączać).
Rozwiązanie
Należy wyłączyć bufor ramki (zwykle pomaga usunięcie vga=XYZ w pliku
grub.conf) i sprawdzić architekturę procesora w jądrze.
15.
Brakujący obraz splasha
Sytuacja
Podczas ładowania systemu nie widać splasha Gentoo.
Rozwiązanie
Po pierwsze należy się upewnić czy istnieje plik splasha do którego się
odnosimy w grub.conf. Jeśli istnieje należy sprawdzić ebuild
Gruba. Możliwe, że w wersji której używamy łatka dla splasha jest
zakomentowana.
16.
Ładowanie Windowsa z drugiego dysku zawodzi
Sytuacja
Po wybraniu wpisu Windowsa, system odmawia rozruchu bez jakiejkolwiek przyczyny.
Rozwiązanie
cyrillic
poinformował nas, że można użyć polecenia "map", które odwzoruje dyski twarde w
różnej kolejności, zmieniając wpis systemu Windows w pliku
grub.conf jak poniżej:
Listing 16.1: Mapowanie dysków |
title Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd1,0)+1
|
17.
Grub wyświetla błąd podczas instalacji
Sytuacja
Sytuacja opisana poniżej jest tylko istotna dla wersji Grub-0.95.x w momencie
instalacji Gruba do sektora rozruchowego.
Listing 17.1: Instalacja Gruba |
grub> root (hd0,0)
grub> setup (hd0)
Segmentation fault
|
Rozwiązanie
Jest to znany błąd i został usunięty w wersji 0.96. Wersje 0.94 r1 oraz 0.94 r2
także powinny działać poprawnie. Jeśli to również zawiedzie, wtedy możemy
wykonać emerge programu grub-static, który obecnie jest stabilny na amd64, ale
wciąż nie został oznaczony jako stabilny na x86 (~x86). Dodatkowe informacje
można uzyskać przy błędzie #79378.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|