|
GRUB (GRand Unified Bootloader) jest
bootloaderem zdobywającym sporą popularność, ze względu na
swoją elastyczność i duże możliwości. Jest
tak rozbudowany, że musi trzymać część swoich danych na dysku
twardym, z tego też względu obsługuje kilka systemów plików i
może wykonywać proste operacje dyskowe. GRUB normalnie "widzi"
pliki na dysku, a więc widzi własny plik konfiguracji, kernel i
obraz initrd. Dzięki temu nie ma potrzeby robienia czegokolwiek
po zmianie konfiguracji, wygenerowaniu initrd czy aktualizacji kernela.
Jest za to czuły niekiedy na aktualizacje "samego siebie" i
wymaga niekiedy ponownej instalacji do MBR-u/bootsectora, nie ma
tu jednak żadnej jasnej reguły.
GRUB na każdym etapie konfiguracji (w trybie interaktywnym) wspiera
nas wbudowaną pomocą oraz dopełnianiem nazw plików, urządzeń i partycji.
Do największych zalet GRUB-a można zaliczyć możliwość zmiany
konfiguracji startowej z poziomu działającego bootloadera.
Kiedy uruchomiony zostanie bootloader wybieramy obraz a następnie
wciskamy klawisz e. Wyświetlą nam się
wiersze konfiguracji, możemy je modyfikować za pomocą
wbudowanego prostego edytora tekstów.
Po skończonej edycji wciskamy klawisz b, aby
uruchomić system z wprowadzonymi zmianami.
Kolejną ważną jego cechą jest możliwość używania klawiatury USB,
w przeciwieństwie do LILO, jedyną rzeczą
jaką musimy zrobić w tym wypadku to włączyć obsługę klawiatury USB
w BIOS-ie.
O initrd poczytamy w tym dokumencie.
Nazewnictwo urządzeń
Nie używamy nazw dysków opierających się na urządzeniach
widniejących w /dev (np.
/dev/hda). GRUB przy pomocy BIOS-u sprawdza
istniejące dyski i numeruje je począwszy od zera. Dla przykładu,
jeżeli posiadamy dwa dyski twarde (np. hda i
hdc), pierwszy z nich zostanie oznaczony jako
hd0, drugi jako hd1. Sytuacja
z partycjami wygląda podobnie, również numerowane są od zera,
natomiast pierwsza partycja logiczna będzie oznaczona numerem 4.
Obszar MBR oznaczany jako /dev/hda
będzie widziany jako (hd0), partycja
/dev/hda1 będzie rozpoznawana jako
(hd0,0). Podane nawiasy nie są przypadkowe,
jest to cecha składni poleceń GRUB-a.
Urządzenia masowe opisano szerzej w tym dokumencie.
Konfiguracja podstawowa
Konfiguracja polega na odpowiednim skonfigurowaniu pliku
/boot/grub/menu.lst i instalacji
bootloadera w MBR/bootsektorze dysku. W poniższych
przykładach założyliśmy, że zarówno /
(rootfs) jak i /boot leżą na tej samej
partycji pierwszego dysku twardego. W przykładowej konfiguracji
będzie to /dev/hda1. Poniżej przedstawiono
przykładową konfigurację:
timeout 15
title pld
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1
initrd /boot/initrd |
Konfiguracja GRUB-a podzielona jest na sekcję główną i sekcje
obrazów, sekcja główna są to ustawienia globalne, zaś
konfiguracja obrazów to opcje dla każdego z obsługiwanych
systemów operacyjnych. Powyżej mamy sekcję główną oraz
sekcję obrazu oddzieloną pustym wierszem.
Opcja timeout w sekcji głównej to
czas w sekundach oczekiwania na reakcję użytkownika.
Opcja title w sekcji obrazu to jego
etykieta, root(hd0,0) to partycja na
której GRUB będzie szukał swoich plików (w PLD GRUB trzyma
swoje pliki w /boot/grub). Parametry
kernel i initrd to
ścieżki do plików kernela i
initrd, w powyższym przykładzie
będą szukane na urządzeniu (hd0,0) gdyż
podane do nich ścieżki są względne. Parametr
root= jest parametrem jądra wskazującym
położenie głównego systemu plików, opisanym
szerzej w tym dokumencie. Może mieć
zarówno postać liczbową jak i postać nazwy urządzenia z
katalogu /dev np.
/dev/hda1.
Kiedy plik konfiguracji jest gotowy możemy przejść
do instalacji GRUB-a.
Instalacja
Przejdźmy teraz do instalacji GRUB-a w MBR, rozpoczynamy
od uruchomienia programu grub, mamy
teraz do dyspozycji interaktywną powłokę, oferującą liczne
polecenia, dopełnianie oraz pomoc. Rozpoczynamy od
polecenia root z parametrem wskazującym
miejsce gdzie znajdują się pliki GRUB-a, konieczne do jego
instalacji.
grub> root (hd0,0)
Filesystem type is xfs, partition type 0x83 |
Teraz uruchamiamy instalację bootloadera w MBR dysku, wydajemy
polecenie setup z odpowiednim parametrem:
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/xfs_stage1_5" exists... yes
Running "embed /boot/grub/xfs_stage1_5 (hd0)"... 18 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done. |
Komunikaty wskazują poprawność operacji, więc pozostaje
nam tylko wyjście z powłoki programu.
W ten oto sposób staliśmy się posiadaczami GRUB-a
w naszym systemie, możemy teraz zrestartować maszynę.
Inne systemy operacyjne
Zakładam, że chcemy dodać system Microsoftu zainstalowany
na partycji /dev/hda2, oto sekcja
jaką musimy dopisać do
/boot/grub/menu.lst:
title Windows
rootnoverify (hd0,1)
chainloader +1 |
Domyślnym obrazem wybranym przez bootloader jest ten
pierwszy w kolejności w pliku konfiguracji. Możemy to
ustawienie bardzo prosto modyfikować za pomocą opcji
default wskazującej numer obrazu. Obrazy
są numerowane wg. kolejności począwszy od 0 np.:
Omawianą opcję wstawiamy do sekcji głównej pliku
konfiguracji.
Frame Buffer
Frame Buffer (bufor ramki) to mechanizm pozwalający m.in.
na pracę konsoli w wyższych rozdzielczościach. Aby go
włączyć, do parametrów jądra w konfiguracji linuksowego
obrazu dodajemy parametr vga np.
vga=0x303. Przykładowa
konfiguracja obrazu będzie wyglądała następująco:
title pld
root (hd0,0)
kernel /boot/vmlinuz root=0301 vga=0x303
initrd /boot/initrd |
Listę dostępnych trybów zamieszczono w
tym dokumencie.
Graficzne menu
W pakiecie z GRUB-em dostępne są grafiki, co sugeruje
możliwość wyświetlenia ich w menu, jednak GRUB w PLD
domyślnie ich nie obsługuje. Aby włączyć taką możliwość
musimy samemu zbudować pakiet z opcją
--with splashimage.
Instalujemy zbudowany pakiet, a następnie
do pliku konfiguracji, do sekcji głównej dodajemy opcję
wskazującą bitmapę, która ma być wyświetlana np.:
splashimage=(hd0,0)/boot/grub/splash.xpm.gz |
Aby napisy pozostały czytelne możemy ustalić ich kolor za
pomocą opcji foreground i
background np.:
foreground = ffffff
background = 000000 |
Pierwsza z opcji wskazuje główny kolor liter, druga zaś
określa kolor ich cienia, oba parametry przyjmują
szesnastkowe wartości. Teraz restartujemy komputer,
aby sprawdzić czy wszystko działa poprawnie.
Grafiki możemy tworzyć samemu, GRUB wymaga indeksowanej
bitmapy o 14 kolorach i rozdzielczości 640x480, typu .xpm,
plik musi być dodatkowo skompresowany programem Gzip.
Bezpieczeństwo bootloadera
Jak już zostało wspomniane, GRUB trzyma część swoich danych
w systemie plików, co przy poważnym uszkodzeniu systemu
plików może uniemożliwić start systemu. Rozwiązaniem tego
problemu, może być umieszczenie gałęzi
/boot na osobnej partycji, tak jak to
było dawniej robione dla ominięcia
ograniczeń starych wersji LILO.
Więcej o podziale na partycje odnajdziemy w
tym dokumencie.
Dla większego bezpieczeństwa partycję taką można montować
w trybie tylko do odczytu, musimy jednak wtedy pamiętać o
konieczności przemontowania jej do trybu rw,
przed każdą aktualizacją jądra, lub bootloadera.
Uwagi
-
W przypadku nietypowych konfiguracji będziemy zmuszeni
do podawania ścieżek bezwzględnych do plików. Podajemy
je następująco: (hdX,Y)/katalog/plik np.:
(hd0,0)/boot/vmlinuz
-
GRUB wymaga kompletnej listy urządzeń w katalogu
/dev, stąd mogą pojawić się
problemy przy próbie instalacji go
z chroota opartego o udev. Należy w tym wypadku
podmontować z głównego system katalog
/dev z opcją
-bind. Pliki urządzeń zostały
dokładniej opisane w tym dokumencie.
|
|