.


[*]
[*]
[*]

[*]
index


   
A boot folyamat közelebbről

A Linux floppiról és merevlemezről is betölthető. Az ''Installation and Getting Started'' könyv telepítésről szóló része ([Wel]) elmondja, hogyan telepítsük a Linuxot úgy, hogy az általunk kívánt módon boot-oljon.

Amikor egy PC elindul, a BIOS különféle teszeteket végez annak ellenőrzésére, hogy minden rendben van-e. (Ezt szokás power on self test-nek vagy röviden POST-nak nevezni.) Ezután indul a tényleges rendszerindítás. Először egy lemezmeghajtó kerül kiválasztásra, az ebben levő lemez legelső szektorát, a boot szektort olvassa be a rendszer. (Az, hogy mely lemezmeghajtókon, illetve milyen sorrendben keresi a gép a megfelelő boot szektort, a számítógép beállítása mondja meg, de tipikus, hogy először az első floppimeghajtóval, majd az első merevlemezzel próbálkozik a BIOS.) Merevlemezeknél mindezt pontosítnai kell: a master boot record (MBR) kerül beolvasásra, ugyanis egy merevlemez több partíciót is tartalmazhat, mindegyiken saját boot szektorral.        

A boot szektor egy kis (egy szektorba elférő) programot tartalmaz, melynek a feladata az aktuális operációs rendszer beolvasása és elindítása. Amikor floppiról indítjuk a Linuxot, a boot szektor csak egy olyan kódot tartalmaz, mely beolvassa az első pár száz blokkot (a kernelmérettől függően) a memória egy előre meghatározott helyére. Egy Linux boot floppin nincs fájlrendszer, a kernel egyszerűen egymást követő szektorokban található, mivel ez egyszerűsíti a boot folyamatát. Igaz, lehet fájlrendszerrel rendelkező floppiról is boot-olni, pl. a LILO (LInux LOader) segítségével.    

Amikor merevlemezről boot-olunk, a master boot record-beli (MBR) kód megvizsgálja a partíciós táblát (az MBR-belit is), hogy azonosítsa az aktív partíciót (azaz amelyik boot-olhatóvá lett téve), beolvassa annak boot szektorát, és elindítja az itteni kódot. A partíció boot szektorában található kód ugyanazt csinálja, mint egy floppi boot szektora: beolvassa a kernelt és elindítja. A részletek ugyan egy kicsit változatosak, mivel általában nem célszerű egy külön partíciót fenntartani a kernel képmásának (kernel image), ezért a boot szektorban található kód nem olvashatja egyszerűen sorban a lemez blokkjait, hanem meg kell talalni azokat a blokkokat, ahova a fájlrendszer lerakta a kernel képmását. Több megoldás is létezik erre a problémára, de a szokásos a LILO használata. (A részletes tárgyalás nem lényeges az itteni tárgyalás szempontjából. A LILO dokumentációja részletes felvilágosítással szolgál.)          

A LILO-val való boot során először általában az alapértelmezett kernel töltődik be. A LILO beállítható úgy is, hogy több operációs rendszer, vagy egy operációs rendszer több kernelje közt választást biztosítson, és azt töltse be a rendszerindításkor. Beállítható úgy is, hogy induláskor ha valaki lenyomja a alt, shift, vagy ctrl billentyűk egyikét, akkor ne az alapértelmezett módon boot-oljon, hanem a felhasználó választása szerint. Alternatív módon, a LILO úgy is beállítható, hogy mindig kérdezzen, de egy megadott várakozás után, ha nem történt kernel választás, magától töltse be az alapértelmezett rendszert.

A LILO lehetővé teszi egy kernel parancsssori argumentum megadását a kernel vagy operációs rendszer neve után.

Megjegyzendő, hogy léteznek más boot loader programok is, mint a LILO. (Pl. a loadlin.) Egy későbbi változatban lesz ezekről szó.

