A Grub rendszertöltő

Terméktámogatási adatbázis (fhassel_grub_overview)
Következőkre vonatkozik

SuSE Linux: Verziók a következő dátum óta: 8.1

Tárgy

Szeretnénk többet tudni a Grub rendszertöltő lehetőségeiről és felépítéséről, amely a SuSE Linux 8.1 verziótól kezdve az alapértelmezett rendszertöltő.

Háttérinformációk és felépítés

A GRUB a Grand Unified Bootloader rövidítése. Hasonlóan a LILO rendszertöltőhöz, a Grub két részből áll: az első rész (512 byte méretű), amely az MBR-be vagy más boot-szektorba íródik és egy nagyobb második rész, amely a programkódot tartalmazza, amely a későbbiekben be fog töltődni.

Az alapvető különbség a LILO-val szemben az, hogy a GRUB direkt módon támogat néhány fájlrendszert (beleértve a SuSE Linux által használt összes fájlrendszert és természetesen a vfat-ot is). Éppen ezért nem szükséges újra telepíteni a Grub-ot miután a beállításokat megváltoztattuk. Amikor a rendszer elindul, a Grub beolvassa a menüfájl tartalmát.
Hacsak nem új rendszermagot (/boot/vmlinuz) telepítünk, vagy a kezdeti ramlemezt (/boot/initrd) módosítottuk, a Grub képes megtalálni a maga számára. A grub nem igényli a rendszermag fizikai pozíciójának ismeretét, Éppen ezért a rendszertöltőt nem kell újratelepíteni a rendszermag újrafordítása után sem.

A Grub egy másik nagy előnye az összes rendszertöltő paraméter szerkesztése a rendszerindítás megkezdése előtt. Ez nagyon hasznos akkor, ha hibák találhatók a menüfájlban.

Mindezeken felül továbbra is lehetőségünk is van a promptban is megadni a rendszertöltő paramétereit. Éppen ezért bármely, a boot menüben nem szereplő operációs rendszert is elindíthatunk. A grub lehetővé teszi a rendszermag, valamint az initrd nevének és helyének megadását a rendszerindítást megelőzően.

A következő bekezdés rövid összefoglalása a Grub rendszertöltési és beállítási folyamatának a YaST2 segítségével. Ezenfelül a jelenlegi beállítási fájl felépítését (a /boot/grub/menu.lst fájl) is részletezzük. Tekintsük meg a /boot/grub/device.map fájlt is, amely az adattároló eszközök elérését tartalmazza a BIOS eszköznevekkel, és az /etc/grub.conf fájlt, amelyet a YaST2 használ. A Grub manuális telepítését részletesebben is ismertetjük. Az utolsó rész a Grub menü lehetőségeiről szól.

A rendszertöltési folyamat és az érintett GRUB komponensek

Amikor a számítógép elindul, a Grub két komponense érintett:

A Grub rendszertöltő menü lehetőségei

Amikor a Grub megjelenik a képernyőn, egyszerűen kiválaszthatunk egy menübejegyzést a megfelelő operációs rendszer elindításához (akárcsaka LILO rendszertöltőnél megszokott módon). A rendszertöltő paraméterek hozzáadhatók a Linux rendszerekhez is. A grub több lehetőséggel is szolgál. Kiléphetünk a menüből az ESC megnyomásával és egyéni menübejegyzéseket szerkeszthetünk az "e" (edit) gomb segítségével.

Általában a paraméterek módosítása csak hiba elhárításakor szükséges, például akkor, ha az operációs rendszer nem indul. A módosítások csak erre az egy indításra vonatkoznak, azaz nem rögzülnek végérvényesen.

A menübejegyzés szerkesztéséhez először is nyomjuk meg az ESC gombot. Ezután a kurzormozgató gombokkal válasszuk ki azt a bejegyzést, amelyet módosítani akarunk, majd nyomjuk meg az "e" billentyűt. Ha például a "Linux" bejegyzést választottuk ki, a következő sorok jelennek meg:

   kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791
   initrd (hd0,4)/initrd
