ПредишенСледващото

Процесът на зареждане Apple Mac Intel

Аз отдавна исках да се помисли за Mac OS X процес на зареждане, нека го направим заедно. Предупреждавам - това е моят опит да се разбере, и не помисли за тази статия като истина от последна инстанция. Това е първата част, а след това ще се спра по-подробно на началната и крайната фаза - BootROM / EFI и launchd.

Докато пишех, аз използвах следната информация:

Процесът на зареждане на Intel Mac (Барс):

1. Когато захранването започва BootROM фърмуера.

1.1. Работещи POST (Power-On Self Test), инициализация на някои системни интерфейси и проверка, че системата има достатъчно памет, и то е в нормално състояние.

1.2. Изпълнява EFI (Extensible фърмуера интерфейс). инициализиране на останалата част от базовата система "желязо", и произвежда различни операционни системи.

2. контрол се предава на boot.efi на товарача. разположен на участъка от избрания Mac OS X. Неговата основна задача - да подготвят всичко, за да се зареди ядрото. boot.efi съхранява в / System / Library / CoreServices / (копие и - в / ЮЕсАр / самостоятелен / i386 /).

2.1. Дисплеят е оцветена в светло сиво.

2.2. Loader се опитва да зареди prelinkovannuyu версия на ядрото (в основата на най - / mach_kernel), включително всички шофьори са необходими, за да зареди. Поради това, времето за зареждане се намалява значително. Каталог /System/Library/Caches/com.apple.kext.caches/Startup/, тип kernelcache_i386.2B109974 файлове (изброени тук архитектура и 8 символа контролна изчислява чрез алгоритъма Adler-32).

2.3. Изглежда Apple лого и се появява предене курсора.

2.4. Ако prelinkovannaya версия на ядрото не е остаряла (например, времето модификация на водача е по-нова от ядрото), или е повреден, товарача се опитва да зареди всички драйвери от /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext кеш mkext , Описание на кеша е в /usr/standalone/bootcaches.plist.

2.5. Ако кеша липсва, повредена или остаряла, на зареждането на ОС търси директорията / System / Library / Extensions драйвери и разширенията на ядрото и зарежда тези, при които OSBundleRequired настроен на стойност, съответстваща на вида на товара (например, местни, мрежа и др.) Повече подробности можете да намерите в "Зареждане на ядрото Удължаването Boot Time". Например,

    Опции OSBundleRequired:
  • Root. Това KEXT е необходимо да монтирате корен, независимо къде корен идва от - например, шофьорите на платформата и семейства, PCI или USB.
  • Мрежа-Root. Това KEXT е необходимо да монтирате корен на обемно-например дистанционно, семейството на мрежа, Ethernet драйвери или за NFS.
  • Местна-Root. Това KEXT е необходимо да монтирате корен на местно обем - например семейството на съхранение, диск драйвери, или файлови системи.
  • Console. Това KEXT е необходимо да се осигури подкрепа (потребителски режим) характер конзола - например клавиатура драйвери или семейството ADB.
  • Сейф Boot. е задължително Това KEXT дори по време на безопасно зареждане (ненужните разширения увреждания) -например, шофьори мишка или графични драйвери.

2.6. Когато ядрото и всички необходими драйвери са заредени (не е започнало, а именно "зарежда" в памет), товарача започва процеса на инициализиране на ядрото. В тази стъпка, достатъчно на брой шофьори изтеглени на устройството е било установено, която е основната файлова система (по-ясно - корен устройство).

2.7. Kernel инициализира структурата на данните и Mach BSD, а след това I / O комплекта (система за събиране на библиотеки и рамки, подкрепа на други драйвери на устройства). I / O Kit свързва водача в ядрото, като се използва дървото на устройството, за да се определи кои драйвери, за да го свържете. Това дърво се основава на сцената EFI. Преглед от своя вече заредена система, можете да:

4. Накрая launchd започва loginwindow (вход прозорец).

Подкрепете проекта - споделете линка, благодаря!