15.1 Rendszerindítás a GRUB segítségével

A GRUB (Grand Unified Bootloader) két részbol áll. Az elso rész (stage 1) 512 bájtot tartalmaz, amelynek az összes feladata a rendszertölto második részének (stage2) betöltése. Ezt követoen a második rész (stage 2) kerül betöltésre. Ez a rész tartalmazza a rendszertölto lényegi részét.

Egyes konfigurációkban egy köztes (1.5-ös) szakasz is használható, amelyik kikeresi és betölti a stage2-t a megfelelo fájlrendszerbol. Hacsak lehetséges, az alapértelmezett telepítés ezt a módszert alkalmazza, illetve ez történik a GRUB YaST-tal történo beállításakor is.

A stage 2 többféle fájlrendszert képes kezelni. Jelenleg az Ext2, Ext3, ReiserFS, Minix és a Windows által használt DOS FAT fájlrendszer támogatott. Bizonyos mértékben az XFS és UFS, valamint a BSD-rendszerek által használt FFS is támogatott. A 0.95-ös verzió óta a GRUB az El Torito specifikációnak megfelelo, ISO 9660 szabványú fájlrendszert tartalmazó CD-rol vagy DVD-rol is el tudja indítani a rendszert. A GRUB még a rendszer indítása elott el tudja érni a támogatott BIOS-lemezeszközök (a BIOS által felismert hajlékonylemezek és merevlemezek, CD- és DVD-meghajtók) fájlrendszereit. A GRUB konfigurációs fájl (menu.lst) módosításai miatt az indításkezelot nem kell többé újratelepíteni. A rendszer indításakor a GRUB újratölti a menüfájlt az érvényes elérési utakkal, valamint a kernel vagy a kezdeti memóriaeszköz (initrd) partícióadataival és megkeresi a fájlokat.

A GRUB tényleges konfigurációja az alább leírt három fájlra épül:

/boot/grub/menu.lst

Ez a fájl a GRUB segítségével indítható partíciókkal és operációs rendszerekkel kapcsolatos összes információt tartalmazza. Ezen adatok nélkül a GRUB parancssor megkérdezik a felhasználótól, hogy hogyan folytassa (ennek részletei: Menüpontok szerkesztése a rendszerindítási folyamat során).

/boot/grub/device.map

Ez a fájl fordítja le a GRUB és a BIOS-jelölés eszközneveit Linux-eszköznevekre.

/etc/grub.conf

Ez a fájl tartalmazza a paramétereket és opciókat, amelyekre a GRUB-nak a rendszertölto megfelelo betöltéséhez szüksége van.

A GRUB sokféleképp vezérelheto. A grafikus menübol kiválaszthatók a meglévo konfiguráció rendszerindítási bejegyzései (nyitóképernyo). A beállítás a menu.lst fájlból kerül betöltésre.

A GRUB-ban az indítás elott az összes rendszerindítási paraméter módosítható. Így például kijavítható a menüfájl szerkesztésekor fellépo hiba. A rendszerindító parancsok interaktív módon is betölthetok egy bemeneti prompt segítségével (lásd Menüpontok szerkesztése a rendszerindítási folyamat során). A GRUB a rendszerindítás elott biztosítja a kernel és az initrd helymeghatározásának lehetoségét. Ezen a módon akár egy olyan telepített operációs rendszer is elindítható, amelyhez nincs bejegyzés a rendszertölto konfigurációjában

A GRUB-nak valójában két verziója létezik: egy rendszertölto és egy normál Linux-program az /usr/sbin/grub könyvtárban. Ezt a programot GRUB-parancsértelmezonek hívjuk. Emulálja a GRUB-ot a telepített rendszeren és használható akár a GRUB telepítésére, akár az új beállítások kipróbálására az éles bevezetés elott. Az a funkció, amely a GRUB-ot telepíti rendszertöltoként a merevlemezen vagy hajlékonylemezen, integrált része a GRUB-nak az install és setup parancsok formájában. Ez elérheto a GRUB-parancsértelmezoben a Linux betöltésekor.

15.1.1 A GRUB rendszerindító menü

