GRUB bez tajemnic

22 lutego 2006, seaman

GRand Unified Boot loader (GRUB) staje domyślnym programem ładującym system w wielu dystrybucjach Linuksa. Jego zalety powodują, że powoli zdobywa przewagę nad LILO (LInux LOader). Używając go nie musimy pamiętać o wykonywaniu komendy /sbin/lilo w celu zatwierdzenia dokonanych zmian, dzieje się to automatycznie. Ponadto może on funkcjonować jako bootloader nośników wymiennych takich jak dyskietki, CD-ROMy czy dyski USB. Zainstalowany na twardym dysku, w połączeniu z innymi narzędziami, GRUB staje się potężnym, ale też wyrafinowanym, narzędziem pozwalającym na komfortową obsługę komputera domowego lub firmy.

Autor: Jeremy Turner, tłumaczenie: seaman
Tekst oryginalny: GRUB tips and tricks

Wprowadzenie

Zacznijmy od tego czym dokładnie jest GRUB. GRUB jest bootloaderem, programem, który sprawuje kontrolę nad procesami zachodzącymi w trakcie uruchamiania jądra i systemu (Power-On Self Test - POST) naszej dystrybucji Linuksa. Nadzoruje on również ładowanie modułów jądra, tak aby załadowane zostały tylko te, które są mu potrzebne. Nie tylko skraca to czas ładowania systemu, ale również pozwala na zachowanie cennych zasobów komputera podczas uruchamiania systemu z nośników wymiennych. Ładowanie systemu odbywa się automatycznie, zgodnie z ustawieniami zapisanymi w pliku konfiguracyjnym więc nie ma potrzeby ręcznego wpisywania komend. Jakkolwiek opcja taka również jest dostępna na wypadek błędu lub problemu z wczytaniem pliku konfiguracji.
Ogromną zaletą wolnego oprogramowania jest fakt, że mamy szeroki wybór programów służących do tego samego celu. Alternatywą dla GRUB-a jest LILO, syslinux czy isolinux (także GAG - dop. seaman). Dlaczego więc używać akurat tego programu? Jednym z jego walorów jest możliwość współpracy z wieloma różnymi dyskami, które są obsługiwane przez jeden plik konfiguracyjny. Ponadto współpracuje on również z różnymi typami nośników tak, że nasz system możemy uruchomić z płyty CD, dyskietki, dysku (klucza) USB, a nawet przez serwer TFTP posiadający PXE ROM.

Instalacja GRUB na kluczu USB

Klucz USB
Rysunek 1: GRUB można uruchomić
z klucza USB!

Inspiracją do napisania tego artykułu była próba uruchomienia DSLinux (DSL), graficznej dystrybucji Linuksa o wielkości ok. 50MB. Po zapoznaniu się z instrukcją instalacji na kluczu USB tej dystrybucji, zamieszczonej na oficjalnej stronie projektu, stwierdziłem, że mogę do tego użyć mój Lexar 256 MB JumpDrive. Dokumentacja DSL zawiera informacje na temat instalacji za pomocą syslinux oraz sposób konfiguracji dysku, ale nie udało mi się dokonać ani jednej próby uruchomienia tego systemu zakończonej powodzeniem. W końcu zdecydowałem się na użycie GRUB-a i system DSL wystartował za pierwszym razem!

Przygotowanie naszego klucza USB z systemem Linux zacznijmy od stworzenia odpowiedniej struktury katalogów do przechowywania plików niezbędnych do jego uruchamiania tak, aby znajdowały się one w jednym miejscu obdzielone od pozostałych plików, które chcemy przechowywać na naszym kluczu USB. Właściwie powinny zostać stworzone dwie partycje, ale mogą potem pojawić się problemy z ich prawidłowym odczytem w systemie Windows. Na naszym kluczu USB stworzymy katalog /boot, w którym umieścimy wszystkie dane niezbędne do uruchomienia systemu.

Klucz USB
Rysunek 2: Struktura katalogu
/boot klucza USB

W tym katalogu utworzymy podkatalogi /grub dla plików konfiguracyjnych, /images zawierający pliki inicjujące (initrd) i obrazy dysków czy dyskietek (.img) oraz /kernels, w którym umieścimy nasze kernele. Przedstawiono to graficznie na rysunku 2. Oczywiście układ ten jest przykładowy i można dokonać jego modyfikacji w dowolny sposób, ale należy pamiętać, aby te zmiany miały swoje odzwierciedlenie w pliku konfiguracyjnym menu.lst. Przykładowy plik menu.lst zamieszczono poniżej.

default=0
timeout=10
root=(hd0,0)
splashimage=/boot/grub/debsplash.xpm.gz

