Fedora+Windows=GRUB

1 wrzesień, 2007

Instalując Fedore z poziomu windows, GRUB jest tworzony automatycznie, wiec wszystko działa.

O wiele łatwiej jest zainstalować najpierw Windowsa, a póżniej linuksa, nie bedzie wtedy żadnych problemów. Gorzej, jak zrobimy na odwrót… Wtedy przy starcie uruchomi się automatycznie Windows XP.
Gdy zrobimy to własnie na ‘odwrót’ należy zainstalować GRUB-a na systemie (Linux/Windows?) ja dalem linux. Wkładamy Fedore Rescue CD lub Zwykłą instalke fedory, dajemy rescue installed system po czym wpisujemy
chroot /mnt/sysimage
grub-install /dev/DYSK (np sda1)
reboot

Po tej czynnosci, powinien wyswietlać się już GRUB przy starcie systemu.
(możliwe że nie będzie Windows XP wcale albo będzie Other) ale to potem.

Ja byłem po tej pechowej stronie, i poswiecilem temu mnóstwo czasu, i przy pomocy ksala, ecika, rafalzaq, McGiwer, Morsik i McMonster (któremu najbardziej dziękuje, za to że mial ochote sie tym zająć o 4 nad ranem) udało mi się to “naprawić”.

Nie bede opisywał róznych sposobów, bo każdy ma inaczej dysk rozmieszczony, inaczej popartycjonowany wiec nie ma ‘idealnego wzoru’ Poniżej przedstawie moje screeny, configi i na podstawie nich możecie je zastosować u siebie [ bądź w jakikolwiek sposób je wykorzystać]

GRUB.konf
1. # grub.conf generated by anaconda
2. #
3. # Note that you do not have to rerun grub after making changes to this file
4. # NOTICE: You do not have a /boot partition. This means that
5. # all kernel and initrd paths are relative to /, eg.
6. # root (hd0,0)
7. # kernel /boot/vmlinuz-version ro root=/dev/sda1
8. # initrd /boot/initrd-version.img
9. #boot=/dev/sda
10. default=0
11. timeout=9
12. splashimage=(hd0,0)/boot/grub/splash.xpm.gz
13. hiddenmenu
14. title Fedora 7
15. root (hd0,0)
16. kernel /boot/vmlinuz-2.6.22.4-65.fc7 ro root=LABEL=/1 rhgb quiet
17. initrd /boot/initrd-2.6.22.4-65.fc7.img
18. title Windows XP
19. rootnoverify (hd0,1)
20. chainloader +1

I jeszcze raz instalacja GRUB-a (nie wiem czemu, w kazdym badz razie kazali mi i działa
su -
grub-install /dev/sda

Po tej wstepnej konfiguracji byłem niemal pewny, że zadziała.
Restart, widze GRUBA – super!

  • Fedora 7
  • Windows XP

Wybieram Windows Xp, i co? i KUPA!

Cały monitor wyswietla jedno i to samo “GRUB”, coś w tym rodzaju:

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
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
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
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 (...)

Więc następny krok, włozyłem płyte Windows XP, i przy wyborze czynnosi zamiast [Enter] Zainstaluj system Windows, wybrałem R ( Uruchom konsole odzyskiwania )
polecenie:
fixboot

Akceptacja, restart- yo- działa! :)
Dziękuje wszystkim, którzy się przyczynili do rozwiązania problemu!

GRUB to skrót od GRand Unified Bootloader.
Jest on boot loaderem (programem rozruchowym), czyli programem odpowiedzialnym za załadowanie systemu do pamięci. Grub obsługuje wiele systemów operacyjnych i wiele systemów plików. Innym popularnym boot loaderem jest Lilo.

Instalacja

a) źródła

Instalacja ze źródeł jest bardzo prosta:
./configure
make
make install (jako root)

b) pakiety

Jeśli masz pakiety binarne (np deb lub rpm) to wydajesz polecenia:

dpkg -install grub.deb (dla debów)
rpm -ivh brub.rpm (dla rpmów)

