Program uruchomieniowy GRUB

Opracowany pierwotnie dla systemu GNU/Hurd, Grand Unified Bootloader (GRUB) stał się w końcu standardem w systemach linuksowych. W większości dystrybucji zastąpił on stopniowo tradycyjny Linux Loader (LILO). Przyczyną takiego stanu rzeczy są wszechstronne możliwości, które oferuje GRUB. Dla przykładu, posiada własny program instalacyjny i nie jest w tym względzie zależny od już istniejących systemów.

Opracowany pierwotnie dla systemu GNU/Hurd, Grand Unified Bootloader (GRUB) stał się w końcu standardem w systemach linuksowych. W większości dystrybucji zastąpił on stopniowo tradycyjny Linux Loader (LILO). Przyczyną takiego stanu rzeczy są wszechstronne możliwości, które oferuje GRUB. Dla przykładu, posiada własny program instalacyjny i nie jest w tym względzie zależny od już istniejących systemów.

Na rozkaz - warto wybrać GRUB ze względu na pokaźny zestaw komend systemowych dostępnych w wierszu poleceń programu.

Na rozkaz - warto wybrać GRUB ze względu na pokaźny zestaw komend systemowych dostępnych w wierszu poleceń programu.

Program ładujący oferuje między innymi wbudowaną obsługę systemów plików ReiserFS, ext2, FAT32 oraz BSD FFS. Jedna z najważniejszych jego właściwości polega na możliwości uruchamiania różnych systemów, na przykład różnych jąder Linuksa lub pochodnych UNIXa, jak FreeBSD i OpenBSD.

Funkcja o nazwie Chainloading umożliwia ponadto uruchamianie komercyjnych systemów, jak Microsoft Windows. Mechanizm polega na tym, że GRUB odwołuje się do poszczególnych programów ładujących lub bootsektorów dysku i przekazuje im uruchomienie systemu.

GRUB udostępnia zintegrowany wiersz poleceń, który pozwala wyszukiwać pliki lub przeglądać tablicę partycji. Podobnie jak standardowy system linuksowy, potrafi automatycznie uzupełniać nazwy plików po naciśnięciu klawisza tabulatora.

Sektor rozruchowy dysku, Master Boot Record (MBR) mieści tylko 512 bajtów danych. Z tego powodu GRUB jest podzielony na wiele części. Pierwsza część, stage1, znajduje się w MBR. Służy ona do ładowania plików stage1_5 oraz stage2. stage1_5 odpowiada za dostęp do różnych systemów plików, zaś stage2 zawiera właściwy program ładujący.

Pewna pułapka tkwi w sposobie, w jaki GRUB komunikuje się z twardym dyskiem. Numeracja zaczyna się zawsze od zera. Klika przykładów podajemy w tabeli.

GRUB jednakowo oznacza napędy SCSI oraz IDE. W systemie mieszanym numeruje najpierw napędy IDE, w drugiej kolejności SCSI. Napędy CD- ani DVD-ROM nie są uwzględniane.

Plik menu .lst

GRUB wczytuje ustawienia z pliku menu.lst, który musi znajdować się w folderze /boot/grub. Przykładowy zapis może wyglądać tak: (Listing 1).

Poszczególne punkty menu mają następujące znaczenie (Listing1):

default definiuje wpis ładowany standardowo przez GRUB. Także tutaj numeracja zaczyna się od zera, więc w przykładzie Windows został zdeklarowany jako standardowy system.

timeout podaje czas w sekundach, przez jaki system czeka na reakcję użytkownika, zanim zostanie uruchomiony automatycznie.

password nie wymaga wyjaśnień. Tylko wówczas, gdy użytkownik zna hasło i prawidłowo je poda, otrzyma dostęp do konsoli GRUB.

title to po prostu nazwa wskazanego systemu operacyjnego. W przykładzie masz wybór między Linux a Windows XP.