title DSL 1.2 (2.4.26) 1024x768 (save to RAM)
kernel /boot/kernels/dsl-linux24 \
ramdisk_size=100000 init=/etc/init lang=us \
apm=power-off vga=791 toram nomce noapic \
quiet knoppix_dir=images knoppix_name=dsl
initrd=/boot/images/dsl-minirt24.gz

title Debian Sarge Installer
kernel /boot/kernels/di-vmlinuz \
initrd=/boot/images/di-initrd.gz \
ramdisk_size=10240 root=/dev/rd/0 \
devfs=mount,dall rw
initrd /boot/images/di-initrd.gz

title HP nx5000 F0.d BIOS Upgrade
kernel /boot/kernels/memdisk
initrd /boot/images/hpnx5000f0d.img

title Memtest86+ (1.60)
kernel /boot/kernels/memdisk
initrd /boot/images/memtestp.bin

Następnie musimy skopiować pliki stage (stage1, stage2 i fat_stage1_5) do katalogu /boot/grub na naszym kluczu USB. Pozwoli to na uruchamianie z niego naszej dystrybucji Linuksa, a także innych systemów operacyjnych. Po skopiowaniu niezbędnych plików nadszedł czas na instalację GRUB-a w MBR (Master Boot Record).

Proces instalacji na kluczu USB wygląda tak samo jak na dysku twardym :

# grub
grub> find /boot/grub/stage1
 (hd0,1)
 (hd2,0)

W naszym systemie hd0 to urządzenie /dev/hda (pierwszy dysk twardy), natomiast nasz klucz USB to hd2 (/dev/sda). Aby się co do tego upewnić wykonujemy:

grub> find (hd2,0)/boot/im<TAB>
grub> find (hd2,0)/boot/images/

Oczywiście chcemy zainstalować nasz program uruchomieniowy na dysku hd2:

grub> root (hd2,0)
 Filesystem is type fat, partition type 0xb
grub> setup (hd2)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/fat_stage1_5" exists... yes
 Running "embed /boot/grub/fat_stage1_5 (hd2)"...  \
