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

A GRUB (Grand Unified Bootloader) két részből áll. Az első rész (stage1) 512 bájtot tartalmaz, amelynek az összes feladata a rendszertöltő második részének (stage2) betöltése. Ezt követően a második rész (stage2) kerül betöltésre. Ez a rész tartalmazza a rendszertöltő 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 megfelelő fájlrendszerből. 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énő beállításakor is.

A stage2 számos különfé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 megfelelő, ISO 9660 szabványú fájlrendszert tartalmazó CD-ről vagy DVD-ről is el tudja indítani a rendszert. A GRUB még a rendszer indítása előtt 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áskezelőt 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: 18.2.1.3. szakasz - 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öltő megfelelő betöltéséhez szüksége van.

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

A GRUB-ban az indítás előtt az összes rendszerindítási paraméter módosítható. Így például kijavítható a menüfájl szerkesztésekor fellépő hiba. A rendszerindító parancsok interaktív módon is betölthetők egy bemeneti prompt segítségével (lásd 18.2.1.3. szakasz - Menüpontok szerkesztése a rendszerindítási folyamat során). A GRUB a rendszerindítás előtt biztosítja a kernel és az initrd helymeghatározásának lehetősé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öltő konfigurációjában

A GRUB-nak valójában két verziója létezik: egy rendszertöltő és egy normál Linux-program az /usr/sbin/grub könyvtárban. Ezt a programot GRUB-parancsértelmezőnek 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 előtt. Az a funkció, amely a GRUB-ot telepíti rendszertöltőként a merevlemezen vagy hajlékonylemezen, integrált része a GRUB-nak az install és setup parancsok formájában. Ez elérhető a GRUB-parancsértelmezőben a Linux betöltésekor.

A GRUB rendszerindító menüA GRUB rendszerindító menü

A rendszerindító menüt megjelenítő grafikus nyitóképernyő 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ájlrendszerből. Ez azt jelenti, hogy a fájl módosítása után a GRUB -ot nem kell újratelepíteni. A YaST rendszertöltő segítségével módosítsa a GRUB-konfigurációt (18.3. szakasz - A rendszertöltő beállítása a YaST használatával).

