GRUB
12
kwiecień 2009
13
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
GRUB
GRUB, czyli Grand Unified Bootloader, to menadżer bootowania systemu pozwalający uruchomić
dowolny system z każdego zainstalowanego w komputerze dysku. Stojąc pomiędzy procedurą POST
komputera, a załadowaniem jądra systemu. Posiada on większe możliwości niż samo uruchomienie
systemu.
Sylwester Zdanowski
G
RUB jest boot loaderem ładującym system
operacyjny. Stwierdzenie krótkie i prawdzi-
we, jak jednak program działa i dlaczego jest
potrzebny? Po włączeniu komputera BIOS
potrafi odczytać jedynie pierwsze 512 bajty urządzenia, z
którego ma być uruchomiony system. Jest to główny sektor
rozruchowy (ang. MBR). W sytuacji, gdy na dysku znajduje
się większa ilość systemów, jest to niewystarczające.
Ze względu na niewielkie możliwości BIOS-u, wyko-
rzystywany on jest jedynie do ładowania pierwszej części
boot leadera. Część ta pozwala na wczytanie właściwej czę-
ści programu przez niektórych nawet zwanej minimalnym
systemem operacyjnym. W tym miejscu program lądujący,
zależnie od swoich możliwości, pozwala na interakcje.
Historia GRUB-a
Idea stworzenia boot loadera o większych możliwościach niż
dostępne programy powstała w roku 1995, gdy Erich Boleyn
próbował uruchomić na jednej maszynie GNU HURD razem
z mikrokernelem Mach 4. W efekcie tych starań postanowił ra-
zem z Brianem Fordem stworzyć uniwersalny boot loader po-
zwalający uruchamiać wiele systemów. Program ten wraz ze
specyfikacją multiboot miał być lekarstwem na mnogość nie-
kompatybilnych ze sobą sposobów uruchamiania systemów.
Erich zaczął od modyfikowania boot loadera FreeBSD,
doszedł jednak do wniosku, iż łatwiej będzie napisać nowy
program niż rozwijać istniejące narzędzie. Nowo powsta-
łym programem był GRUB. Opiekę nad programem w ro-
ku 1999 przejęli Gordon Matzigkeit i Yoshinori K. Okuji,
przyjmując program jako oficjalny pakiet GNU.
Specyfikacja multiboot ujednolicająca sposób urucha-
miania systemu została przyjęta przez systemy Linux, Fre-
eBSD, NetBSD, Mach, VSTa. Jednak możliwość urucha-
miania różnych systemów operacyjnych nie jest wyłączną
cechą GRUB-a. Znacznie starszy boot loader LILO rów-
nież nie ma z tym problemów. Nie posiada on jednak wielu
możliwości GRUB-a:
• nie dysponuje linią poleceń;
• nie wspiera uruchamiania systemu przez sieć;
• zmiana konfiguracji wymaga nadpisania MBR, w efek-
cie niemożliwe może stać się uruchomienie boot lo-
adera. W przypadku GRUB-a nie uruchomi on się je-
dynie po nadpisaniu MBR przez inny system.
Dla Początkujących
GRUB
12
kwiecień 2009
13
www.lpmagazine.org
Dzięki tej przewadze GRUB stał się najpopu-
larniejszym boot loaderem.
Podstawowe parametry
Na dużą elastyczność pozwala GRUB-owi od-
czytywanie plików z dysku twardego.
Zazwyczaj jest on instalowany jednorazo-
wo razem z systemem. W przypadku dwóch
systemów na jednym dysku, jak Windows i
Linux, kwestią czasu jest konieczność reinsta-
lacji GRUB-a. Wówczas przydaje się wiedza
o tym w jaki sposób pracuje Boot loader.
Sposób ładowania systemu i przyjmowa-
ne parametry można łatwo zrozumieć na przy-
kładzie pliku menu.lst, widocznego na Listin-
gu 1, z którego przy każdym uruchomieniu
komputera GRUB pobiera konfiguracje.
Pierwsze dwie linie określają domyślne
zachowanie GRUB-a, po 6 sekundach załaduje
on pierwszy wymieniony system operacyjny.
W linii 3 możliwe jest zdefiniowanie schematu
kolorów z jakich korzysta program. Jego wy-
gląd można zmienić przez dołączenie przezna-
czonego do tego celu pliku graficznego. Załą-
czony w linii 4 plik umieszczony jest na dysku
sda1. Widać tutaj, iż GRUB nie rozróżnia dys-
ków ATA, SATA czy SCSI, zawsze korzysta z
oznaczenia hd z odpowiednią cyfrą. Widoczny
na Rysunku 1 obraz dla GRUBA można zna-
leźć na stronie: http://www.queervisions.com/
arch/2007/04/9_grub_splash_i.html.
W linii 5 znajduje się wyświetlana przez
GRUB-a nazwa ustawiona dla systemu, które-
go dotyczą kolejne parametry. W linii 6 opcja
root określa, na którym dysku i której partycji
znajduje się system do załadowania. Pierwsza
cyfra oznacza dysk, druga zaś numer partycji.
W linii 7 znajduje się nazwa pliku zawie-
rającego jądro systemu oraz położenie głów-
nej partycji. Warto zwrócić uwagę, iż jest ona
już podana w zwykłej notacji hda, nie hd.
Opcja ro nakazuje montowanie partycji tyl-
ko w trybie do odczytu. Umożliwia to kon-
trolę partycji przez program fdisk. Następna
opcja quiet wyłącza znaczną część informa-
cji jakie mogą zostać wyświetlone na moni-
torze w trakcie uruchamiania. Kolejna opcja,
vga, pozwala na wybór rozdzielczości z jaką
będzie pracowała konsola. Możliwe parame-
try znajdują się w Tabeli 1.
Działanie tej opcji jest jednak powiąza-
ne ze skompilowanymi elementami jądra oraz
posiadanymi czcionkami. Nie należy łączyć
jej działania ze środowiskiem graficznym,
szczególnie jeżeli zostały dla niego wgra-
ne dodatkowe sterowniki karty graficznej. W
przypadku niektórych kart graficznych wyko-
rzystanie tej opcji będzie stwarzało problemy,
w innych po prostu będzie działać.
Ostatni parametr linii siódmej, ram-
disk_size, jest przydatny jeżeli chcemy korzy-
stać z ram dysków. Pozwala on kontrolować
rozmiar, jaki otrzyma domyślnie taki dysk.
Rysunek 1.
Zmieniony wygląd GRUBA-a
Listing 1.
Przykład pliku menu.lst
1
:
Default
0
2
:
timeout
6
3
:
color
cyan
/
blue
white
/
blue
4
:
splashimage
=(
hd0
,
1
)
/
boot
/
grub
/
splash
.
xpm
.
gz
5
:
title
Debian
Lenny
6
:
root
(
hd0
,
0
)
7
:
kernel
/
vimlinuz
-
2.6
.
27.2
root
=
/
dev
/
hda2
ro
quiet
vga
=
0x303
ramdisk_
size
=
64000
8
:
initrd
/
initrd
.
img
-
2.6
.
27.2
9
:
title
Windows
10
:
rootnoverify
(
hd0
,
0
)
11
:
makeactive
12
:
chainloader
+
1
Tabela 1.
Parametry opcji vga określającej parametry graficzne konsoli
640x480
800x600
1024x268
1280x1024
256
0x301
0x303
0x305
0x307
32k
0x310
0x313
0x316
0x319
64k
0x311
0x314
0x317
0x31A
16M
0x312
0x315
0x318
0x31B
Dla Początkujących
GRUB
14
GRUB
kwiecień 2009
15
www.lpmagazine.org
W linii 8 znajduje się nazwa ram dysku,
który zostanie załadowany. Jego zawartość za-
leży od sposobu w jaki zbudowane zostało ją-
dro systemu.
W linii 9 rozpoczyna się część odpowiedzial-
na za uruchomienie systemu Windows. Jest ona
poprawna pod warunkiem, że system znajduje się
na partycji hda1. Opcja chainloader służy przej-
ściu do boot loadera systemu Windows. GRUB
nie uruchamia tego systemu bezpośrednio.
GRUB daje znacznie więcej możliwości
konfiguracji, niż zostało wykorzystane w po-
danym przykładzie.
Pełen opis przyjmowanych przez boot lo-
adera parametrów można znaleźć na stronie:
http://www.linuxselfhelp.com/gnu/grub/html_
chapter/grub_toc.html. W Tabeli 2 znajdują się
jedynie wybrane parametry.
Wprowadzane w taki sposób zmiany do
pliku menu.lst zostaną jednak usunięte w
przypadku aktualizacji GRUB-a. Zapobiec
temu można wpisując konfigurację w do-
myślne ustawienia. Należy w tym celu od-
naleźć w pliku menu.lst sekcje Start Default
Options, i w niej zapisać ustawienia. Waż-
ne jest, aby nie usuwać komentarza z po-
czątku linii.
Problemy z GRUB-em
Problemy z GRUB-em przeważnie są spowo-
dowane instalacją drugiego systemu. Drugą
możliwością jest wprowadzenie niewłaściwe-
go parametru do pliku menu.lst.
Przed drugą możliwością można chronić
się w bardzo prosty sposób. W trakcie urucha-
miania systemu boot loader pozwala na mo-
dyfikacje parametrów bez ich zapisywania.
W efekcie, system uruchomi się z nimi tyl-
ko raz. Aby dokonać takiej jednorazowej mo-
dyfikacji wystarczy z listy systemów do zała-
dowania wybrać wpis, który chcemy zmodyfi-
kować i wcisnąć literę e. Wyświetlone zostaną
informacje dotyczące ładowania systemu. Po-
niżej na ekranie znajduje się opis, w jaki spo-
sób modyfikować i dodawać nowe linie. Słu-
żą temu litery e oraz o. Wszystkie nowe pa-
rametry dotyczące ładowania systemu można
w ten sposób przetestować bez ryzyka poważ-
nych problemów.
Najgorszą możliwą sytuacją jest jednak
całkowite zastąpienie GRUB-a w głównym
sektorze rozruchowym przez inny program ła-
dujący. Sytuacja taka jest normalna przy in-
stalacji systemu Windows. Jeżeli już do tego
doszło, istnieje kilka dróg ratunku. Najszyb-
szą metodą jest uruchomienie dyskietki ratun-
kowej, którą można przygotować na spraw-
nym systemie za pomocą trzech poleceń z Li-
stingu 2.
Tak utworzona dyskietka da możliwość
ponownej instalacji GRUBa na dysku twar-
dym.
Uruchomiona z dyskietki konsola posiada
możliwości służące tylko i wyłącznie do pra-
cy z GRUB-em. Listę wszystkich poleceń, jak
i możliwości uzupełnienia wpisywanych pole-
ceń, można otrzymać przez wciśnięcie klawi-
sza Tab. Przed wgraniem boot loadera należy
zamontować właściwą partycję, a następnie
dopiero zainstalować program. Ustalić, któ-
ra partycja na dysku jest prawidłowa. Moż-
na to zrobić za pomocą polecenia
find
. Prawi-
dłową odpowiedź na to polecenie widać na Li-
stingu 3.
Po prawidłowym wykonaniu tej czynno-
ści, przy starcie systemu pojawi się GRUB. Je-
żeli z jakiegoś powodu nie będzie chciał uru-
chamiać systemu, możliwa jest już edycja bez
użycia dyskietki.
Jeżeli nie posiadamy dyskietki, istnieje
nieco bardziej złożona możliwość z wykorzy-
staniem dystrybucji LiveCD.
Po uruchomieniu systemu z płyty należy
zamontować partycję zawierającą GRUB-a.
Następnie wydać polecenia widoczne na Li-
stingu 4, przy założeniu, że zamontowaliśmy
dysk do katalogu hda.
Jeżeli problem był spowodowany instala-
cją Windowsa, powyższe postępowanie przy-
wróci okno GRUB-a przy starcie systemu,
ale niekoniecznie będzie on uruchamiał Li-
nuksa. Jeżeli Linux w dalszym ciągu nie bę-
dzie chciał się uruchomić, będzie to oznacza-
ło zmianę partycji. Należy wówczas edytować
plik menu.lst i zmienić partycję root.
Skuteczną metodą unikania powyższych
czynności naprawczych może być instalacja
systemu Windows przy użyciu dyskietki star-
towej. Jeżeli dyskietka taka zostanie urucho-
Tabela 2.
Wybrane opcje konfiguracji GRUB-a
parametr
opis
com1=115200, 8n1
Opcja ta zamienia pierwszy port szeregowy w kon-
sole szeregową.
fallback 1
Jeżeli uruchomienie domyślnego systemu nie po-
wiedzie się, program spróbuje uruchomić drugą
wskazaną konfigurację
hiddemenu
Pozwala ukryć menu GRUB-a
mem=1024M
Przekazuje do jądra systemu jak dużo pamię-
ci podręcznej znajduje się w systemie. W przykła-
dzie 1GB użyteczne, gdy system nie wykrywa ca-
łej pamięci
password
Pozwala na zabezpieczenie GRUB-a hasłem
Dla Początkujących
Rysunek 2.
Położenie programu do tworzenia systemu na USB
14
GRUB
kwiecień 2009
15
www.lpmagazine.org
miona po starcie GRUB-a, może on zmie-
nić ustawienie partycji, jakie będzie dostęp-
ne dla systemu Windows. W efekcie, nieza-
leżnie na którą partycję zostanie zainstalowa-
ny, będzie uważał, iż znajduje się na pierw-
szej. Ponadto nie nadpisze posiadanego bo-
ot loadera. Metoda ta niestety jest skuteczna
tylko dla systemów opierających się przy in-
stalacji na informacjach przekazanych przez
BIOS. Konfiguracja takiej opcji znajduje się
na Listingu 5.
W linii 2 i 3 na Listingu 5 mapowane są
dwie partycje w taki sposób, aby system Win-
dows widział je na zamienionych pozycjach.
Identyczne działanie mają linie 7 i 8 wykorzy-
stywane przy uruchamianiu instalacji z dys-
kietki.
Ratunek z USB
Problem z ratowaniem boot loadera powsta-
je, gdy dysponujemy laptopem bez stacji dys-
kietek i bez napędu CD-ROM. Sytuacja taka
nie jest niczym nadzwyczajnym w przypadku
niewielkich laptopów wyposażonych w napęd
podłączany poprzez złącze USB.
Z ratunkiem przychodzi dystrybucja
Ubuntu w wersji 8.10. Można ją pobrać pod
adresem http://releases.ubuntu.com/releases/
8.10/ubuntu-8.10-desktop-i386.iso.
Przy
czym należy również zaopatrzyć się w plik z
sumą kontrolną w celu sprawdzenia popraw-
ności obrazu. Po wypaleniu i uruchomieniu
płyty dostępny jest program Create USB star-
tup. Jego położenie w systemie widoczne jest
na Rysunku 2. Program sam wykona wszyst-
kie czynności, wystarczy jedynie podłączyć
do komputera pendrive 2GB lub większy.
W zależności od wykorzystywanego pendri-
ve'a należy przygotować się na długi czas wy-
konywania tej operacji.
Metoda ta kryje jednak pewną pułapkę.
Ubuntu uruchamiane z płyty CD ma problemy
z obsługą niektórych pendriv'ów. Przykładem
jest Kingston DataTraveler 400 2GB. W jego
przypadku kopiowanie plików zostaje prze-
rwane najdalej po wykonaniu kilku procent.
Z kolei metoda ta sprawdzi się dla karty micro
SDHC 4GB firmy SanDisk.
Alternatywną możliwością jest wy-
korzystanie systemu Windows i progra-
mu Ubuntu810PL do pobrania pod adresem
http://www.pendrivelinux.com/downloads/
Ubuntu810P.exe. Należy pamiętać, aby w ka-
talogu, do którego rozpakowany zostanie pro-
gram, umieścić obraz płyty Ubuntu. Jeżeli
program nie znajdzie obrazu płyty, rozpocz-
nie jego pobieranie przez internet.
Przygotowany w powyższy sposób pen-
drive można wykorzystać do ratowania bo-
ot loadera w sposób identyczny jak system
z płyty. Metoda ta ma jednak pewna przewagę.
System taki można dostosować do własnych
upodobań i wyposażyć w dowolne dostępne
narzędzia. Daje on również możliwość pracy
na dowolnym komputerze z własnym syste-
mem operacyjnym.
Podsumowanie
GRUB stanowi potężne narzędzie. Powyżej
przedstawione informacje dają jedynie pogląd
na jego możliwości. Ze względu na swoje zna-
czenie dla funkcjonowania systemu jak i jego
bezpieczeństwa powinien on być znany każ-
demu użytkownikowi systemu. Osoby chcące
sięgnąć głębiej niż podstawowe funkcje mo-
gą wykorzystać mogą wykorzystać GRUB-a
do uruchomienia systemu z niemal dowolne-
go nośnika.
Program ten jeszcze długo będzie najlep-
szym narzędziem do wykonywanej przez sie-
bie pracy. dlatego też warto poznać go lepiej
niż pozwala na to ten artykuł.
Listing 2.
Tworzenie dyskietki ratunkowej
1
:
cd
/
boot
/
grub
2
:
dd
if
=
stage1
of
=
/
dev
/
fd0
bs
=
512
count
=
1
3
:
dd
if
=
stage2
of
=
/
dev
/
fd0
bs
=
512
seek
=
1
Listing 3.
Wyszukiwanie partycji zawierającej GRUB-a
1
:
find
(
hd0
,
0
)
/
grub
/
stage1
2
:
(
hd0
,
0
)
3
:
(
hd0
,
4
)
4
:
(
hd1
,
0
)
5
:
root
(
hd0
,
0
)
6
:
setup
(
hd0
)
Listing 4.
Przywracanie GRUB-a z LiveCD
1
:
chroot
hda
2
:
grub
3
:
root
(
hd0
,
0
)
4
:
setup
(
hd0
)
Listing 5.
Mapowanie dysku dla systemu Windows 98
1
:
title
Windows
98
2
:
map
(
hd0
,
0
)
(
hd0
,
2
)
3
:
map
(
hd0
,
2
)
(
hd0
,
0
)
4
:
rootnoverify
(
hd0
,
2
)
5
:
chainloader
+
1
6
:
title
DOS
Boot
Disk
7
:
map
(
hd0
,
0
)
(
hd0
,
2
)
8
:
map
(
hd0
,
2
)
(
hd0
,
0
)
9
:
chainloader
(
fd0
)+
1
• http://www.gnu.org/software/grub/manual/grub.txt – podręcznik GRUB-a;
• http://www.gnu.org/software/grub/manual/multiboot/multiboot.txt – specyfikacja
multiboot;
• http://www.ibm.com/developerworks/linux/library/l-bootload.html – działanie boot
loadera;
• http://www.pendrivelinux.com/ – Instalowanie Linuxa na USB.
W Sieci
Dla Początkujących
GRUB
Absolwent technikum policealnego na kie-
runku informatyki w Szczecinie. Obecnie
student 2 roku Europeistyki na Uniwersy-
tecie Szczecińskim. Od ponad roku pra-
cownik firmy świadczącej usługi interneto-
we w Gryfinie.
Kontakt z autorem:
sylwesterzdanowski@o2.pl
O autorze