grub vs grub-rescue

Series: publications March 12, 2016

Grub udostępnia kilka trybów pracy w przypadku wystąpienia błędów. Jeżeli wystąpił problem z uruchomieniem systemu lub jakikolwiek inny z samym bootloader’em może zostać wyświetlony szereg dodatkowych informacji na ekranie.

grub_preview.01.jpg

Dwa podstawowe tryby, które opiszę to:

  • grub> - jest to tryb, do którego przechodzi w przypadku znalezienia wszystkiego co potrzebne do uruchomienia systemu oprócz pliku konfiguracyjnego. Z tego trybu mamy dostęp do większości (jak nie wszystkich) modułów i poleceń. Tryb ten można wywołać z poziomu menu naciskając klawisz c
  • grub-rescue> - jest to tryb, do którego przechodzi w przypadku braku możliwości znalezienia swojego katalogu (zwłaszcza katalogu z modułami i dodatkowymi poleceniami, np. katalog /boot/grub/i386-pc), jeśli jego zawartość jest uszkodzona lub w przypadku braku znalezienia modułu normal; zawiera tylko podstawowe polecenia

Spis treści

Dostępne polecenia

W pierwszej kolejności opiszę polecenia, które należy wprowadzić w celu uruchomienia systemu.

Interpreter grub’a udostępnia uzupełnianie klawiszem Tab.

Oto dostępne opcje:

  • set pager=1* - włącza “długie wyjście” - wyświetlane w jednej linii
  • ls - wyświetla listę dostępnych partycji oraz w przypadku podania dysku/partycji wyświetlana jest jego zawartość, bardzo przydatne w przypadku szukania katalogu, np. ls (hd0,msdos1)/ lub ls (hd0,1)/ - oba przykłady oznaczają to samo
  • set - użycia samego polecenia powoduje wyświetlenie wszystkich ustawionych parametrów
  • set prefix* - określa ścieżkę do katalogu z danymi grub’a (gdzie hd0,msdos1 = /dev/sda1)
  • set root* - ustawia partycję główną
  • unset - usuwa wartość z podanego parametru
  • lsmod - wyświetla załadowane moduły
  • insmod - pozwala na załadowanie dodatkowych modułów (musi być ustawiona poprawna ścieżka do katalogu grub’a za pomocą zmiennej prefix)
  • insmod normal* - ładuje moduł odpowiedzialny za wyświetlenie menu oraz udostępnienie dodatkowych opcji, tj. uzupełnianie, przechodzenie między poleceniami za pomocą klawiszy UP/DN a także pomoc (polecenie help) - po wykonaniu tej komendy należy wprowadzić polecenie normal, w celu ich załadowania
  • linux* - ładuje kernel z podanej jako parametr ścieżki, pozwala także na ustawienie partycji głównej oraz przekazywanie dodatkowych parametrów do jądra, niekiedy należy załadować ten moduł za pomocą polecenia insmod linux (także jeśli występują problemy z wyświetleniem menu po wpisaniu: insmod normal i normal)
  • initrd* - ładuje plik initrd.img z podanej ścieżki
  • boot* - uruchamia system
  • configfile - pozwala na załadowanie pliku konfiguracyjnego (należy załadować moduł configfile)

Opcje oznaczone gwiazdką są minimalnym zestawem do poprawnego uruchomienia systemu. Pozostałe z nich mogą być opcjonalne i przydatne w przypadku braku załadowanych modułów lub pozostałych błędów.

Uruchomienie systemu

Teraz przejdziemy do procedury uruchomienia systemu. Po odpaleniu interpretera należy wykonać następujące komendy:

set pager=1
set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)
insmod linux
linux /vmlinuz-* root=/dev/mapper/vg0-system ro
initrd /initrd-*
boot

Taki zestaw poleceń sprawdza się w przypadku obu trybów. W trybie grub> nie musimy podawać parametru set prefix ponieważ jest już ustawiony (można podejrzeć poleceniem set). W przypadku trybu grub-rescue> należy wczytać katalog z zawartością grub’a (set prefix=) oraz może zajść potrzeba wczytania modułów normal i linux.

Tym sposobem można uruchomić teoretycznie dowolny system. W powyższym przykładzie partycja główna siedzi na lvm’ie stąd należy pamiętać o odpowiedniej ścieżce.


built with Jekyll and trimstray blog — read the fine print