GRUB

Z Fedora Wiki

GRand Unified Bootloader

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.

Od wersji 16 stosowany jest GRUB2
Różnice w sposobie odzyskiwania nie są wielkie, ale należy o nich pamiętać.

Procedura

Do przywrócenia GRUB'a potrzebna będzie nam płyta instalacyjna Fedory. Może to być:

  1. Płyta instalacyjna DVD
  2. Pierwszy CD-ROM instalacyjny
  3. 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.

Dobra wiadomość
Do przywrócenia GRUB'a nie musimy używać płyty instalacyjnej w tej samej wersji co zainstalowany system, czyli np. GRUB w Fedorze 10 może być odzyskany z płyty instalacyjnej Fedory 8

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:


Restartujemy komputer poleceniem
reboot
Pamię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:

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.

Notatki
Potrzebny podobny opis dla wersji GRUB 2

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)

Plik:GRUBm.jpg

UWAGA!
Jeśli nie widzisz powyższego menu podczas uruchamiania spróbuj zaraz po włączeniu komputera trzymać wciśnięty lewy <Shift>


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.

Plik:Menu2u.png


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:

   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

Inne źródła pomocy, polecane strony