Felhasználói oldalról a számítógép elindítása nem tartozik az informatika legbonyolultabb műveletei közé: megnyomod a bekapcsológombot, a gép felzúg, majd rövidebb-hosszabb várakozás után bejelentkezel a készen álló operációs rendszerbe. Ideális esetben nincs ennél több tennivaló, a folyamat automatikus, és minden rendszeren más mértékben transzparens a felhasználó felé (Linuxokon például a legtöbb esetben abszolút, macOS-en szinte egyáltalán nem). Ez természetesen nem jelenti azt, hogy a tényleges procedúra is egyszerű, sőt az indulás talán az egész működési ciklus legkritikusabb része, amelynek során a hardvernek és a szoftvernek hiba nélkül kell összedolgoznia, hogy a konfiguráció minden eleme használatra kész állapotba kerüljön.
Tökéletes rendszer persze nincs; a hardver egyik pillanatról a másikra tönkremehet, és időről időre az indításért felelős szoftverek is produkálhatnak váratlan helyzeteket. Ezért aztán érdemes megismerkedni a procedúra lépéseivel még akkor is, ha egyébként nincs igényed a BIOS beállításainak finomhangolására vagy a bootloader konfigurálására.
Mint látni fogod, a különböző operációs rendszerek egymástól eltérően közelítenek meg bizonyos problémákat, de a folyamat lényege tulajdonképpen minden esetben ugyanaz. A számítógép bekapcsolás utáni legfőbb feladata, hogy a megfelelő sorrendben és biztonságosan indítsa el a hardvert, és adatvesztés veszélye nélkül tegye használhatóvá a szoftvert. Mindezt a lehető leggyorsabban és ideális esetben felhasználó beavatkozása nélkül, mivel a jól megtervezett indítási folyamat ismérve, hogy bele lehet ugyan piszkálni, de ez nem lehet feltétele a stabil működésnek.
Felzúg a gép
A bekapcsológomb megnyomásáig számítógéped gyakorlatilag egy használhatatlan fémhalmaz - legalábbis a futásra váró szoftver szempontjából mindenképpen. Még a legalapvetőbb értékek sincsenek rendben: a processzor gyorsítótárai nincsenek beállítva, a regiszterekben lévő adatok haszontalanok, ezek nélkül pedig a memóriát sem tudja feltérképezni és hadrendbe állítani az erre hivatott modul.
Az első lépés tehát a CPU felélesztése, ami első körben az alaplap feladata, miután bekapcsoláskor áramot kap a tápegységen keresztül. Ezután indul el az alaplapra integrált áramkörön lévő interfész (régebben BIOS, manapság UEFI), amely ettől fogva az egész folyamatot vezérli és ellenőrzi.
A regiszterek inicializációja és az operatív mód (például először "real", majd később "protected" az Intel architektúráin) beállítása után itt kezdi meg működését a megszakításért felelős kontroller (APIC), illetve a processzorhoz tartozó hardverközeli mikrokód. Ez utóbbi apró egység eleinte módosíthatatlan volt, ám a régmúlt sebezhetőségeiből okulva manapság már nem "égetik" bele a chipbe, hanem az UEFI vagy bizonyos esetekben az operációs rendszer oldaláról is frissíthető. Mivel ezen a ponton a DRAM még nincs használatban, az itt futó algoritmusok a CPU gyorsítótárát használják, kvázi RAM-ként. Ez a speciális működési mód kizárólag ebben a szakaszban jellemző. Amint elindul a memória kezeléséért felelős modul, a kód betöltődik a RAM-ba, a gyorsítótárak pedig kiürülnek.
Dallamos diagnosztika
A fent vázolt hardverközeli folyamatok a másodperc törtrésze alatt zajlanak le, és egészen eddig a pontig a felhasználó semmilyen visszajelzést sem kap a rendszer állapotáról. Miután az alaplap, a processzor és a memória készen áll a rendszer felélesztésére, az UEFI végrehajt egy öndiagnosztikát (Power-On Self Test, röviden POST), aminek során leellenőrzi a konfiguráció összes hardverelemét, és csak hibátlan futást detektálva folytatódik a rendszer elindítása. Amennyiben a POST hibát észlel, azt hangjelzésekkel (rövid pittyegéssel, esetleg hosszabb sípszóval) egyértelműen a felhasználó tudtára adja. Ezek a jelzések viszont nem szabványosak, így értelmezésükhöz szükség lesz a gépben lévő alaplap felhasználói kézikönyvére.
Nem minden esetben jelent katasztrófát, ha a bootolás megáll ezen a ponton: főleg új konfiguráció beüzemelésekor vagy valamely hardverelem cseréjekor előfordulhat, hogy valamelyik memóriamodul, esetleg a GPU nem illeszkedik rendesen a foglalatba, így ilyenkor érdemes ezeket ellenőrizni. A POST után sok esetben megjelenik az interfész által észlelt konfiguráció a grafikus kimeneten, és általában ekkor van lehetőség belépni az UEFI beállításai közé. Igaz, a gyors hardverek (főleg az SSD-k) miatt manapság már ez a lépcsőfok is kikopni látszik: az UEFI-t sok esetben már nem így, hanem az operációs rendszerből kezdeményezett speciális újraindítással tudod elérni.
Indulhat a rendszer
A sikeres öndiagnosztika után az alaplapi interfésznek már csak egy feladata marad: találni egy bootolható partíciót a gépben lévő háttértárakon. Mivel ilyen területből akár több is lehet, az UEFI számára definiálva van egy alapértelmezett indítási sorrend, amely alapján a program végigjárja a különböző egységeket (például optikai meghajtó, pendrive, SSD), megkeresve közöttük az indításra alkalmas jelölteket. Ezt az információt az UEFI firmware az SRAM-ból (NVRAM, esetleg CMOS) nyeri ki, amely a rendszer indításától és leállításától függetlenül megtartja a benne tárolt adatokat. Míg régebben a Master Boot Record (MBR) megléte jelezte a bootolhatóságot, az UEFI már nem ez alapján dönt, hanem egy külön erre a célra létrehozott partíciót (EFI) keres - noha Legacy-módban képes MBR-ről is bootolni. Az említett indítási sorrend természetesen tetszés szerint változtatható az UEFI beállításaiban, így több indítólemez birtokában is mindig meg tudod határozni a kívánt prioritást. A legtöbb esetben érdemes élni ezzel a lehetőséggel, és a sor elejére venni azt a tárolót, amelyen az operációs rendszer van, hogy a firmware-nek ne kelljen az összes meghajtót végigpróbálgatnia minden bekapcsolás alkalmával.
Innen az UEFI átadja az irányítást az indítólemezen lévő segédprogramnak, az úgynevezett bootloadernek. Ennek az apró, de annál fontosabb szoftvernek tulajdonképpen egyetlen feladata van: megtalálni a lemezen lévő operációs rendszer - vagy dual boot esetén rendszerek - magját, a kernelt, és betölteni azt a memóriába. Ettől a ponttól a bootfolyamatot nem a gépben lévő hardver, hanem az operációs rendszer határozza meg. Már a bootloader típusa is függ attól, hogy milyen szoftvert használsz: Windowson a Windows Boot Manager (bootmgr) hívja meg a tényleges bootloadert (winload), Linuxon általában a GRUB fut, az Apple eszközein pedig boot.efi-ként hivatkoznak rá (a transzparencia mértékét jól jelzi, hogy külön nevet sem kapott).
Ezen a ponton viszonylag ritka a meghibásodás, és azt általában a tárhely (pontosabban a partíciós tábla vagy a fájlrendszer) sérülése okozza. Előfordulhat továbbá, hogy a bootloader bejegyzései rosszak, így nem jó helyről vagy nem a megfelelő beállításokkal próbálja elindítani a kernelt, ez azonban szinte mindig valamilyen nem megfelelő felhasználói módosítás eredménye. Ennek megfelelően a bootloaderek bizonyos mértékig konfigurálhatók: Windowson a boot.ini fájl tartalmazza a telepített program beállításait, míg Linuxon a /boot/grub helyen érdemes keresgélni (persze a fentebb említett problémák kiküszöbölése érdekében csak és kizárólag akkor, ha pontosan tudod, mit csinálsz). Emellett egyes bootloadereken a futásidőben is végrehajthatsz változtatásokat különböző paraméterek (flagek) használatával (a GRUB-ban minden elindítás során hozzáférhető az ehhez szükséges parancssor, macOS alatt ezek egy része speciális billentyűkombinációkkal érhető el bekapcsoláskor).
A kernel betöltődése már konkrétan az operációs rendszer elindulását jelenti. Ekkor még persze alacsony szintről beszélünk: a szoftvernek fel kell térképeznie a hardverkörnyezetet, hogy tisztában legyen azzal, milyen drivereket kell betöltenie a különböző eszközökhöz. Ezt nem a memóriában lévő adatok alapján teszi meg, hanem a speciális bemeneti/kimeneti rendszerbuszokon "tapogat" végig, amelyeken csatolt eszközökre számíthat. Ez a folyamat az úgynevezett autoprobing, eredményessége és rugalmassága kizárólag a rendszermag tudásán múlik. A Linux kernel például híresen jó ebben, így nagyobb eséllyel és sokkal gyorsabban alkalmazkodik az operációs rendszer, amikor a háttértár, amelyre telepítették, más hardverkörnyezetbe kerül. Ellentétben például a macOS kernelével, amelyet célhardverre fejlesztenek, a széles hardvertámogatottság nem szempont (többek között emiatt vérzik el sok "Hackintosh" rendszer, amennyiben a speciális bootloader nem tudja "becsapni" a rendszermagot).
A kernel dolga itt még nem ér véget, sőt: ezután kezdi felépíteni az operációs rendszer tulajdonképpeni környezetét. Betölti a megfelelő illesztőprogramokat, elindítja a szükséges szubrutinokat (Windowson például smss.exe és win32k.sys, Linuxon systemd). Ekkor zajlik a fájlrendszerek vizsgálata, illetve szükség esetén javítása; ezt leggyakrabban akkor veheted észre, amikor a folyamat jelzést ad, hogy a rendszert nem megfelelően állították le. A Microsoft környezetén ekkor betöltődik a híres-hírhedt rendszerleíró adatbázis (registry), illetve azok az egyéb illesztőprogramok, amelyek nem kaptak "BOOT_START" címkét a kernelben (jellemzően ide tartoznak a speciális külső perifériák). Ekkor indulnak el a háttérben folyamatosan futó rendszeralkalmazások, legvégül pedig a tényleges megjelenítésért felelős grafikus protokoll (Desktop Window Manager, illetve más rendszereken X, Wayland, vagy Quartz).
Célegyenesben
Ezen a ponton a vezérlés a Winlogon kezébe kerül. Ez felelős a felhasználók kezeléséért és autentikációjáért (például Group Policy szkriptek). Ekkor jelenik meg a bejelentkezési képernyő, és ettől kezdve tudja a felhasználó ténylegesen használni az operációs rendszert. Bejelentkezés után elkészül az adott felhasználói környezet (például elindul az explorer.exe, amely többek között a Start menü, a Tálca, az Asztal és a Fájlkezelő működéséért felel). Ezzel befejeződik az indítási folyamat, a rendszer használatra kész.
A Windowson belül, futásidőben is tudod módosítani a rendszerindítás beállításait. Ehhez írd be az [msconfig] parancsot a Start menübe. A megnyíló ablakban meglepően részletesen tudod konfigurálni a bootfolyamatot: kiválaszthatod, hogy milyen illesztőprogramok legyenek engedélyezve, meghatározhatod a bootsorrendet, de akár egyesével letilthatod a boot során elinduló szolgáltatásokat - de ezzel tényleg csak akkor babrálj, ha biztosan tudod, hogy erre van szükséged az adott probléma elhárításához. Az ebben a fázisban elvégzett változtatások természetesen a legközelebbi indításkor lesznek érvényesek.
Most pedig lapozz, hogy egy kicsit még mélyebbre ássunk a rendszerindításba. Mi az a BIOS és az UEFI? Mire jó a gyorsindítás? És hogyan indulnak a mobilok? Bökj itt alul a kettes gombra, és máris mondjuk!