GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot). GRUB ładuje system operacyjny do pamięci przekazuje mu kontrolę nad PC. Został zaprojektowany przez Erich'a Stefan'a Boleyn'a. GRUB jest stosunkowo prosty w konfiguracji i nie powinien przysporzyć problemów nawet początkującym użytkownikom. Plik konfiguracyjny GRUB'a znajduję się domyślnie w katalogu /boot/grub, a jego nazwa to menu.lst (nazwa ta występuje w Ubuntu, jednak w innych dystrybucjach np. Fedora jego nazwa to grub.conf). Ustawienia Przy instalacji dowolnej dystrybucji Linuksa, instalujemy też zazwyczaj bootloadera, który umożliwia wybór, który system operacyjny chcemy uruchomić. Z reguły domyślnie uruchamianym systemem wtedy będzie nowo zainstalowany system Linux - jednak można ustawić tak, żeby domyślnym był inny (np. Windows). W przypadku bootloadera GRUB jest to dość proste. 1. logujemy się jako root (albo administrator, który ma uprawnienia do zapisywania plików w katalogu /boot) 2. wchodzimy do katalogu /boot/grub 3. otwieramy do edycji plik menu.lst (za pomocą dowolnego edytora tekstu, np. mcedit); w pliku tym są zapisane informacje jakie systemy operacyjne są na naszym komputerze zainstalowane, na jakich partycjach, oraz dodatkowe opcje bootloadera
Opcja "default" Na początku pliku menu.lst znajduje się wpis default 0 lub podobny. Może go też nie być, ale w większości dystrybucji powinien on wyglądać właśnie tak. Przy tym wpisie jest opis (komentarz - linie zaczynające się od "#"), który objaśnia znaczenie tej opcji (oczywiście po angielsku). Jeżeli nie ma tego wpisu, to można go utworzyć. Jak ustawić W dalszej części pliku znajdują się wpisy typu title Debian GNU/Linux, kernel 2.4.27-2-686 root (hd0,2) kernel /vmlinuz-2.4.27-2-686 root=/dev/hdc7 ro initrd /initrd.img-2.4.27-2-686 savedefault boot Każdy wpis ma swój nr. (m[. pierwszy wpis ma numer 0, itd.), Znajdujemy wpis, który nas interesuje i liczymy, który ma numer. Ten numer wstawimy do opcji "default". UWAGA! Liczą się wszystkie wpisy, także te użyte nie do uruchamiania jakiegoś systemu, tylko do oddzielenia np. systemu Linux od innych systemów. Po wstawieniu odpowiedniej liczby do opcji default, zapisujemy plik /boot/grub/menu.lst, i to jużwszystko.
Opcja "timeout" Opcja ta mówi bootloaderowi ile czasu ma czekać zanim uruchomi domyślny sys. Operacyjny. Wystarczy znaleźć linijkę timeout. timeout 5 mówi bootloaderowi, że ma czekać 5 sekund zanim uruchomi domyślny system operacyjny. Jeżeli w tym czasie naciśniemy dowolny klawisz, to w tym momencie GRUB przestaje odmierzać czas - jeżeli np. naciśniemy strzałkę, ale nie wciśniemy ENTER, to nasz komputer zatrzyma się na tym etapie, i będzie czekał na ręczne wybranie systemu do uruchomienia.
Opcja "savedefault" Jeżeli chcemy, żeby za każdym razem domyślnie uruchamianym systemem był ten, który ostatnio uruchomiliśmy, to zamiast liczby, w linijce "default" wpisujemy: default saved Teraz trzeba sprawdzić, czy przy każdym z wpisów uruchamiających jakiś system, jest linijka savedefault Znajduje się ona po linijkach "title" i "root", ale przed bootowaniem systemu. Jak rozpoznać, które linijki oznaczają bootowanie systemu: - jeżeli wpis dotyczy Linuksa, lub podobnego systemu operacyjnego (UNIX, BSD), to będzie to linijka boot - jeśli jest to Windows 95/98, to będzie to: makeactive chainloader +1 w przypadku Windowsa NT wpis będzie zapewne podobny (lub identyczny) jak dla Win 98 Dlaczego to ważne? GRUB może zapisać, który system został wybrany, tylko przed zabootowaniem dowolnego systemu, ponieważ bootowanie systemu oznacza zakończenie pracy GRUBa, i załadowanie w jego miejsce kodu uruchamiającego dany system, który w tym momencie przejmuje całą kontrolę nad sprzętem. Łącze szeregowe Ciekawą możliwością jest używanie GRUBa na systemach pozbawionych dostępu do klawiatury / monitora (czy wręcz karty graficznej) a wyposażonych w port szeregowy. Aby GRUB wyświetlał menu poprzez port szeregowy należy umieścić w pliku konfiguracyjnym wpisy: serial --unit=0 --speed=115200 terminal --timeout=5 console serial
GRUB musi w tym celu być skompilowany z obsługą linii szeregowej. Parametr speed definiuje szybkość łącza (można ustawić także inne parametry, takie jak kontrola parzystości, bity stopu, etc.) natomiast unit wskazuje numer portu szeregowego (porty numerowane są od zera). Terminal definiuje konsolę i łącze szeregowe, wykrycie aktywności w ciągu 5 sekund spowoduje wybranie danego terminala i wyświetlenie menu. Warto skonfigurować także system operacyjny, aby wysyłał komunikaty diagnostyczne na ten sam port, dla linuksa: kernel [ścieżka do jadra] root=[urzadzenie z glownym systemem plikow lub initrd] console=tty0 console=ttys0,115200 [pozostale opcje...] Bezpieczeństwo Choć fizyczny dostęp do komputera zwykle oznacza, że potencjalny atakujący prędzej czy później znajdzie sposób aby się do niego włamać (jedynym realnym zabezpieczeniem jest silne szyfrowanie sprzętowe danych na dysku połączone z autoryzacją biometryczną) to jednak warto spróbować nieco poprawić zabezpieczenia systemu przed niepowołanym dostępem, zwłaszcza, że GRUB posiada ogromne możliwości i osoba z dostępem do jego shella może dokonać poważnych zniszczeń (z usunięciem/uszkodzeniem partycji włącznie). Możliwe jest zabezpieczenie wybranych wpisów w menu oraz trybu shell za pomocą hasła: password --md5 [tu wstawiamy hash md5 hasła uzyskany za pomocą polecenia grub-md5- crypt] Jeśli do wpisu w menu dodamy polecenie lock, wówczas wykonanie odpowiadającej mu sekwencji poleceń będzie wymagać podania hasła.
Upiększamy GRUB'a: Aby dodać lub zmienić tło w menu GRUB'a dodajemy lub edytujemy w menu.lst następującą linię splashimage (hd0,7)/grub/nazwasplasha.xpm.gz (hd0,7) - partycja /grub/ - ścieżka dostępu możemy utworzyć własny katalog oczywiście nazwasplasha.xpm.gz Zmiana koloru czcionki i tła: Aby to zrobić dodajemy następujące linijki. Możemy to zrobić przed sekcją splashimage: foreground ffffff background 000000 - do oznaczeń kolorów używamy parametrów kolorów w formacie szesnastkowym RGB. Aby zmienić kolor podświetlenia i tła menu, dopisujemy na przykład coś takiego color cyan/blue white/blue