Válasszuk ki a szerkesztendő sort a kurzormozgató billentyűkkel. Nyomjuk meg az "e"-t mégegyszer az adott sor szerkesztéséhez. Ezen a módon az olyan paramétereket javíthatjuk ki, mint a partíciók és elérési útvonalak. Nyomjuk meg az Enter gombot a menübe történő visszalépéshez, itt el is indíthatjuk az adott bejegyzéshez tartozó rendszert a "b" billentyű megnyomásával. A további lehetőségekről a képernyő alján található segítségnyújtó szövegben olvashatunk.

Másik lehetőség a szakértők számára, hogy a "c" (command line) billentyű lenyomásával egy parancsértelmezőbe, a Grub burokba jutunk. Adjuk ki a "help" parancsot a felhasználható parancsok listájának megtekintéséhez. Nyomuk meg az "ESC" gombot a rendszertöltő menübe történő visszalépéshez.

A Grub burok használatával olyan operációs rendszert is betölthetünk, amelyet nem tartalmaz a Grub menü. Ez az opció nagyon hasznos akkor, ha tesztelni szeretnénk a saját magunk által fordított rendszermagot és nem készítettünk hozzá bejegyzést a Grub menüben.

A Grub burokban történő rendszerindításhoz a következő parancsokat adhatjuk ki manuálisan (ebben a példában Linux rendszert indítunk a /dev/hda5 partícióról és a /dev/hda7 gyökérkönyvtárral):

grub> kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791

   [Linux-bzImage, setup=0x1400, size=0xe9a45]

grub> initrd (hd0,4)/initrd
   [Linux-initrd @ 0x369000, 0x863c9 bytes]

grub> boot
A szintaktika a /boot/grub/menu.lst fájlban látható. További információkat a lentebb olvasható "A menüfájl" című bekezdésben láthatunk. Fontos: amikor végeztünk, ne felejtsük el beírni a "boot" parancsot a rendszer indításához.

Egy praktikus tanács: mivel a Grub direkt módon eléri a Linux fájlrendszert a rendszerindításkor, a TAB billentyűt használhatjuk a fájlnevek automatikus kiegészítéséhez (a bash-ban megszokott módon). Ez különösen hasznos lehet akkor, ha nem tudjuk pontosan a megfelelő fájlnevet. Egy másik hasznos lehetőség: Ha nem tudjuk, melyik partíción található a Linux rendszermag, akkor megkereshetjük azt a következő parancsokkal:

find /boot/vmlinuz
vagy
find /vmlinuz
Példánkban ezek a parancsok a következő kimenetet eredményezik:
(hd0,4)
Természetesen használhatjuk a find parancsot bármely más fájl keresésére is (mint az initrd).

Ezenfelül megtekinthetjük az egyes fájlok tartalmát a cat paranccsal. Például a Grub beállítási fájl tartalmát, vagy bármely más fájlt. Természetesen e módon azok a fájlok is megtekinthetők, amelyeket a futó rendszerben rendszergazdai jogosultság nélkül nem is olvashatunk.

Mivel ez nem kívánt dolog a biztonság szempontjából, egy jelszót állíthatunk be a /boot/grub/menu.lst fájlban. E módon az operációs rendszerek továbbra is indíthatók a menüből, de az interaktív opciók ("e" és "c") használatához meg kell adnunk a jelszót. Ehhez a "p" billentyűt kell lenyomnunk. A jelszó beállításával kapcsolatban tekintsük meg a Grub beállítása YaST2 segítségével bekezdést.

Grub beállítása YaST2 segítségével

A legegyszerűbb módja a Grub beállításának a YaST2 használata. Indítsuk el a YaST2 vezérlőközpontot és menjünk a következő részre: A jelenlegi beállítások megváltoztatása menüpontban megváltoztathatjuk a globális beállításokat és az egyes operációs rendszerekhez tartozó egyéni beállításokat is. A menü kiválasztott pontjait követve először is el kell döntenünk, hova települjön a Grub: az első merevlemez MBR-ébe, egy másik partíció rendszerindító szektorába vagy a gyökérpartícióba, esetleg hajlékonylemezre.

