background image

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

background image

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

background image

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

background image

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