root informuje GRUB o tym, na której partycji znajdzie jądro Linuksa i ewentualnie potrzebny plik inicjujący rozruch systemu.

kernel i initrd określają dokładną lokalizację tych plików. Wiersz kernel może również zawierać dodatkowe opcje startowe.

Jeżeli drugi bootowalny system to partycja Windows, wpis root-noverify zastępuje polecenie root. Polecenie chainloader +1 powoduje odczytanie pierwszego sektora podanej partycji. Systemy Windows 95, 98 i Me uruchamiają się w pełni automatycznie, natomiast w przypadku pozostałych wersji Windows GRUB przekazuje zadanie uruchomienia systemu odpowiedniemu bootloaderowi (programowi uruchamiającemu) Windows.

Instalacja GRUB na dyskietce

Numeracja GRUB

Numeracja GRUB

Większość obecnych dystrybucji Linuksa umieszcza GRUB automatycznie w sektorze rozruchowym pierwszego twardego dysku. Zawsze jednak warto przygotować sobie dyskietkę awaryjną. System operacyjny Windows XP nadpisuje podczas instalacji Master Boot Record (MBR) własnymi danymi, usuwając w ten sposób GRUB. W opisie wykonania tej czynności zakładamy, że mamy do czynienia z kompletnym, zainstalowanym systemem Linux, a użytkownik jest zalogowany jako root.

Na początek należy sformatować dyskietkę jako nośnik rozruchowy. Gdy dyskietka jest włożona do napędu, wydaj polecenie:

mke2fs /dev/fd0

Dyskietka zostanie sformatowana w systemie plików ext2. Następne polecenie:

mkdir /floppy

tworzy folder floppy. Z kolei polecenie:

mount -t ext2 /dev/fd0 /floppy

sprawia, że dyskietka zostaje włączona do drzewa folderów i do nowo utworzonego folderu. Ważne jest, by dyskietka zawierała folder boot. Utworzy go polecenie:

mkdir /floppy/boot

W kolejnym kroku będą potrzebne pliki stage* z folderu głównego GRUB. Nie chodzi tu jednak o pliki z /boot/grub. W SUSE Linux 9.2 znajdują się one na przykład w /usr/lib/grub. W razie potrzeby pozostaje przeszukanie systemu i dopasowanie ścieżki dostępu poprzez:

cp -a /ŚCIEŻKA/DO/grub/ /floppy/boot/

oraz skopiowanie całego folderu na dyskietkę rozruchową.

Teraz potrzebny będzie opisany powyżej plik menu.lst. Dostosowane do danego systemu menu powinno znaleźć się w folderze floppy/boot/grub.

Ostatecznie GRUB jest instalowany w sektorze rozruchowym dyskietki. Polecenie:

grub

uruchamia powłokę GRUB. Teraz program potrzebuje informacji o ścieżce dostępu do foldera danych. Znajdują się one już na nośniku, polecenie:

root (fd0)

poinformuje o tym program ładujący

setup (fd0)

który uruchamia wreszcie instalację w sektorze rozruchowym dyskietki. Po pomyślnej instalacji polecenie:

quit

umożliwia powrót do normalnego systemu. Dla przetestowania skuteczności dyskietki, podczas następnego uruchomienia systemu można zmienić ustawienia BIOS-u, wybierając dyskietkę, jako pierwszy z napędów. Jeżeli operacja przebiegła pomyślnie, system uruchomi się z dyskietki.

Listing 1

# menu.lst

#

default=1

timeout=20

password=tajnehaslo

title Linux

root (hd0,1)

kernel /boot/vmlinuz root=/dev/hda2 vga=normal

initrd /boot/initrd

title Windows XP

rootnoverify (hd0,0)

chainloader +1

title Failsafe - SUSE LINUX 9.2

root (hd0,2)

kernel /boot/ root=/dev/hda3

initrd /boot/initrd


Zobacz również