PLD-doc/book/pl_book__bootloader/pl_bootloader__grub.sec
qwiat
cvs w pld-linux.org
Czw, 24 Lis 2005, 00:11:38 CET
Author: qwiat
Date: Thu Nov 24 00:11:35 2005
New Revision: 6562
Modified:
PLD-doc/book/pl_book__bootloader/pl_bootloader__grub.sec
Log:
- przepisanie calego rozdzialu od nowa
Modified: PLD-doc/book/pl_book__bootloader/pl_bootloader__grub.sec
==============================================================================
--- PLD-doc/book/pl_book__bootloader/pl_bootloader__grub.sec (original)
+++ PLD-doc/book/pl_book__bootloader/pl_bootloader__grub.sec Thu Nov 24 00:11:35 2005
@@ -1,62 +1,130 @@
<?xml version="1.0" encoding="iso-8859-2"?>
<section id="bootloader_grub">
-<title>Grub</title>
+ <title>Grub</title>
<para>
- Każdy z nas zastanawiał się kiedyś nad alternatywą dla <command>lilo</command>, które lubiło czasem zawodzić.
- Okazuje się, że istnieje bardzo dobra alternatywa o nazwie <command>grub</command>.
- Ten drugi bootmanager różni się nieco od pierwszego. Największą różnicą jest obsługa dużej gamy systemów plików.
- Dzięki możliwości bezpośredniego dostępu do systemu plików, jesteśmy w stanie załadować dowolny obraz,
- który nie został umieszczony w pliku konfiguracyjnym.
- </para>
- <para>
- Konfiguracja gruba różni się nieco od konfiguracji jego konkurentów. Przedewszystkim nie używamy już
- nazw dysków opierających się na urządzeniach widniejących w <filename>/dev</filename>
- (np. <filename>/dev/hda</filename>). Grub przy pomocy BIOSa
- sprawdza istniejące dyski w systemie i numeruje je począwszy od zera. Dla przykładu, jeżeli posiadamy
- dwa dyski twarde (np. hda i hdc), pierwszy z nich zostanie oznaczony jako hd0, drugi jako hd1.
- Sytuacja z partycjami wygląda podobnie, również numerowane są od zera, natomiast pierwsza partycja logiczna
- będzie oznaczona numerem 4. Dla dotychczasowego <filename>/dev/hda1</filename> w grubie powinniśmy używać (hd0,0).
- Podane nawiasy nie są przypadkowe, to cecha składni poleceń gruba. Jeżeli określamy jakiś dysk/partycję,
- robimy to w nawiasach.
- </para>
- <para>
- Przejdźmy do konfiguracji. Zakładamy, że zarówno rootfs, jak i boot leżą na tej samej partycji.
- W przykładowej konfiguracji będzie to <filename>/dev/hda1</filename>.
- Plikiem konfiguracyjnym w domyślnej instalacji jest
- <filename>/boot/grub/menu.lst</filename>.
- </para>
- <screen># cat /boot/grub/menu.lst
-timeout 15
+ <productname>GRUB</productname> (GRand Unified Bootloader) jest
+ bootloaderm zdobywającym sporą popularność, ze względu na
+ swoją elastyczność i duże możliwości. Jest
+ tak rozbudowany, że musi trzymać część swoich danych na dysku
+ twardym, z tego też względu obsługuje kilka systemów plików i
+ może wykonywać proste operacje dyskowe. GRUB normalnie "widzi"
+ pliki na dysku, a więc widzi też plik kernela i obrazu initrd,
+ dzięki temu nie ma potrzeby robienia czegokolwiek po zmianie
+ konfiguracji, wygenerowaniu initrd, aktualizacji kernela itp.
+ Dodatkowo GRUB wspiera nas przez dopełnianiem nazw plików,
+ urządzeń (np. partycji).
+ </para>
+ <para>
+ Do największych zalet gruba można zaliczyć możliwość pełniej
+ rekonfiguracji bootloadera bez ładowania systemu, wszystkie
+ operacje przeprowadzamy z poziomu działającego bootloadera.
+ Kolejną ważną jego cechą jest możliwość używania klawiatury USB,
+ w przeciwieństwie do <productname>LILO</productname>, jedyną rzeczą
+ jaką musimy zrobić w tym wypadku to włączyć obsługę klawiatury USB
+ w BIOS-ie.
+ </para>
+ <para>
+ O initrd poczytamy w <xref linkend="konfiguracja_geninitrd" />.
+ </para>
+
+ <section id="bootloader_grub_urzadzenia">
+ <title>Nazewnictwo urządzeń</title>
+ <para>
+ Nie używamy nazw dysków opierających się na urządzeniach
+ widniejących w <filename>/dev</filename> (np.
+ <filename>/dev/hda</filename>). GRUB przy pomocy BIOS-u sprawdza
+ istniejące dyski i numeruje je począwszy od zera. Dla przykładu,
+ jeżeli posiadamy dwa dyski twarde (np. <literal>hda</literal> i
+ <literal>hdc</literal>), pierwszy z nich zostanie oznaczony jako
+ <literal>hd0</literal>, drugi jako <literal>hd1</literal>. Sytuacja
+ z partycjami wygląda podobnie, również numerowane są od zera,
+ natomiast pierwsza partycja logiczna będzie oznaczona numerem 4.
+ </para>
+ <para>
+ Obszar MBR oznaczany jako <filename>/dev/hda</filename>
+ będzie widziany jako <literal>(hd0)</literal>, partycja
+ <filename>/dev/hda1</filename> będzie rozpoznawana jako
+ <literal>(hd0,0)</literal>. Podane nawiasy nie są przypadkowe,
+ jest to cecha składni poleceń GRUB-a.
+ </para>
+ <para>
+ System urządzeń opisano szerzej w <xref linkend="podstawy_urzadzenia" />.
+ </para>
+ </section>
+
+
+ <section id="bootloader_grub_konfiguracja">
+ <title>Konfiguracja podstawowa</title>
+ <para>
+ Konfiguracja polega na odpowiednim skonfigurowaniu pliku
+ <filename>/boot/grub/menu.lst</filename> i instalacji
+ bootloadera w MBR/bootsektorze dysku. W poniższych
+ przykładach założyliśmy, że zarówno <filename>/</filename>
+ (rootfs) jak i <filename>/boot</filename> leżą na tej samej
+ partycji. W przykładowej konfiguracji będzie to
+ <filename>/dev/hda1</filename>. Poniżej przedstawiono
+ przykładową konfigurację:
+ </para>
+
+<screen>timeout 15
-title PLD 2.0 (Ac)
+title pld
root (hd0,0)
kernel /boot/vmlinuz root=0301
initrd /boot/initrd</screen>
- <para>
- Pewnie zastanawiasz się skąd wzięły się te dziwne cyferki przy <command>root=</command> ?
- Nie ma w nich nic dziwnego, w naszym przypadku 03 to 'major' a 01 to 'minor' naszej partycji.
- Skąd wziąć te cyferki? To nic trudnego, musimy tylko umieć przeliczać liczby dziesiętne
- na szesnastkowe.
- </para>
- <screen># ls -l /dev/hda1
-brw-rw---- 1 root disk 3, 1 2004-06-03 18:41 /dev/hda1</screen>
- <para>
- Pierwsza liczba (3) to major, druga (1) to minor. Urządzenia w katalogu <filename>/dev</filename> posiadają
- oznaczenia w systemie dziesiętnym, kernelowi należy przekazać je w szesnastkowym.
- Akurat w przypadku hda1 nic się nie zmienia, bo zarówno liczby 3 jak i 1 w obu
- systemach liczbowych są jednakowe. W przypadku podawania parametru <command>root=</command>
- major można podać w postaci jednej cyfry, natomiast minor powinien być już rozwinięty do dwóch.
- Tym sposobem możemy zamienić <command>root=0301</command> na <command>root=301</command>.
- W przypadku dysków scsi postępujemy analogicznie.
- </para>
- <para>
- Przejdźmy do instalacji gruba w bootsektorze dysku (MBR).
- </para>
- <screen># grub
-grub> root (hd0,0)
-Filesystem type is xfs, partition type 0x83
+ <para>
+ Konfiguracja GRUB-a podzielona jest na sekcję główną i sekcje
+ obrazów, sekcja główna są to ustawienia globalne, zaś
+ konfiguracja obrazów to opcje dla każdego z obsługiwanych
+ systemów operacyjnych. Powyżej mamy sekcję główną oraz
+ sekcję obrazu oddzieloną pustym wierszem.
+ </para>
+ <para>
+ Opcja <literal>timeout</literal> w sekcji głównej to
+ czas w sekundach oczekiwania na reakcję użytkownika.
+ </para>
+
+ <para>
+ Opcja <literal>title</literal> w sekcji obrazu to jego
+ etykieta, <literal>root(hd0,0)</literal> to partycja na
+ której GRUB będzie szukał swoich plików (w PLD GRUB trzym
+ a swoje pliki w <filename>/boot/grub</filename>). Parametry
+ <literal>kernel</literal> i <literal>initrd</literal> to
+ ścieżki do plików <literal>kernela</literal> i
+ <literal>initrd</literal>, w powyższym przykładzie
+ będą szukane na urządzeniu <literal>(hd0,0)</literal> gdyż
+ podane do nich ścieżki są względne. Parametr
+ <literal>root=</literal> jest parametrem jądra wskazującym
+ położenie głównego systemu plików, opisanym
+ szerzej w <xref linkend="bootloader_wstep" />. Może mieć
+ zarówno postać liczbową jak i postać nazwy urządzenia z
+ katalogu <filename>/dev</filename> np.
+ <filename>/dev/hda1</filename>.
+ </para>
+ <para>
+ Kiedy plik konfiguracji jest gotowy możemy przejść
+ do instalacji GRUB-a.
+ </para>
+ </section>
+
-grub> setup (hd0)
+ <section id="bootloader_grub_instalacja">
+ <title>Instalacja</title>
+ <para>
+ Przejdźmy teraz do instalacji GRUB-a w MBR, rozpoczynamy
+ od uruchomienia programu <command>grub</command>, mamy
+ teraz do dyspozycji powłokę oferująca liczne
+ polecenia, dopełnianie oraz pomoc. Rozpoczynamy od
+ polecenia <command>root</command> z parametrem wskazującym
+ miejsce gdzie znajdują się pliki GRUB-a, konieczne do jego
+ instalacji.
+
+<screen>grub> root (hd0,0)
+Filesystem type is xfs, partition type 0x83</screen>
+
+ Teraz uruchamiamy instalację bootloadera w MBR dysku, wydajemy
+ polecenie <command>setup</command> z odpowiednim parametrem:
+<screen>grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/xfs_stage1_5" exists... yes
@@ -64,21 +132,65 @@
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
-Done.
-grub> quit</screen>
- <para>
- Staliśmy się posiadaczami bootloadera <command>grub</command>
- w naszym systemie. W odróżnieniu od <command>lilo</command> nie ma potrzeby ponownej
- instalacji gruba w MBR w przypadku zmiany kernela lub pliku konfiguracyjnego.
- </para>
- <para>
- Może brakować Ci jeszcze możliwości startu z partycji, na której masz zainstalowany np.
- system MS Windows. Dodanie kolejnego wpisu należy do bardzo prostych czynności.
- Zakładająć, że jest on zainstalowany na <filename>/dev/hda2</filename>,
- na końcu pliku konfiguracyjnego dopisujemy:
- </para>
- <screen>title Windows
+Done.</screen>
+ Komunikaty wskazują poprawność operacji, więc pozostaje
+ nam tylko wyjście z powłoki programu.
+
+<screen>grub> quit</screen>
+
+ W ten oto sposób staliśmy się posiadaczami GRUB-a
+ w naszym systemie, możemy teraz zrestartować maszynę.
+ </para>
+ </section>
+
+
+ <section id="bootloader_grub_inne_systemy">
+ <title>Inne systemy operacyjne</title>
+ <para>
+ Zakładam, że chcemy dodać system Microsoftu zainstalowany
+ na partycji <filename>/dev/hda2</filename>, oto sekcja
+ jaką musimy dopisać do
+ <filename>/boot/grub/menu.lst</filename>:
+<screen>title Windows
rootnoverify (hd0,1)
-chainloader +1
-</screen>
+chainloader +1</screen>
+
+ Domyślnym obrazem wybranym przez bootloader jest ten
+ pierwszy w kolejności w pliku konfiguracji, możemy to
+ ustawienie bardzo prosto modyfikować za pomocą opcji
+ <literal>default</literal> wskazującej numer obrazu, obrazy
+ są numerowane wg. kolejności począwszy od 0.
+<screen>default 0</screen>
+ </para>
+ </section>
+
+
+ <section id="bootloader_grub_fb">
+ <title>Frame Buffer</title>
+ <para>
+ Frame Buffer (bufor ramki) to mechanizm pozwalający m.in.
+ na pracę konsoli w wyższych rozdzielczościach. Aby go
+ włączyć, do parametrów jądra w konfiguracji linuksowego
+ obrazu dodajemy parametr <literal>vga</literal> np.
+ <literal>vga=0x303</literal>. Przykładowa
+ konfiguracja obrazu będzie wyglądała następująco:
+<screen>title pld
+root (hd0,0)
+kernel /boot/vmlinuz root=0301 vga=0x303
+initrd /boot/initrd</screen>
+ Listę dostępnych trybów zamieszczono w
+ <xref linkend="bootloader_wstep" />.
+ </para>
+ </section>
+
+
+ <section id="bootloader_grub_zakonczenie">
+ <title>Zakończenie</title>
+ <para>
+ W przypadku nietypowych konfiguracji będziemy zmuszeni
+ do podawania ścieżek bezwzględnych do plików. Podajemy
+ je następująco: <literal>(hdX,Y)/katalog/plik</literal> np.:
+ <literal>(hd0,0)/boot/vmlinuz</literal>
+ </para>
+ </section>
</section>
Więcej informacji o liście dyskusyjnej pld-doc