15 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd2) (hd2)1+15 p \
(hd2,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.
grub> quit

Po tej operacji mamy zainstalowanego GRUB-a w MBR naszego klucza USB. Następnie musimy umieścić kilka plików w katalogu /boot naszego klucza oraz stworzyć plik konfiguracyjny menu.lst.

GRUB z obrazem dysku

Kolejną z zalet GRUB-a jest fakt, że można go użyć wraz z memdisk do uruchomienia obrazu dysku. Używając kernela memdisk, możemy załadować i uruchomić obraz dysku. Do czego to może być przydatne? Załóżmy, że posiadamy kilka komputerów stacjonarnych i przenośnych. Możemy stworzyć “bootowalny” CD lub klucz USB, na którym umieścimy wszystkie dane potrzebne do dokonania aktualizacji BIOS-u lub testów sprzętu. Zamiast krążyć wśród tych komputerów z pękiem dyskietek lepiej skopiować ich obrazy na płytę CD lub klucz USB. Korzystając z tej metody możemy stworzyć sobie również obraz Memtest86+ na płycie CD lub kluczu USB. Poniżej znajduje się przykład odpowiedniego wpisu w pliku menu.lst dla Memtest86+:

title MemTest86+ Ver 1.60
	kernel /boot/kernels/memdisk
	initrd /boot/images/memtestp.bin

W tym wypadku nie trzeba nawet definiować systemu plików. Należy jedynie sprawdzić nazwy plików i ścieżki do nich.

DSLinux na kluczu USB

Jak uruchomić Linuksa w środowisku graficznym na kluczu USB za pomocą bootloadera GRUB? W pierwszej kolejności należy pobrać obraz .iso dystrybucji DSL i nagrać ją na CD lub zamontować przez loopback:

# mkdir dsl-test
# mount -t iso9660 -o loop dsl-image.iso dsl-test

Następnie należy skopiować plik KNOPPIX, kernel i initial ramdisk:

# cp dsl-test/KNOPPIX/KNOPPIX /media/usb/boot/images/dsl
# cp dsl-test/boot/isolinux/linux24 \
/media/usb/boot/kernels/dsl-linux24
# cp dsl-test/boot/isolinux/minirt24.gz \
/media/usb/boot/images/dsl-minirt24.gz
# sync
# umount dsl-test && rmdir dsl-test

Damn Small Linux
Rysunek 3: Damn Small Linux (DSL) to dystrybucja
Linuksa zawierająca środowisko graficzne
i zajmująca tylko 50 MB!

Zakładamy, że nasz klucz USB jest zamontowany w /media/usb. Trzeba jeszcze sprawdzić czy nasz plik /media/usb/boot/grub/menu.lst zawiera właściwe ścieżki do plików niezbędnych do uruchomienia systemu. Można też zwrócić uwagę czy w linii root określa urządzenie (hd0,0), mimo, że wcześniej używaliśmy (hd2,0). Po uruchomieniu komputera i “bootowaniu” systemu z klucza USB to właśnie on jest traktowany jako hd0, a nie twardy dysk. Jeśli wszystko wygląda OK czas na ponowne uruchomienie systemu, tym razem już z naszego klucza USB. Należy jeszcze upewnić się, że w BIOS-ie komputera jako pierwsze urządzenie rozruchowe jest ustawione USB-HDD, USB-ZIP lub USB-FLOPPY (nie wszystkie wersje BIOS na to pozwalają - seaman). Czasem trzeba trochę poeksperymentować, aby trafić we właściwe urządzenie. Po uruchomieniu GRUB-a wybieramy DSL i startujemy system. Jeśli popełniliśmy jakiś błąd i nie daje się załadować jądra systemu można spróbować go naprawić w linii poleceń. W tym celu naciskamy ‘c’.

GRUB splashimage

Kolejną przydatną funkcją GRUB-a jest możliwość umieszczenia grafiki, która będzie wyświetlana na ekranie monitora podczas wyboru systemu. Domyślnie GRUB jej nie posiada i wyświetlany ekran jest czarno-biały. Nic nie stoi na przeszkodzie, aby zmienić kolory tła i czcionki oraz dodać jakiś obraz. Można go stworzyć samemu pamiętając, aby spełniał określone kryteria. Powinien być w formacie .xpm (X Pics Map - seaman), maksymalna paleta kolorów to 14, a jego rozmiar to 640×480. Stworzenie takiego obrazu za pomocą programu Gimp nie jest specjalnie trudne. Można też użyć do tego celu pakietu ImageMagick. Wystarczy tylko wydać komendy:

$ convert -resize 640x480 -colors 14 mycoolpicture.jpg \
mybootsplash.xpm
$ gzip mybootsplash.xpm

i nasz obraz mycoolpicture.jpg zostanie zeskalowany do rozmiaru 640×480, kolory zredukowane do 14 i zapisany w formacie XPM, a następnie skompresowany przy użyciu gzip. (tak naprawdę nie jest to takie proste i znalezienie odpowiedniego obrazu, który będzie dobrze wyglądał w tym formacie nie jest takie łatwe - seaman).

Jeśli nie mamy ochoty na tworzenie własnych obrazów zawsze można pobrać już gotowe. Poniżej znajdują się linki do odpowiednich stron internetowych.

Jeśli mamy już nasz obraz jako plik .xpm lub .xpm.gz musimy dodać odpowiednią linię do pliku menu.lst, aby program mógł go wczytać. Powinna ona wyglądać podobnie do tej:
splashimage=/boot/grub/debsplash.xpm.gz

Jak widać ja używam pliku z grafiką Debiana…

GRUB na dysku CD

Program GRUB, jak było o tym wcześniej wspomniane, można również zainstalować na “bootowalnym” dysku CD. W tym celu, po stworzeniu obrazu ISO, skorzystamy z funkcji jakie posiada mkisofs. W linii poleceń wydajemy komendę:

$ mkdir -p iso/boot/grub
$ cp stage2_eltorito iso/boot/grub
$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
	-boot-load-size 4 -boot-info-table -o grub.iso iso

Kluczem do powodzenia tej operacji jest skopiowanie pliku stage2_eltorito do katalogu /boot/grub obrazu CD. Można także również nagrać na CD plik menu.lst, kernel i obraz dysku, a także splashimage. W pliku menu.lst należy użyć (cd) jako urządzenia rozruchowego zamiast (hd0).

Zakończenie

Gratulacje! Jeśli przebrnąłeś przez wszystkie operacje powinieneś posiadać “bootowalny” klucz USB w dystrybucją DSL oraz memtest86+, a także jakiś splashimage. Ponadto powinieneś wiedzieć jak dodać inne obrazy dysków, np. zawierające update BIOS-u.

Przydatne strony internetowe


Licencja i informacja o autorze

Poniższe informacje zamieszczone zostały po angielsku, ponieważ taka była wola autora oryginalnego tekstu. Dotyczą one licencji na jakiej rozpowszechniany jest tekst oraz zawierają krótką notkę o autorze.

License

(c) 2005 Jeremy Turner

This article is made available under the “Attribution-NonCommercial-NoDerivs” Creative Commons License 2.0 available from http://creativecommons.org/licenses/by-nc-nd/2.0/.

About the author

Jeremy Turner enjoys freelance writing when given the opportunity. He often plays system administrator, hardware technician, programmer, web designer, and all-around nice guy. You contact him by visiting his web site.


Komentarze (RSS) | Trackback (URI)

Liczba komentarzy: 11

zwiń wątek wojtek79  26 lutego 2006 o godz. 22:31 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Bardzo fajny artykuł. Wcześniej nie mogłem sobie poradzić z podmianą obrazka w GRUBie a teraz poszło eleganco :)

 
zwiń wątek Robert Top.  2 marca 2006 o godz. 0:04 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