A floppiról illetve merevlemezről való rendszerindításnak egyaránt vannak előnyei és hátrányai, de a merevlemezről való boot-olás többnyire kellemesebb, mert ekkor egyrészt nem kell a floppi lemezekkel babrálni, és gyorsabb is. Igaz az is, hogy több hibalehetőséget rejt a merevlemezről való boot-olás, ezért sokan eleinte floppiról indítják a rendszert, majd amikor a rendszer már kipróbáltan jól működik, akkor telepítik a LILO-t a merevlemezről való boot-oláshoz.

Miután a LInux kernel bekerült a memóriába valamilyen értelemben, és valóban elindult, körülbelül a következők történnek:

  • A Linux kernel a lemezen tömörítve van, ezért először kicsomagolja önmagát. A kernel képmás eleje egy kis programot tartalmaz e célból.  

  • Ha olyan SVGA kártyád van, melyet a Linux felismer, és annak vannak speciális szöveges módjai (mint pl. 100 oszlop, 40 sor), a Linux megkérdezi melyik módban akarod használni. A kernelfordítás közben, vagy az után az rdev  parancs segítségével a video mód előre beállítható a kernelnek, és az ilyen kernel nem kérdez rá az üzemmódra.        

  • Ezután a kernel ellenőrzi, milyen hardver elemek (merevlemezek, floppi meghajtók, hálózati kártyák, stb.) léteznek a gépben, és megpróbálja ezek eszközmeghajtóit megfelelően konfigurálni. A hardverelemek megtalálásáról üzenetet is ad. Pl. amikor az én gépem boot-ol, ilyesmi látszik.        
    LILO boot:
    Loading linux.
    Console: colour EGA+ 80x25, 8 virtual consoles
    Serial driver version 3.94 with no serial options enabled
    tty00 at 0x03f8 (irq = 4) is a 16450
    tty01 at 0x02f8 (irq = 3) is a 16450
    lp_init: lp1 exists (0), using polling driver
    Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)
    Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
    Loopback device init
    Warning WD8013 board not found at i/o = 280.
    Math coprocessor using irq13 error reporting.
    Partition check:
      hda: hda1 hda2 hda3
    VFS: Mounted root (ext filesystem).
    Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20
    
    A pontos szöveg természetesen más lesz más rendszerek esetén, annak függvényében, hogy milyen hardverelemek vannak a gépben, a kernel hányas változatát használjuk, és az hogy van konfigurálva.

  • Ezután a kernel csatlakoztatja (mount) a gyökér fájlrendszert. Ennek helye fordítási időben is megmondható, vagy később az rdev  parancs segítségével, esetleg a LILO-val. A fájlrendszer típusát automatikus felismeri a rendszer. Ha a gyökér fájlrendszer csatlakoztatása nem sikerül, mert pl. elfelejtetted a megfelelő fájlrendszert belefordítani a kernelbe, a kernel ''pánikba esik'', és megállítja a rendszert. (Ilyenkor már nincs mit tenni.)                

    A gyökér fájlrendszer általában csak olvasható (read-only) módban csatlakozik először (ez is beállítható), ami lehetővé teszi az ellenőrzését a csatlakoztatás közben. (A lemezekről szóló részben írtak szerint nem szabad írható fájlrendszert ellenőrizni.)      

  • Ezután a kernel elindítja az init  programot (amelynek teljes elérési útja: /sbin/init ) a háttérben. (Értelemszeríen az init  processzazonosítója mindenképpen 1 lesz.) Az init  különféle indító tennivalókat végez el, melyek pontos listája konfigurációfüggő. (Lásd a 7. fejezetet.) Az biztos, hogy legalább néhány démon elindul ekkor a háttérben.  

  • Az init  ezután többfelhasználós üzemmódba kapcsol, és elindítja a getty  programot a virtuális konzolokra és a soros vonalakra, így lehetővé teszi a bejelentkezést a felhasználók számára. Az init  elindíthat még más programokat is a konfigurációjától függően.        

  • Ezzel a rendszerindítás kész van, és a rendszer normálisan fut tovább.

*main::open_tags*main::open_tags*main::open_tags

[*]
Linux rendszeradminisztrátorok kézikönyve (első javított változat; SAG-HU 0.6b1)