c)repozytoria

W nawiasach napisałem przykładowe dystrybucje w jakich są dane systemy zarządzania pakietami

apt-get install grub (Debian, Ubuntu)
yum install grub (Fedora, Aurox )
emerge grub (Gentoo)
urpmi grub (Mandrake)

……….:::::::::::::::Konfiguracja:::::::::::::::……….

Plik konfiguracyjny gruba to: /boot/grub/grub.conf. Plik można edytować tylko z poziomu roota (no chyba że zmieniłeś mu chmody). Przykladowy plik konfiguracyjny może wyglądać np tak:

default=0
timeout=5
splashimage=(hd1,1)/boot/grub/splash.xpm.gz
hiddenmenu

title Linux (wersja jajka + jakies dodatkowe informacje)
root (hd1,1)
kernel /boot/vmlinuz-wersja_jajaka ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-wersja_jajka.img

title Windown
rootnoverify (hd0,0)
chainloader +1

Teraz może przeanalizujmy po kolei linijki:

default
- tutaj podajemy numer systemu (indeks od 0), który ma sie uruchomić jeżeli użytkownik nic nie wybierze

timeout – tutaj ustalamy po jakim czasie uruchomi sie system ustalony w default jezeli użytkownik nic nie wybierze

splashimage – tutaj podajemy ścieżke do obrazka, który ma być tłem.
Jeżeli chcesz wstawić tu własne tło to musi ono być w formacie xpm i dodatkowo skompresowane gzipem (*.xpm.gz). Ponadto obrazek powinien mieć rozdzielczość 640×480 i 14 kolorów.

hiddenmenu – ta linijka powoduje, że dopóki użytkownik nie naciśnie jakiegoś klawisza, to menu będzie nie widoczne. Będzie widoczna tylka title domyślnego systemu (default) i czas jaki pozostał do jego autoymatycznego uruchomienia.

Dalsza część odpowiada już za pozycje w menu, czyli to co będzie sie uruchamiać.

#Linux

title Linux (wersja jajka + jakies dodatkowe informacje)
root (hd1,1)
kernel /boot/vmlinuz-wersja_jajaka ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-wersja_jajka.img

title - linijka czysto informacjna. To co znajdzie sie za słowem title będzie wyświetlane menu.

root – wskazuje na partycje z katalogiem /boot

kernel – tutaj wskazujemy, które jądro ma być wykorzystywane.

initrd – ścieżka do pliku initrd

#Windows

title Windown
rootnoverify (hd0,0)
chainloader +1

rootnoverify – partycja
chaainloader - przehcodzimy do nastepnego loadera. Czyli jeśli np mamy zainstalowane 2 windowsy np 98 i xp to zostanie uruchmiony boot loader windowsa xp. Jezeli masz jednego windowsa to zostanie on po prostu uruchomiony.

Awaria Gruba

Czasem może się zdarzyć, żę grub po prostu przestanie działać, wtedy dostępna była tylko linia komend. Na szczęście z niej można wystartować system :)
Wystarczy wpisać to co powinno być w grub.conf dotyczące danego systemu z dodatkową linjką:
boot
na końcu np:

rootnoverify (hd0,0)
chainloader +1
boot

Jest jeszcze jeden dość częsty problem, gdy mamy na dysku np windowsa i linuxa i coś stanie się z windowsem. Po ponownym zainstalowaniu windowsa nie możemy uruchomić gruba bo mbr został zajęty przez boot loadera windowsowego. Co prawda z linuxem nic sie nie dzieje, ale po prostu nie możemy do niego wejść. Na szczeście można gruba “przywrócić”. Zakładam, że korzystasz z fedory, lub pochodnych:

Najpierw odpal kompter z 1 płyty instalacyjnej (lub rescue cd). Gdy komputer wystartuje wpisz linux rescue. Następnie wydaj następujące polecenia:

chroot /mnt/sysimage
grub-install /dev/dysk
exitjavascript:void(0)
exit

I to wszystko :)