A folyamat a betöltés Apple Mac Intel

A folyamat a betöltés Apple Mac Intel

Azt már régóta akartam, hogy fontolja meg a Mac OS X boot folyamat, csináljuk együtt. Figyelmeztetem - ez az én megpróbálja megérteni, és nem veszik figyelembe ezt a cikket, mint a végső igazságot. Ez az első rész, akkor meg kell vizsgálni, részletesebben a kezdeti és a végső fázisban - indító ROM-mal / EFI és launchd.







Írás közben szoktam a következő információkat:

Az indítási folyamat Intel Mac (Snow Leopard):

1. Ha a készülék megkezdi indító ROM-mal firmware.

1.1. Futó POST (Power-On Self Test), initialization néhány rendszer interfészek és annak ellenőrzése, hogy a rendszer elég memória, és ez a normális állapot.

1.2. Fut EFI (Extensible Firmware Interface). inicializálása a többi alaprendszer „vas” van, és különböző operációs rendszereken.

2. Ellenőrzési jut el a rakodó boot.efi. elhelyezkedik részben a kiválasztott Mac OS X. A fő feladat -, hogy készítsen mindent a kernel betöltéséhez. boot.efi tárolt / System / Library / CoreServices / (másolás és - a / usr / önálló / i386 /).

2.1. A kijelző színes világosszürke.

2.2. Loader megpróbálja betölteni prelinkovannuyu kernel (a mag a legtöbb - / mach_kernel), beleértve az összes szükséges illesztőprogramok csomagtartó. Emiatt, a betöltési idő jelentősen csökken. Katalógus /System/Library/Caches/com.apple.kext.caches/Startup/ írja kernelcache_i386.2B109974 fájlok (itt felsorolt ​​építészet és 8 karakter ellenőrző által kiszámított algoritmus Adler-32).







2.3. Apple logó jelenik meg, és fonás kurzor jelenik meg.

2.4. Ha prelinkovannaya kernel verzió nem elavult (pl vezető módosítás ideje újabb, mint a kernel), vagy megsérül, a rakodó megpróbálja betölteni az összes illesztőprogramot a cache mkext /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext . Leírás cache van /usr/standalone/bootcaches.plist.

2.5. Ha a cache hiányzik, sérült vagy elavult, a boot loader megkeresi a / System / Library / Extensions vezetők és a kernel kiterjesztés és betölti amelyekben OSBundleRequired értékre állítjuk be, amely megfelel a rakománynak (például helyi hálózat, stb.) További részletek találhatók a „Loading Kernel Extensions at boot time”. Például,

    Options OSBundleRequired:
  • Root. Ez kext van szükség, hogy felmászik gyökér, függetlenül attól, hogy hol gyökér származik - például a platform vezetők és a családok, PCI vagy USB.
  • Hálózat-Root. Ez kext van szükség, hogy felmászik a root egy távoli hangerő-például a hálózat család, Ethernet illesztőprogramok és az NFS.
  • Helyi-Root. Ez kext köteles csatoljuk a gyökeret a helyi térfogat - például a tárolási család, lemez meghajtók vagy fájlrendszereket.
  • Konzol. Ez kext kell adnia karakter konzol támogatás (single-user mode) - például billentyűzet vagy járművezetők az ADB család.
  • Biztonságos rendszerindítás. Ez kext van szükség még a biztonságos rendszerindítás (felesleges kiterjesztések kikapcsolva) -A például egér illesztőprogramok vagy grafikus illesztőprogramok.

2.6. Amikor a kernel és az összes szükséges meghajtók vannak betöltve (nem indult el, nevezetesen a „terhelt” a memóriában), a rakodó indul a rendszermag inicializálási folyamatot. Ebben a lépésben elegendő számú vezetők tölteni a készüléket, azt találták, hogy a házigazdák a gyökér fájlrendszer (pontosabban - gyökér eszköz).

2.7. Kernel inicializálja az adatstruktúra és Mach BSD, majd az I / O Kit (gyűjtőrendszer könyvtárak és keretek, alátámasztó egyéb eszközmeghajtók). I / O Kit összekapcsolja a vezető a kernel, az eszköz felhasználásával fát, hogy melyik járművezetők kapcsolni azt. Ez a fa alapult EFI színpadon. Kilátás a már terhelt rendszer, akkor:

4. Végül launchd kezdődik loginwindow (login ablakban).