GRUB
Z Fedora Wiki
Spis treści |
GRUB - jak odzyskać?
W wyniku różnych działań na komputerze zdarza się, że "znika" menu GRUB'a. Zazwyczaj objawia się to czarnym ekranem z wyświetlonym w lewym górnym rogu napisem GRUB i... to wszystko. Ponieważ sytuacja zdarza się dość często (np. po reinstalacji Windows, którego mimo szczerych chęci wielu "linuksiarzy" nie może się całkowicie pozbyć) deweloperzy wymyślili sposób na jego odzyskanie a tym samym na odzyskanie dostępu do Linuksa oraz Windows.
Procedura
Do przywrócenia GRUB'a potrzebna będzie nam płyta instalacyjna Fedory. Może to być:
- Płyta instalacyjna DVD
- Pierwszy CD-ROM instalacyjny
- Płyta do instalowania przez sieć (netinst)
Płyta LiveCD również może nam pomóc w odzyskaniu utraconego menedżera startu, ale wymaga nieco innej procedury.
Odzyskujemy... Wkładamy płytę do napędu i uruchamiamy komputer. Po pojawieniu się menu wybieramy opcję "Rescue installed system". Po zatwierdzeniu polecenia czekamy na załadowanie systemu.
W następnych etapach zostaniemy poproszeni o:
- wybór języka - wybieramy z listy ten, w którym czujemy się najlepiej
- wybór klawiatury - uwaga jak wyżej
- podjęcie decyzji o uruchomieniu interfejsów sieciowych - nie będą nam w tym przypadku potrzebne, więc odpowiadamy "Nie"
- jeśli na komputerze został zainstalowany więcej niż jeden system Linuks (nie musi to być Fedora), będziemy musieli wybrać "System do ratowania". Jeśli na komputerze jest tylko jeden Linux, to krok ten zostanie pominięty.
- po wybraniu systemu zostanie on automatycznie zamontowany i na ekranie pojawi się instrukcja dalszego postępowania.
- zgodnie z instrukcją wpisujemy polecenie
chroot /mnt/sysimage
- po wykonaniu powyższego polecenia wpisujemy polecenie instalacji (UWAGA! /dev/sda to tylko przykład. Jeśli mamy dwa lub więcej dysków, musimy wpisać ten, na którym mamy przywrócić menedżera startu (GRUB/GRUB2). Powinien to być dysk, który BIOS rozpoznaje jako "bootujący".)
- Dla GRUB 0.97 (GRUB 1)
grub-install /dev/sda
- Dla GRUB 2
grub2-install /dev/sda
- Dla GRUB 0.97 (GRUB 1)
rebootPamiętajmy o wyjęciu płyty z napędu CD-ROM.
Odzyskiwanie GRUB z wykorzystaniem LiveCD/LiveUSB
GRUBa możemy również odzyskać wykorzystując obraz Live nagrany na płytę CD/DVD lub pendrive USB.
Po uruchomieniu systemu Live z nośnika uruchamiamy terminal, uzyskujemy prawa roota (na obrazach Live Fedory użytkownik root ma hasło puste) i wydajemy następujące polecenia.
mount /dev/sda2 /mnt mount /dev/sda3 /mnt/boot #tylko jeśli posiadasz osobna partycję /boot mount --bind /dev /mnt/dev mount --bind /sys /mnt/sys mount --bind /proc /mnt/proc chroot /mnt
W przykładzie przyjęto założenia:
- główna partycja naprawianego systemu ("/") znajduje się na /dev/sda2
- system posiada osobną partycję "/boot" na /dev/sda3
W rzeczywistym systemie, który przyjedzie nam naprawiać należy te wartości odpowiednio zmodyfikować.
Po wykonaniu polecenia "chroot /mnt" należy wykonać polecenie grub-install lub grub2-install tak, jak to zostało opisane powyżej w części "Procedura"
Uruchomienie systemu w trybie tekstowym
Często się zdarza, że system nie chce uruchomić się w trybie okienkowym. Powodem może być źle zainstalowany sterownik grafiki, błędy w konfiguracji itp Jakie by to nie były przyczyny X serwer odmawia współpracy. Jedną z dróg dostania się do systemu i naprawienia błędów jest uruchomienie go w trybie tekstowym.
Najprostszym sposobem uruchomienia systemu w trybie tekstowym jest przekazanie podczas startu odpowiedniego parametru do jądra (ang.kernel). Należy to zrobić z menu GRUBa (obrazek poniżej)
Zgodnie z instrukcją widoczną pod menu, aby zmodyfikować argumenty jądra należy wcisnąć literę "a". Pokaże się linia z wywołaniem jądra wraz z parametrami. Na końcu tej linii należy dodać spację oraz cyfrę "3". Cyfra ta oznacza poziom uruchomienia systemu. Po dopisaniu dodatkowego argumentu należy wcisnąć <Enter> i system uruchomi się w trybie tekstowym.
Po zalogowaniu się (login: root) możemy przystąpić do naprawy trybu graficznego. Niestety nie da się przewidzieć wszystkich błędów jakie mogą się pojawić, ale w innym artykule opisano jak poradzić sobie w najczęściej spotykanych wypadkach.
Plik /boot/grub/grub.conf - typowe opcje
Typowy plik grub.conf wygląda podobnie do niżej przedstawionego:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-version.img # boot=/dev/sda1 # identyfikator domyślnie uruchamianego systemu '0' ozn. pierwszy na liście default=0 # oczekiwanie na wybór w sekundach timeout=5 # (nie wymagane) tapeta splashimage=(hd0,0)/grub/splash.xpm.gz # (nie wymagane) czy menu ma być widoczne hiddenmenu # (nie wymagane, nawet nie domyślne) jeśli system zawiedzie # można uruchomić alternatywny w wymienionej kolejności fallback 1 3 # menu wyboru systemów # numerki [0]...[3] są tylko do opisu title [0] Fedora (2.6.27.19-170.2.35.fc10.x86_64) # typowy parametry uruchamianego systemu root (hd0,0) # identyfikacja głównej partycji przy pomocy LABEL # włączony ładny graficzny boot tzw. plytmouth przy pomocy 'rhgb' # wypisywanie tylko najważniejszych komunikatów przy pomocy 'quiet' kernel /vmlinuz-2.6.27.19-170.2.35.fc10.x86_64 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.27.19-170.2.35.fc10.x86_64.img # (nie wymagane) w razie problemów z bootowaniem uruchom 4 pozycję ([3]) na liście savedefault 3 title [1] Fedora (2.6.29.4-167.fc11.x86_64) root (hd0,0) # identyfikacja głównej partycji przy pomocy UUID, ustalenie rozdzielczości vga=791 # uruchamianie systemu na poziomie '3' czyli tylko czarna konsola kernel /vmlinuz-xxx ro root=UUID=46f40ae7-0a45-4561-4c18-8ces615551a9 quiet vga=791 3 initrd /initrd-xxx.img # (nie wymagane) jeśli wystąpi "kernel panic" ;) uruchomiony zostanie system # wymieniony w parametrze fallback savedefault fallback title [2] Fedora Rawhide (2.6.30-0.97.rc8.fc12.i586) root (hd0,0) # identyfikacja głównej partycji przy pomocy bezpośredniej ścieżki do urządzenia # włączenie "gadatliwych komunikatów" przez usunięcie quiet i rhgb # wyłączenie selinux w jądrze kernel /vmlinuz-yyy ro root=/dev/sdb2 vga=792 selinux=0 initrd /initrd-yyy.img # (nie wymagane) jeśli wystąpi "kernel panic" ;) uruchomiony zostanie następny system # wymieniony w parametrze fallback savedefault fallback title [3] [ROOT] Fedora root (hd0,0) # logowanie bezpośrednio na root podając parametr '1' kernel /vmlinuz-zzz ro root=/dev/sda1 quiet 1 initrd /initrd-zzz.img # Uruchamianie systemu Windows # wygląda na to, że można już używać 'root' zamiast 'rootnoverify' # a Windows 7 nie potrzebuje nawet 'makeactive' ...chyba, nie wiem, bo nie mam ;) title Windows na DYSK 1 PARTYCJA 1 = sda1 = (hd0,0) rootnoverify (hd0,0) makeactive chainloader +1 title Windows na DYSK 1 PARTYCJA 2 = sda2 = (hd0,1) rootnoverify (hd0,1) makeactive chainloader +1 title Windows na DYSK 2 PARTYCJA 1 = sdb1 = (hd1,0) map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) makeactive chainloader +1 title Windows na DYSK 2 PARTYCJA 2 = sdb2 = (hd1,1) map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,1) makeactive chainloader +1 # Nie można uruchomić systemu na USB / CD / DVD z poziomu GRUB ;( # ale możesz zainstalować GRUB na USB / CD / DVD ;) title Restart reboot title Exit halt
Co oznaczają poszczególne wpisy:
- default=0 – domyślnie wybrana do uruchomienia 1. pozycja z menu (numeracja zaczyna się od zera)
- timeout=5 – liczba sekund przez ile będzie wyświetlane menu (o ile nie będzie ukryte)
- splashimage=(hd0,0)/grub/splash.xpm.gz - obrazek tła. W przykładzie znajduje się on w katalogu /grub na pierwszej partycji pierwszego dysku. Zazwyczaj jest to osobna partycja /boot. Dostęp do pliku z poziomu systemu po ścieżce /boot/grub/splash.xpm.gz
- hiddenmenu - ukrywa menu. Jeśli chcemy zobaczyć menu GRUB w czasie startu należy przed tym parametrem wstawić "#" (hash) albo usunąc tę linię i ustawić timeout > 0.
-
title Fedora ... - nowa pozycja menu GRUB. Za słowem kluczowym title następuje dowolny ciąg znaków opisujących system, który będzie z tej pozycji uruchamiany. Poniżej tej linii aż do następnej linii rozpoczynającej się slowem kluczowym title podajemy parametry uruchomieniowe danego systemu
- root (hd0,0) - w przykładzie GRUB będzie szukał pliku jądra (vmlinuz) oraz pliku z obrazem RAM-dysku (initrd) na pierwszej partycji pierwszego dysku (znowu należy zwrócić uwagę na numerację dysków oraz partycji na dyskach - zaczynaja się od zera)
-
kernel - jądro systemu. Będzie uruchomione z następującymi parametrami:
- /vmlinuz-2.6.27.19-170.2.35.fc10.x86_64 – plik zawierający skompilowane jądro systemu
- ro - tryb tylko do odczytu (skrót od ang.read only)
-
root=LABEL=/ - wskazuje główną partycję, na której znajdują się pliki systemowe. W tym przypadku będzie to partycja oznaczona etykietą "/". Od wersji 9 w Fedorze standardowo używa się w tym miejscu wskazania partycji przez UUID (ang.Universally Unique Identifier). Parametr przyjmuje wtedy mniej czytelną, ale za to zawsze unikalną postać podobną do tej:
root=UUID==e3b9abd3-3d2d-4f83-ba02-f358ec8ed4f7. Ma to szczególne znaczenie na komputerach, na których zainstalowany jest więcej niż jeden system linuksowy. - rhgb – uruchomienie z przesłonięciem komunikatów startu graficznym ekranem
- quiet – tryb cichy. Nie wyświetla szczegółowych komunikatów startu systemu (nawet jeśli nie użyjemy parametru rhgb)
- vga=792 lub heksadecymalnie vga=0x318 – ustala rozdzielczość konsoli tty (tryb tekstowy). Czyli terminale, które widzisz po naciśnięciu Ctrl+Alt+F1 używając GNOME/KDE/XFCE itp. Przykładowy nr 792 ozn. rozdzielczość 1024x768 i głębię kolorów 24-bit. Pozostałe rozdzielczości:
Głębia 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200 --------+-------------------------------------------------------------- 4 bits | ? ? 0x302 ? ? ? ? 8 bits | 0x300 0x301 0x303 0x305 0x161 0x307 0x31C 15 bits | ? 0x310 0x313 0x316 0x162 0x319 0x31D 16 bits | ? 0x311 0x314 0x317 0x163 0x31A 0x31E 24 bits | ? 0x312 0x315 0x318 ? 0x31B 0x31F 32 bits | ? ? ? ? 0x164 ?
Żródła: FrameBuffer oraz VESA BIOS Extensions
- o innych parametrach jądra można poczytać na stronie http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt (strona w j.angielskim)
Inne źródła pomocy, polecane strony
- GRUB - dyskietka ratunkowa - return.dnsalias.net/wiki
- GRUB bez tajemnic - jakilinux.org
- GRUB - pl.wikibooks.org
- GRUB (en) - wiki.archlinux.org
- Learn Linux, 101: Boot managers (en) - ibm.com