Nyomjuk meg a Tovább gombot és a következő párbeszédablakban megadhatjuk a rendszerindító menü időtúllépését, valamint megadhatjunk egy jelszót a Grub számára. Ez a jelszó véd a speciális Grub parancsok kiadása ellen, amelyet már bemutattunk a korábbi "A Grub rendszerindító menü lehetőségei" részben).

További opciók találhatók a Szakértői beállítások.

Nyomjuk meg a Tovább gombot a szekciók táblájának szerkesztéséhez. Minden egyes szekció a rendszerindító menü egy bejegyzésének felel meg. Hozzáadhatunk vagy törölhetünk szekciókat, valamint kijelölhetjük az alapértelmezettet. Kattintsunk a Szerkesztés gombra a szekció átnevezéséhez vagy a rendszermag paraméterek módosításához (Szakértői beállítások).

Kattintsunk a Tovább gombra a szekcióbeállításokhoz való visszatéréshez.

Válasszuk ki a Jelenlegi beállítások mentése pontot és kattintsunk a Befejezés gombra a változások mentéséhez.

A Szakértői kézi beállítás pontban manuálisan szerkeszthetjük a Grub beállítási fájlokat (/boot/grub/menu.lst és /etc/grub.conf). További információkat erről a következő bekezdésekben olvashat.

Válasszuk ki az Eredeti beállítások visszaállítása pontot a telepítési állapotra történő visszaállításhoz.

A menüfájl

A telepítést követően a menü fájl a legfontosabb beállítási fájl. A SuSE Linuxban a /boot/grub/menu.lst fájl tartalmazza az információkat az összes partícióról és operációs rendszerről, amely a menü segítségével betölthető.

Merevlemezek és partíciók

Vegyük figyelembe, hogy a Grub a megszokott Linux eszköznevekkel (mint /dev/hda1) szemben saját elnevezéseket használ a merevlemezek és partíciók jelölésére. A hajlékonylemezes meghajtó mint fd0 érhető el, az összes merevlemez mint hd0, hd1 és így tovább. A partíció sorszáma vesszővel elválasztva következik: hd0,0 az első merevlemez első partíciója. Fontos: az eszköz és partíció számozás nullával kezdődik.

Példák:

(fd0)   Hajlékonylemezes meghajtók
(hd0)   A rendszer első merevlemeze (rendszerindító merevlemez)
(hd1)   Második merevlemez
(hd0,0) Az első merevlemez első partíciója

A 0-3-ig számozott partíciók a négy elsődleges partíciót jelölik. A logikai partíciók 4-től számozódnak:

(hd0,0) 1. elsődleges partíció az első merevlemezen
(hd0,1) 2. elsődleges partíció
(hd0,2) 3. elsődleges partíció
(hd0,3) Kiterjesztett partíció
(hd0,4) Első logikai partíció
(hd0,5) Második logikai partíció
(hd0,6) Harmadik logikai partíció
        stb.

Egy másik fontos pont: amikor merevlemez címkéket rendelünk hozzá, a Grub nem tesz különbséget az IDE, SCSI vagy egyéb eszközök között. Az összes BIOS által felismert merevlemezek vagy egyéb vezérlők (SCSI, RAID, stb.) a rendszertöltés közbeni felismerés sorrendje szerint számozódnak. A (hd0,0) minden esetben az első merevlemez, amelyet a BIOS felismer, attól függetlenül, hogy az IDE, SCSI, vagy RAID eszköz.

Például: Egy két IDE és két SCSI merevlemezzel rendelkező rendszerben ha a BIOS-ban be van kapcsolva az "IDE before SCSI" opció, akkor a Grub a következő címkéket használja:

(hd0)   Első IDE merevlemez
(hd1)   Második IDE merevlemez
(hd2)   Első SCSI merevlemez
(hd3)   Második SCSI merevlemez

Részletesebb információkért olvassuk el a "A térkép (map) fájl" bekezdést.

Menü fájl példa

A következő példában látható a /boot/grub/menu.lst menüfájl felépítése. Ebben a példában /dev/hda5 a Linux rendszerindító partíciója, /dev/hda7 a gyökérpartíció és /dev/hda1 tartalmazza a Windows operációs rendszert.