takie pytanie:
proszę w paru słowach /z przykładu praktycznego zastosowania też się obrażę się/ wyjaśniś przeznaczenie takich pliczków:

nbgrub
stage2.netboot
pxegrub

 
zwiń wątek seaman  2 marca 2006 o godz. 12:54 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Pliki te niezbędne są do “bootowania” systemu poprzez sieć. Dokładnie jest to opisane (w j. ang.) tam –>
http://www.informatik.hu-berlin.de/~draheim/boot/grub-netboot.html
P.S.
Nie wiem o co chodzi z tym obrażaniem…

 
zwiń wątek Robert Top.  15 marca 2006 o godz. 23:12 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

po doooooooooosyć dlugiej nieobecności, jestem. Dziękuję Seaman-owi, miało być:
… /z przykładu praktycznego zastosowania też się NIE obrażę/…

to taka dziwna “konstrukcja”

Hm, tak sobie myślę czy ta “spóźniona odpowiedź/wypowiedź trafi doadresata.

Pozdrawiam.

 
zwiń wątek seaman  16 marca 2006 o godz. 21:49 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]
 
zwiń wątek GROSZ-ek  9 czerwca 2006 o godz. 16:02 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

A jest jakiś sposób na bootowanie z poziomu GRUB-a (nie BIOS) bootowalnych płyt CD?
I do czego służy iso9660_stage1_5?
W dokumentacji GRUB brak o tym informacji zarówno o jednym jak i drugim,…

GROSZ-ek

 
zwiń wątek seaman  31 sierpnia 2006 o godz. 11:52 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]
 
zwiń wątek lolne  9 stycznia 2007 o godz. 12:01 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Jak to jest ze GRUB ladowalny przeciez z HDD narzuca sposob bootowania mimo wyraznie przelaczonych w biosie boot opcji (wg kolejnosci obok:)na A,C lub CD-rom-, C, A, i wlacza sie jako pierwszy czyli jakby z HDD ktore nie jest ustawione w biosie jako 1 :((((

 
zwiń wątek adriatyk  3 marca 2007 o godz. 13:11 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Moze jakis przyklad dla slaxa tez ludzie maja z nim problemy z instalacja na dysku i pendrivie

 
zwiń wątek nextj  11 marca 2007 o godz. 13:35 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

http://www.pendrivelinux.com/
strona anglojęzyczna ale każdy powinien sobie poradzić :)
opis instalacji minidystrybucji na kluczach USB
1. DamnSmallLinux
2. Knoppix
3. Slax
4. MiniMe
5. XUbuntu

 
zwiń wątek lynxrk  7 czerwca 2007 o godz. 17:32 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: -3 [Pokaż komentarz]

niezły opis, miałbym pytanko:
jak na pendrivie skonfigurować gruba by móc odpalić kilka obrazków iso umieszczonych również na penie np. cd Knoppix.iso, WindowsVistaLive.iso,EBCD.iso,UBCD.iso itd. czy inne które nie są z założenia linuxami

 
Identyfikator (wymagane)
Adres e-mail (wymagany - nie pokażemy go publicznie)
Adres URI
Rozmiar pola: zmniejsz rozmiar | zwiększ rozmiar

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.

O Autorze

Krzysztof Knys

W serwisach grupy Jakilinux prawie od początku, czyli od 2005 roku. Obecnie na urlopie :)

RSS

Możesz śledzić komentarze do tego artykułu poprzez specjalny kanał; RSS 2.0 .

Konkurs!!!

Napisz lub przetłumacz artykuł i wygraj dysk USB 4GB z Mandrivą Flash! Konkurs trwa tylko do końca maja! Szczegóły na blogu.

Inne z kategorii Aplikacje

 więcej »

Najpopularniejsze

Porównaj dystrybucje!

vs

Oferty pracy JL

Butik JL

jakilinux butik
Obejrzyj więcej produktów i wybierz coś dla siebie.

Reklama

To jest miejsce na Twoją reklamę! Więcej informacji: Reklama w jakilinux.org