A Kernelthread oldala részletesen leírta mi is történik a Mac OS X operációs rendszerű számítógépek indításakor (boot). A következő leírás valószínű többek számára kicsit tól részletesnek és érthetetlennek fog tünni, de mindenki találni fog benne valami érdekes információt:
– A számítógépet bekapcsolják.
– Az Open Frmware utasítások lefutnak.
– Összegyűlnek a hardverről a szükséges információk.
– Kiválasztódik az indítandó rendszer (pl. OS, vagy Apple Hardver CD teszt). Ez a lépés akár a felhasználónak is fel lehet ajánlva.
– A /System/Library/CoreServices/BootX átveszi az irányítást, ez a betöltés indító egység. A BootX ketölti a kernelt és amennyiben az indítandó rendszernek létezik képe (logója, stb.), megjeleníti azt.
– A BootX először az korábban gyorstárazott listáról próbálja meg betölteni az egységek meghajtóit (ezt a /usr/sbin/kextcache hozza létre és frissíti). Amennyiben a betöltendő „mkext” file sérült lenne, vagy hiányozna, a BootX a /System/Library/Extensions mappában keresné meg a betöltendő egységeket.
– Lefut a kernel indító rutinja. Az indító rendszer gyökér-könyvtára kinevezésre kerül. Innentől kezdve az Open Firmware nem érhető el.
– A kernel különböző Mach/BSD szerkezetek tölt be.
– Betöltődik az I/O egység.
– A kernel elindítja az /sbin/mach_init egységet, amely a Mach szolgáltatások névadója. Ez az egység felügyeli a szolgáltatások neveit és azokat a portokat, amelyeken keresztül a szolgáltatások elérhetőek.
Innentől kezdve az indítás a felhasználói szinten folytatódik.
– A mach_init elindítja az /sbin/init egységet, a tradícionális BSD indító folyamatot. Az init határozza meg a futtatási szintet és az /etc/rc.boot segítségével beállítja a rendszert, hogy az képes legyen single-user módban üzemelni.
– Az rc.boot határozza meg az indítás típusát (több-felhasználós, Safe, CD-ROM, hálózati, stb.). Hálózati indítás esetén a kern.netboot-ban található sysctl változó 1-es értéket vesz fel, majd az /etc/rc.netboot kerül lefuttatásra.
– Az rc.boot kitalálja, hogy az adott szituációban az fsck futtatása szükséges-e (fsck – file system consistency check). Egy felhasználós és CD-ROM indítások esetén nem fut le az fsck. Safe indítás esetében pedig mindig lefut.
– Az rc.boot sikeres kilépése esetén lefut az /etc/rc indíó parancs. CD-ROM esetében ez a /etc/rc.cdrom-ra hárul.
– Az /etc/rc elindítja a helyi file rendszert (HFS+, HFS, UFS, /dev/fd, / .vol) és megbizonyosodik a /private/var/tmp létezéséről. Ezután lefuttatja az /etc/rc.installer_cleanup parancsot, ha indítás előtt még vissza maradt volna (valamelyik telepítő által).
– Az /etc/rc.cleanup fut le és kitakarít néhány Unix és Mac-es könyvtárban.
– Elindul a BootCache.
– Különböző sysctl változók lesznek meghatározva (pl. vnode-ok maximuma, System V IPC, stb.). /etc/sysctl.conf megléte esetén az abban tárolt változók beolvasására kerülnek.
– Elindul a syslogd.
– A Mach szimbólum dokumentum létre lesz hozva.
– Az /etc/rc elindítja a kextd folyamatot, amely szükség esetén a meghívott kernel kiegészítőket tölti majd be.
– A /usr/libexec/register_mach_bootstrap_servers lefut, amely az /etc/mach_init.d-ben tárolt szolgáltatásokat indítja el.
– Elindul a portmap és netinfo.
– Amennyiben a /System/Library/Extension.mkext öregebb, mint a /System/Library/Extensions, az /etc/rc törli azt, majd létrehoz egy újabbat. Amennyiben az mkext nem létezne, létrehozza azt.
– Az /etc/rc elindítja a /usr/sbin/update folyamatot, amely a rendszer gyorstárát üríti ki időközönként a tárolóra.
– Az /etc/rc elindítja a /usr/libexec/fix_prebindig parancsot, amely a helytelenül kapcsolt programokat kapcsolja újra (prebinding).
– Az /etc/rc elindítja az /sbin/SystemStarter folyamatot, amely az indításkor lefuttatandó programokat indítja el (mint pl. ami a /System/Library/StartupItems, vagy a /Library/StartupItems mappákban is található).
– A CoreGraphics elindítja az Apple Type Services (ATSServer) és a Window Server folyamatokat.
– Alap beállítás esetében a loginwindow alkalmazás indul el (grafikus bejelentkező felület), bár ez megváltoztatható az /etc/ttys dokumentumban.
Az eredeti itt.