gfxmenu (hd0,4)/message
color white/green black/light-gray
default 0
timeout 8

title linux
   kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791
   initrd (hd0,4)/initrd
title windows
   root (hd0,0)
   makeactive
   chainloader +1
title floppy
   root (fd0)
   chainloader +1
title failsafe
   kernel (hd0,4)/vmlinuz.shipped root=/dev/hda7 ide=nodma apm=off acpi=off vga=normal nosmp maxcpus=0 3
   initrd (hd0,4)/initrd.shipped

A bejegyzéseknek a következő jelentése van:

A bejegyzések szerint az alábbi operációs rendszer fog indulni: A fentiek alapján a menüben történt változtatások automatikusan érvénybe lépnek a következő rendszerindításkor.

További részletes információkért a DOS/Windows operációs rendszerrel kapcsolatban olvasssuk el az alábbi cikkeket: "" (http://sdb.suse.de/hu/sdb/html/fhassel_grub_win1.html) és "" (http://sdb.suse.de/hu/sdb/html/fhassel_grub_win2.html).

A térkép (map) fájl

A térképfájl egy másik fontos Grub beállítási fájl. A legtöbb esetben ezt a fájlt nem szükséges módosítanunk.

Most térjünk vissza kicsit ahhoz a témához, hogyan számozza a Grub a lemezeket egy összetett rendszerben. Egy olyan rendszerben, amelyben a merevlemezek különböző vezérlőkre csatlakoznak (pl. mind IDE, mind SCSI merevlemezek vannak), a Grub megkísérli meghatározni a rendszerindítási sorrendet, egy speciális eljárással (ha a Grub nem tudja feldolgozni a BIOS adatait). E helyett a Grubnak ki kell számolnia hogy a rendszer az IDE vagy SCSI merevlemezről indul.

A Grub menti az eredményt a /boot/grub/device.map fájlba. A mi példánkban a fájlnak a következő a tartalma (a rendszertöltési sorrend a BIOS-ban: "IDE before SCSI"):

(fd0)   /dev/fd0
(hd0)   /dev/hda
(hd1)   /dev/hdb
(hd2)   /dev/sda
(hd3)   /dev/sdb

Fontos: ha a fájltartalmat manuálisan szerkesztettük (rendszerindítási problémák miatt), mindenképp ki kell adnunk a

grub --batch --device-map=/boot/grub/device.map </etc/grub.conf

parancsot a Grub újratelepítéséhez. A --device-map paraméter adja meg azt, hogy a Grub a meglévő térképfájlt használja. A többi parancs az /etc/grub.conf fájlból vehető át, amelyet a következő bekezdésben ismertetünk.

Az /etc/grub.conf fájl

Az /etc/grub.conf fájl tartalmazza a "grub" parancs paramétereit. Például:

root (hd0,4)
install /grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,4)/grub/menu.lst
quit

A root bejegyzés a Grub fájlokat tartalmazó partíciót csatolja. Az install parancsra a Grub telepítésre kerül. A fenti példában az 1. fájl az első merevlemezen található MBR-be kerül telepítésre (d (hd0)). A 2. lépéshez tartozó fájl 0x8000 memóriacímre kerül betöltésre (/grub/stage2 0x8000). A (hd0,4)/grub/menu.lst bejegyzés mutatja meg a menü fájl pozícióját.

Dokumentáció

Részletes dokumentáció az alábbi címen érhető el:http://www.gnu.org/manual/grub/html_mono/grub.html. The same information can vagy a telepített rendszerben az info grub paranccsal olvasható. Egy GYIK is található a http://www.gnu.org/software/grub/grub-faq.en.html címen. A kézikönyv lapok további segítséget nyújthatnak: man grub és man grub-install.


Kulcsszavak: GRUB, BOOT, BOOT MANAGER, BOOT LOADER, RENDSZERTÖLTő

Kategóriák:

SDB-fhassel_grub_overview, Copyright SuSE Linux AG, Nürnberg, Germany - Verzió: 23. Sep 2002
SuSE Linux AG - Utoljára frissítve: 12. May 2003 feladó: comp (sdb_gen 1.40.0)