Procesul de descărcare mac mac mac

Procesul de descărcare mac mac mac

Pentru o lungă perioadă de timp am vrut să ia în considerare procesul de încărcare Mac OS X, să facem împreună. Vă avertizez - aceasta este încercarea mea de a înțelege și nu consider acest articol drept adevărul final. Aceasta este prima parte, apoi voi examina în detaliu etapele inițiale și finale - BootROM / EFI și launchd.







În procesul de scriere, am folosit aceste informații:

Procesul de boot pentru Intel Mac (Snow Leopard):

1. Atunci când alimentarea este pornită, firmware-ul BootROM este pornit.

1.1. Rularea POST (Power-On Self Test), inițializare unor interfețe de sistem și de verificare că sistemul are suficientă memorie și este în stare normală.

1.2. Este pornit EFI (Interfata Firmware Extensibilă). inițializând restul componentelor hardware ale sistemului și făcând alegerea sistemului de operare.

2. Controlul este trimis la bootloader-ul boot.efi. localizat pe partiția sistemului Mac OS X selectat. Sarcina sa principală este de a pregăti totul pentru încărcarea kernel-ului. boot.efi este localizat în / System / Library / CoreServices / (și copia este în / usr / standalone / i386 /).

2.1. Afișajul este umplut cu o culoare gri deschis.

2.2. Loader încearcă să se încarce prelinkovannuyu versiune a kernel-ului (nucleul mai - / mach_kernel), inclusiv toate driverele necesare pentru a porni. Din acest motiv, timpul de încărcare este semnificativ redus. Catalog /System/Library/Caches/com.apple.kext.caches/Startup/, tip kernelcache_i386.2B109974 fișiere (arhitectură listate aici și 8 caractere de control calculat prin algoritmul Adler-32).







2.3. Apare sigla Apple și apare un cursor rotativ.

2.4. Dacă versiunea de nucleu prelinkovannaya nu este depășit (de exemplu, timpul de modificare conducătorului auto este mai nou decât kernel-ul), sau este deteriorat, încărcătorul încearcă să se încarce toate driverele de la /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext cache mkext . Descrierea cache-ului este localizată în /usr/standalone/bootcaches.plist.

2.5. În cazul în care memoria cache lipsește, este deteriorat sau depășite, încărcătorul de boot caută directorul / System / drivere Biblioteca / Extensii și extensii de kernel și încarcă cele în care OSBundleRequired setat la o valoare corespunzătoare tipului de sarcină (de exemplu, local, de rețea, etc.). Mai multe detalii pot fi găsite în "Încărcarea extensiilor kernel-ului la boot time". De exemplu,

    OSBundleOpțiuni de aprovizionare:
  • Root. Acest KEXT este necesar pentru a monta rădăcina, indiferent de unde provine rădăcina - de exemplu, drivere de platformă și familii, PCI sau USB.
  • Rețeaua-Root. Acest KEXT este necesar pentru a monta root pe un volum la distanță - de exemplu, familia de rețea, driverele Ethernet sau NFS.
  • Local-Root. Acest KEXT este necesar să se monteze pe volumul local - de exemplu, familia de stocare, driverele de disc sau sistemele de fișiere.
  • Console. Acest KEXT este necesar pentru a oferi suport pentru consolă de caractere (modul de utilizator unic) - de exemplu, drivere de tastatură sau familia ADB.
  • Încărcare sigură. Acest KEXT este necesar chiar și în timpul încărcării în siguranță (extensiile inutile sunt dezactivate) - de exemplu, drivere de șoarece sau drivere grafice.

2.6. Când nucleul și toate driverele necesare sunt încărcate (nu au început, adică "încărcate" în memorie), încărcătorul de boot pornește procedura de inițializare a kernel-ului. În acest stadiu, un număr suficient de drivere sunt încărcate pentru a găsi un dispozitiv pe care se află sistemul de fișiere rădăcină (mai clar, dispozitivul rădăcină).

2.7. Kernel inițializează structura de date și Mach BSD, și apoi O Kit I / (biblioteci și cadre ale sistemului de colectare, sprijinirea altor drivere de dispozitiv). Kitul I / O leagă driverul de kernel, utilizând arborele dispozitivului pentru a determina ce drivere să se lege. Acest arbore a fost construit la etapa EFI. Puteți vedea acest lucru deja din sistemul încărcat după cum urmează:

4. În cele din urmă, boot-ul lansează loginwindow (fereastra de conectare).







Trimiteți-le prietenilor: