Ogromne podziękowania należą się Earthwingowi, penetrode, loyaltonone, pilla , airheada , nephrosa , yamakawy i tych wszystkich, którzy pomogli w tworzeniu oryginalnego wątku.
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...
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.
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
|
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.
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.
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).
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 |
(Należy to wykonać będąc w środowisku chroot) # 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 |
(parametr --root-directory jest konieczny jeśli używamy osobnej partycji rozruchowej, w przeciwnym wypadku możemy go pominąć) # 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 |
(Należy się upewnić, że partycja rozruchowa, w tym przypadku /dev/hda1, nie jest zamontowana) # fsck -y /dev/hda1 |
Listing 5.1: Wyjście Gruba |
root (hd0,0) filesystem type unknown partition type 0x7 Error 17 : Cannot mount selected partition |
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.
Listing 6.1: Wyjście Gruba |
kernel (hd1,4)/bzImage root=/dev/hdb7 Error 18: Selected cylinder exceeds max supported by BIOS |
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 ...
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 ... |
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.
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.
|
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
Podczas instalacji Gruba, system się zawiesza:
Listing 9.1: Wyjście Gruba |
# grub (Na tym etapie instalacja się zawiesza) |
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
System się zawiesza po wyświetleniu następującej linii:
Listing 10.1: Wyjście Linuksa |
Uncompressing Linux... Ok, booting the kernel. |
Ś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
Podczas ładowania systemu, pojawia się powłoka Gruba zamiast listy wpisów, które zdefiniowaliśmy w pliku grub.conf.
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 |
(Należy uruchomić wewnątrz środowiska chroot) # grub-install --root-directory=/boot /dev/hda |
12. Could Not Find Device For /boot/boot: Not Found Or Not a Block Device
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
|
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
Po wciśnięciu klawisza Enter w menu Gruba podczas ładowania systemu, komputer ponownie się uruchamia.
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
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ć).
Należy wyłączyć bufor ramki (zwykle pomaga usunięcie vga=XYZ w pliku grub.conf) i sprawdzić architekturę procesora w jądrze.
Podczas ładowania systemu nie widać splasha Gentoo.
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
Po wybraniu wpisu Windowsa, system odmawia rozruchu bez jakiejkolwiek przyczyny.
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 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 |
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.