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).