A menüfájl parancsokat tartalmaz. A szintaxis nagyon egyszerű. Minden sor egy parancsot tartalmaz, amelyet szóközzel elválasztott opcionális paraméterek követnek, mint a parancsértelmezőben. Történeti okokból néhány parancs első paramétere elé = tehető. A megjegyzéseket egy kettőskereszt (#) vezeti be.

A menüáttekintésben a menüpontok azonosításához minden bejegyzéshez adjon meg egy title bejegyzést. title kulcsszót követő 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övetkező title bejegyzésig.

A legegyszerűbb eset más operációs rendszerek rendszertöltőire történő á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: 18.2.1.1. szakasz - Merevlemezek és partíciók névkonvenciói. A fenti példa az első merevlemez negyedik partíciójának első blokkját adja meg.

A kernel parancs segítségével adható meg egy kernelképfájl. Az első argumentum a partícióban lévő 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 leegyszerűsí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övetkező root parancsig.

A boot parancs minden menübejegyzés végére odaértendő, 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 egyszerűen csak elindítja a betöltött kernelképet vagy a megadott láncbetöltőt.

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

Merevlemezek és partíciók névkonvencióiMerevlemezek é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étől. Jobban hasonlít a BIOS által használt megoldáshoz, a lemezek egyszerű 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 kezdődik. Következésképp a (hd0,0) az első merevlemez első partíciója. Egy általános asztali gépen, amelyre egy merevlemez van csatlakoztatva elsődleges masterként, a megfelelő Linux-eszköznév a /dev/hda1.

A négy lehetséges elsődleges partícióhoz a 0 to 3 partíciószám van rendelve. A logikai partíciók számozása 4-től kezdődik:

(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öztől 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érlők a BIOS-ban lévő rendszerindítási szekvenciának megfelelően 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 elő a leképezést és menti el a device.map, amely szükség esetén szerkeszthető. A device.map fájllal kapcsolatos információt a következő rész tartalmaz: 18.2.2. szakasz - A device.map fájl.

Egy teljes GRUB elérési út zárójelek közé írt eszköznévből é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 kezdődik. Az indítható kernel például az alábbi módon adható meg egy olyan rendszeren, amely egy IDE-merevlemezt tartalmaz és ennek első partícióján Linux található:

(hd0,0)/boot/vmlinuz

Egy példa menüfájlEgy példa menüfájl

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

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

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

title windows
   chainloader(hd0,0)+1

title floppy
   chainloader(fd0)+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
    

Az első blokk a nyitóképernyő konfigurációját adja meg:

gfxmenu (hd0,4)/message

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

color white/blue black/light-gray

Színséma: fehér (előté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épernyőre, csak a testreszabható GRUB-menüre, amely akkor jelenik meg, ha az Esc billentyűvel kilép a nyitóképernyőből.

default 0

Alapértelmezés szerint az első menübejegyzés title linux kerül indításra.

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öző 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 első bejegyzés (title linux) a SUSE Linux Enterprise indításáért felelős. A kernel (vmlinuz) az első merevlemez első 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 megfelelően van megadva (/dev/hda7/), mivel ezt az információt a kernel olvassa és a GRUB-nak nincs rá szüksége. Az initrd szintén az első merevlemez első logikai partíciójában található.

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

  • A következő bejegyzés hajlékonylemezről történő indítást tesz lehetővé 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övetkező 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 tetszőleges szerkesztővel bármikor szerkeszthető. A GRUB szerkesztési funkciójával ideiglenes módosítások is végezhetők interaktív módon. Lásd: 18.2.1.3. szakasz - Menüpontok szerkesztése a rendszerindítási folyamat során.

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

A grafikus rendszerindító menüben a nyíl billentyűk 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épernyő elhagyásához, majd az E billentyűt. Az ilyen módosítás csak az aktuális indítási folyamatra érvényes és nem kerül véglegesen alkalmazásra.

[Important]Billentyűzetkiosztás az indítási folyamat során

Rendszerindításkor csak az US billentyűzetkiosztás áll rendelkezésre. Ábra: 46.1. ábra - US billentyűzetkiosztás.

A menübejegyzések szerkesztése segíthet egy hibás már nem indítható rendszer megjavításában, mivel a rendszertöltő hibás konfigurációs fájlja kikerülhető 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 billentyűk segítségével válassza ki a menübejegyzést, amelynek szerkeszteni kívánja a konfigurációját. A konfiguráció szerkeszthetővé tétele érdekében nyomja meg még egyszer az E billentyűt. Ily módon módosíthatja a nem megfelelő partíció vagy elérési út részleteit, mielőtt 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 billentyűt. Utána a bejegyzés indításához nyomja meg a B billentyűt. A további lehetséges műveleteket 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évő sorhoz szóközzel elválasztva fűzze hozzá a megfelelő kernelparamétereket:

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

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

A device.map fájlA 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évő indítási sorrendjében az IDE a SCSI előtt van, a device.map az alábbi módon jelenhet meg:

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

Mivel az IDE-, SCSI- és egyéb merevlemezek sorrendje különböző tényezőktől függ és a Linux nem tudja azonosítani a leképezést, a device.map fájlban lévő sorrend kézzel is beállítható. Amennyiben a rendszerindítás során problémákat észlel, ellenőrizze, hogy a fájlban lévő sorrend megfelel-e a BIOS-ban lévő sorrendnek, és ha szükséges, az ideiglenes módosításhoz használja a GRUB-parancsértelmezőt. A Linux-rendszer elindítása után a device.map fájl a YaST rendszertöltő modul vagy egy tetszőleges szerkesztőprogram segítségével módosítható.

[Important]SATA-lemezek

A vezérlőtől függően a SATA-lemezeket a rendszer vagy IDE- (/dev/hdx), vagy SCSI- (/dev/sdx) eszközökként ismeri fel.

A device.map fájl kézzel történő 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öltődik és a grub.conf fájlban megjelenített parancsok végrehajtódnak:

grub --batch < /etc/grub.conf

Az /etc/grub.conf fájlAz /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 azokat a paramétereket és opciókat, amelyekre a GRUB parancsértelmezőnek a rendszertöltő megfelelő telepítéséhez szüksége van:

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

Az egyes bejegyzések jelentése:

root (hd0,4)

A parancs hatására a GRUB a további parancsokat az első merevlemez első logikai partíciójára (az indítófájlok helyére) alkalmazza.

install paraméter

A grub parancsot az install paraméterrel kell futtatni. A rendszertöltő stage1 részét az első merevlemez MBR-jébe (/grub/stage1 (hd0,3)) kell telepíteni. Ez egy picit szokatlan konfiguráció, de sok esetben kiválóan működik. A stage2 részt pedig a 0x8000 (/grub/stage2 0x8000) memóriacímre kell betölteni. Az utolsó bejegyzés ((hd0,4)/grub/menu.lst) pedig azt mutatja meg a GRUB-nak, hogy a menüfájlt hol kell keresni.

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

Bár az operációs rendszer indítása előtt kerül elindításra, a GRUB lehetővé teszi a fájlrendszerek elérését. A root jogosultsággal nem rendelkező 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.

[Important]Rendszerindítási jelszó és a nyitóképernyő

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

Rendszerindítási jelszó beállításához root felhasználóként a következőké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 billentyű 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évő összes operációs rendszert.

  3. Annak megakadályozásához, hogy a rendszerindítás menüben lévő 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/hda7 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 billentyűt. A jelszóprompt megnyitásához nyomja meg a P billentyűt. 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.