A rendszerindító menüt megjeleníto grafikus nyitóképernyo a /boot/grub/menu.lst GRUB konfigurációs fájlra épül, amely tartalmazza az összes partícióval és operációs rendszerrel kapcsolatos információt, amely a menü segítségével elindítható.

A rendszer minden indításakor a GRUB betölti a menüfájlt a fájlrendszerbol. Ez azt jelenti, hogy a fájl módosítása után a GRUB -ot nem kell újratelepíteni. A YaST rendszertölto segítségével módosítsa a GRUB-konfigurációt (Szakasz 15.2, A rendszertölto beállítása a YaST használatával).

A menüfájl parancsokat tartalmaz. A szintaxis nagyon egyszeru. Minden sor egy parancsot tartalmaz, amelyet szóközzel elválasztott opcionális paraméterek követnek, mint a parancsértelmezoben. Történeti okokból néhány parancs elso paramétere elé = teheto. A megjegyzéseket egy kettoskereszt (#) vezeti be.

A menüáttekintésben a menüpontok azonosításához minden bejegyzéshez adjon meg egy title bejegyzést. A title kulcsszót követo szöveg (a szóközöket is beleértve) választható menüpontként jelenik meg a menüben. A menüpont kiválasztásakor minden parancs végrehajtásra kerül a következo title bejegyzésig.

A legegyszerubb eset más operációs rendszerek rendszertöltoire történo átirányítás. A parancs a chainloader és az argumentum általában a másik partíció rendszerindító blokkja, GRUB-blokkjelölésben. Például:

chainloader (hd0,3)+1

A GRUB eszközneveinek leírása: Merevlemezek és partíciók névkonvenciói. A fenti példa az elso merevlemez negyedik partíciójának elso blokkját adja meg.

A kernel parancs segítségével adható meg egy kernelképfájl. Az elso argumentum a partícióban lévo kernelképfájl elérési útja. A többi argumentum a parancssorban kerül a kernelnek átadásra.

Ha a kernel nem rendelkezik beépített segédprogramokkal a gyökérpartíció eléréséhez, vagy ha egy frissebb kiadású, speciális hotplug-funkciókat alkalmazó Linux-rendszert használ, az initrd fájlt egy külön GRUB -parancs segítségével kell megadni, amelynek egyetlen argumentuma az initrd fájl elérési útja. Mivel az initrd betöltési címe beíródik a betöltött kernelképbe, az initrd parancsnak közvetlenül a kernel parancsot kell követnie.

A root parancs leegyszerusíti a kernel és az initrd fájlok megadását. A root egyetlen argumentuma egy eszköz vagy egy partíció. Ez az eszköz lesz felhasználva az összes kernelhez, initrd fájlhoz és egyéb elérési utakhoz, amelyekhez explicit módon nincs megadva eszköz, a következo root parancsig.

A boot parancs minden menübejegyzés végére odaértendo, nem kell külön beírni a menüfájlba. Ha azonban a GRUB-ot interaktív módon használja a rendszerindításhoz, akkor a boot parancsot meg kell adni a végén. Maga a parancs nem rendelkezik argumentumokkal. Ez egyszeruen csak elindítja a betöltött kernelképet vagy a megadott láncbetöltot.

A menübejegyzések elkészítése után jelölje meg az egyiket alapértelmezett bejegyzésként. Ellenkezo esetben az elso bejegyzés (0 bejegyzés) lesz az. Egy idokorlát is megadható (másodpercben), amely után az alapértelmezett bejegyzést el kell indítani. A timeout (idokorlát) és default (alapértelmezett érték) általában megelozi a menübejegyzéseket. Egy példafájl leírása a következo helyen található: Egy példa menüfájl.

Merevlemezek és partíciók névkonvenciói

A GRUB merevlemezekhez és partíciókhoz használt névkonvenciói eltérnek a normál Linux-eszközökétol. Jobban hasonlít a BIOS által használt megoldáshoz, a lemezek egyszeru megszámozásához, a szintaxis pedig egyes BSD-leszármazottakéra hasonlít. A GRUB-ban a partíciók számozása nullával kezdodik. Következésképp a (hd0,0) az elso merevlemez elso partíciója. Egy általános asztali gépen, amelyre egy merevlemez van csatlakoztatva elsodleges masterként, a megfelelo Linux-eszköznév a /dev/sda1.

A négy lehetséges elsodleges partícióhoz a 0-3 partíciószám van rendelve. A logikai partíciók számozása 4-tol kezdodik:

(hd0,0)   first primary partition of the first hard disk
(hd0,1)   second primary partition
(hd0,2)   third primary partition
(hd0,3)   fourth primary partition (usually an extended partition)
(hd0,4)   first logical partition
(hd0,5)   second logical partition

Mivel a BIOS-eszköztol függ, a GRUB nem tesz különbséget az IDE-, SATA-, SCSI- és hadveres RAID-eszközök között. A BIOS által felismert merevlemezek és más vezérlok a BIOS-ban lévo rendszerindítási szekvenciának megfeleloen számozódnak.

Sajnos, gyakran nem lehet pontosan leképezni a Linux-eszközneveket BIOS-eszköznevekre. Egy algoritmus segítségével állítja elo a leképezést és menti el a device.map, amely szükség esetén szerkesztheto. A device.map fájllal kapcsolatos információt a következo rész tartalmaz: Szakasz 15.1.2, A device.map fájl.

Egy teljes GRUB elérési út zárójelek közé írt eszköznévbol és a megadott partíció fájlrendszerén található fájl elérési útjából áll. Az elérési út törtvonallal kezdodik. Az indítható kernel például az alábbi módon adható meg egy olyan rendszeren, amely egy IDE-merevlemezt tartalmaz és ennek elso partícióján Linux található:

(hd0,0)/boot/vmlinuz

Egy példa menüfájl

Az alábbi példa a GRUB-menüfájl szerkezetét mutatja be. A mintarendszerben legyen a /dev/sda5 alatt egy Linux indító partíció, a /dev/sda7 alatt egy root partíció és a /dev/sda1 alatt egy Windows-rendszer.

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

title linux
   root (hd0,4)
   kernel /boot/vmlinuz root=/dev/sda7 vga=791 resume=/dev/sda9
   initrd /boot/initrd

title windows
   rootnoverify (hd0,0)
   chainloader +1

title floppy
   rootnoverify (hd0,0)
   chainloader (fd0)+1

title failsafe
   root (hd0,4)
   kernel /boot/vmlinuz.shipped root=/dev/sda7 ide=nodma \
   apm=off acpi=off vga=normal nosmp maxcpus=0 3 noresume
   initrd /boot/initrd.shipped

Az elso blokk a nyitóképernyo konfigurációját adja meg:

gfxmenu (hd0,4)/boot/message

A message háttérkép a /dev/sda5 partíció /boot könyvtárában található.

color white/blue black/light-gray

Színséma: fehér (elotér), kék (háttér), fekete (kiválasztás) és világosszürke (a kiválasztás háttere). A színséma nincs hatással a nyitóképernyore, csak a testreszabható GRUB-menüre, amely akkor jelenik meg, ha az Esc billentyuvel kilép a nyitóképernyobol.

default 0

Alapértelmezés szerint az elso menübejegyzés, a title linux lesz elindítva.

timeout 8

Ha a rendszer nyolc másodpercig nem kap utasítást a felhasználótól, akkor a GRUB automatikusan elindítja az alapértelmezett bejegyzést. Az automatikus indítás kikapcsolásához törölje a timeout sort. A timeout 0 megadása esetén a GRUB azonnal elindítja az alapértelmezett bejegyzést.

A második és legnagyobb blokk a különbözo indítható operációs rendszereket jeleníti meg. Az egyes operációs rendszereket tartalmazó rész elejét a title kulcsszó jelzi.

  • Az elso bejegyzés (title linux) az openSUSE indításáért felelos. A kernel (vmlinuz) az elso merevlemez elso logikai partíciójában (az indítási partíció) található. Itt adhatók meg a kernelparaméterek, mint például a root partíció és a VGA mód. A root partíció a Linux névkonvenciójának megfeleloen van megadva (/dev/sda7/), mivel ezt az információt a kernel olvassa és a GRUB-nak nincs rá szüksége. Az initrd szintén az elso merevlemez elso logikai partíciójában található.

  • A második bejegyzés a Windows betöltéséért felelos. A Windows az elso merevlemez elso partíciójáról töltodik be (hd0,0). A chainloader +1 parancs hatására a GRUB elolvassa és végrehajtja a megadott partíció elso szektorát.

  • A következo bejegyzés hajlékonylemezrol történo indítást tesz lehetové a BIOS-beállítások módosítása nélkül.

  • A failsafe indítási opció a Linuxot olyan kernelparaméterekkel indítja el, amelyek segítségével a Linux problémás rendszereken is elindulhat.

A menüfájl szükség esetén bármikor módosítható. A GRUB a következo rendszerindítás során a módosított beállításokat használja. A fájl a YaST segítségével vagy egy tetszoleges szerkesztovel bármikor szerkesztheto. A GRUB szerkesztési funkciójával ideiglenes módosítások is végezhetok interaktív módon. Lásd:Menüpontok szerkesztése a rendszerindítási folyamat során

Menüpontok szerkesztése a rendszerindítási folyamat során

A grafikus rendszerindító menüben a nyíl billentyuk segítségével válassza ki az indítandó operációs rendszert. Linux rendszer választása esetén az indítási promptnál további indítási paraméterek is megadhatók. Az egyes menübejegyzések közvetlen szerkesztéséhez nyomja meg az Esc gombot a nyitóképernyo elhagyásához, majd az E billentyut. Az ilyen módosítás csak az aktuális indítási folyamatra érvényes és nem kerül véglegesen alkalmazásra.

FONTOS: Billentyuzetkiosztás az indítási folyamat során

Rendszerindításkor csak az US billentyuzetkiosztás áll rendelkezésre (lásd Ábra 13-1, US-Tastaturbelegung, (↑ Start )).

A menübejegyzések szerkesztése segíthet egy hibás, már nem indítható rendszer megjavításában, mivel a rendszertölto hibás konfigurációs fájlja kikerülheto a paraméterek kézi megadásával. A paraméterek kézi megadása a rendszerindítási folyamat során hasznos akkor is, ha új beállításokat akar kipróbálni az eredeti rendszer befolyásolása nélkül.

A szerkesztési mód aktiválása után a nyíl billentyuk segítségével válassza ki a menübejegyzést, amelynek szerkeszteni kívánja a konfigurációját. A konfiguráció szerkeszthetové tétele érdekében nyomja meg még egyszer az E billentyut. Ily módon módosíthatja a nem megfelelo partíció vagy elérési út részleteit, mielott azok negatív hatással lennének a rendszerindítási folyamatra. A szerkesztési módból kilépéshez és a menühöz visszatéréshez nyomja az Enter billentyut. Utána a bejegyzés indításához nyomja meg a B billentyut. A további lehetséges muveleteket az alul látható súgószöveg mutatja.

A módosított rendszerindítási opciók állandó megadásához és a kernelhez továbbításához root felhasználóként nyissa meg a menu.lst fájlt, majd a meglévo sorhoz szóközzel elválasztva fuzze hozzá a megfelelo kernelparamétereket:

title linux
   root(hd0,0)
   kernel /vmlinuz root=/dev/sda3 additional parameter
   initrd /initrd

A rendszer következo indításakor a GRUB automatikusan alkalmazza az új paramétereket. Ez a módosítás a YaST rendszertölto modul segítségével is végrehajtható. Szóközökkel elválasztva fuzze hozzá az új paramétereket a meglévo sorhoz.

15.1.2 A device.map fájl

A device.map fájl a GRUB eszközneveit képezi le Linux-eszköznevekre. IDE- és SCSI-merevlemezeket egyaránt tartalmazó vegyes rendszerben a GRUB egy speciális eljárás segítségével megpróbálja kideríteni az indítási sorrendet, mivel a GRUB nem tud hozzáférni az indítási sorrenddel kapcsolatos BIOS-információhoz. A GRUB az elemzés eredményét elmenti a /boot/grub/device.map fájlba. Egy olyan rendszer esetén, amelynek BIOS-ban lévo indítási sorrendjében az IDE a SCSI elott van, a device.map az alábbi módon jelenhet meg:

(fd0)  /dev/fd0
(hd0)  /dev/sda
(hd1)  /dev/sdb

Mivel az IDE-, SCSI- és egyéb merevlemezek sorrendje különbözo tényezoktol függ és a Linux nem tudja azonosítani a leképezést, a device.map fájlban lévo sorrend kézzel is beállítható. Amennyiben a rendszerindítás során problémákat észlel, ellenorizze, hogy a fájlban lévo sorrend megfelel-e a BIOS-ban lévo sorrendnek, és ha szükséges, az ideiglenes módosításhoz használja a GRUB-parancsértelmezot. A Linux-rendszer elindítása után a device.map fájl a YaST rendszertölto modul vagy egy tetszoleges szerkesztoprogram segítségével módosítható.

A device.map fájl kézzel történo módosítása után az alábbi parancs végrehajtásával telepítse újra a GRUB-ot. A parancs hatására a device.map újra betöltodik és a grub.conf fájlban megjelenített parancsok végrehajtódnak:

grub --batch < /etc/grub.conf

15.1.3 Az /etc/grub.conf fájl

A GRUB harmadik fontos konfigurációs fájlja (a menu.lst és a device.map mellett) az /etc/grub.conf. Ez a fájl tartalmazza a paramétereket és opciókat, amelyekre a GRUB-nak a rendszertölto megfelelo betöltéséhez szüksége van:

setup --stage2=/boot/grub/stage2 --force-lba (hd0,1) (hd0,1)
   quit

Ez a parancs azt jelzi a GRUB-nak, hogy automatikusan telepítse a rendszertöltot az elso merevlemez második partíciójára (hd0,1), az ugyanezen a partíción található rendszerindító képfájlok használatával. A --stage2=/boot/grub/stage2 paraméter a stage2 rendszerkép egy felcsatolt fájlrendszerrol való telepítéséhez szükséges. Egyes BIOS-okban rossz az LBA-támogatás megvalósítása. A --force-lba paraméterrel ez figyelmen kívül hagyható.

15.1.4 Rendszerindítási jelszó beállítása

Bár az operációs rendszer indítása elott kerül elindításra, a GRUB lehetové teszi a fájlrendszerek elérését. A root jogosultsággal nem rendelkezo felhasználók elérhetik a Linux-rendszer azon fájljait, amelyhez a rendszer indítása után már nem férhetnek hozzá. Az ilyen típusú hozzáférés letiltásához illetve annak megakadályozásához, hogy a felhasználók bizonyos operációs rendszereket elindítsanak, állítson be egy rendszerindítási jelszót.

FONTOS: Rendszerindítási jelszó és a nyitóképernyo

Ha használ rendszerindítási jelszót a GRUB-hoz, akkor a szokásos nyitóképernyo nem jelenik meg.

Rendszerindítási jelszó beállításához root felhasználóként a következoképpen kell eljárni:

  1. A root promptnál titkosítsa a jelszót a grub-md5-crypt használatával:

    # grub-md5-crypt
    Password: ****
    Retype password: ****
    Encrypted: $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
  2. Illessze be a titkosított karaktersorozatot a menu.lst globális részébe:

    gfxmenu (hd0,4)/message
    color white/blue black/light-gray
    default 0
    timeout 8
    password --md5 $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/

    A GRUB-parancsok ezután a rendszerindítási promptnál csak a P billentyu lenyomása és a jelszó megadása után hajthatók végre. A felhasználók azonban továbbra is elindíthatják a rendszerindítás menüben lévo összes operációs rendszert.

  3. Annak megakadályozásához, hogy a rendszerindítás menüben lévo operációs rendszerek egy részét el lehessen indítani, a menu.lst fájl minden olyan részéhez hozzá kell adni a lock bejegyzést, amelyeket jelszóval kíván védeni. Például:

    title linux
       kernel (hd0,4)/vmlinuz root=/dev/sda7 vga=791
       initrd (hd0,4)/initrd
       lock

    Ha a rendszer újraindítása után a rendszerindítás menüben a Linux-bejegyzést választotta, az alábbi hibaüzenet jelenik meg:

    Error 32: Must be authenticated

    A menübe belépéshez nyomja meg az Enter billentyut. A jelszóprompt megnyitásához nyomja meg a P billentyut. A jelszó megadása és az Enter megnyomása után a kiválasztott operációs rendszernek (ebben az esetben a Linuxnak) el kell indulnia.