Kas notiek Mac OS X sāknēšanas procesā?

Anonim

Vai esat kādreiz domājuši, kas notiek Mac OS X sāknēšanas un startēšanas procesa laikā? Ar operētājsistēmu Mac OS X tas ir nedaudz sarežģītāk nekā agrāk, un sen ir pagājuši klasiskās Mac OS (sistēmas 9., 8., 7., 6. sistēma), kad skatoties, kā mūsu Mac datori tiek palaists ar vairākiem paplašinājumiem un vadības paneļiem, kas mēs vienmēr varētu identificēt tikai pēc viņu ikonas un pēc tam izpētīt mapi Paplašinājumi, lai viegli pielāgotu to, kas tiek ielādēts un notiek Mac sāknēšanas laikā.Mūsdienās ar Unix Mac OS X pamatiem daudzi lietotāji pilnībā nezina, kas notiek aizkulisēs.

Kas tad īsti notiek Mac OS X sāknēšanas procesa laikā? Jūs vienmēr varat iegūt labāku izskatu, palaižot Mac datoru detalizētajā režīmā, taču tas ne vienmēr izskaidro visu, ko redzat. Par laimi lielisks skaidrojums ir pieejams, izmantojot KernelThread segmentu, kurā rūpīgi uzskaitīta Mac OS X sāknēšanas notikumu secība no sākuma līdz beigām. Tas ir diezgan pamatīgs, un to ir vērts izlasīt. Tālāk atkārtojiet to zinātkārajiem Mac lietotājiem.

piezīme: Kā norādīja lasītājs, PPC izmanto OF (Openfirmware), i386 izmanto EFI (paplašināmo programmaparatūras interfeisu)

Tātad, kas notiek Mac OS X sāknēšanas procesa laikā? Jūs ieslēdzat savu Mac datoru, un notiek šādi:

  • Barošana ir ieslēgta.
  • OF vai EFI kods tiek izpildīts.
  • Tiek apkopota aparatūras informācija un inicializēta aparatūra.
  • Kaut kas (parasti OS, bet arī tādas lietas kā Apple Hardware Test utt.) ir atlasīta sāknēšanai. Lietotājam var tikt piedāvāts izvēlēties, ko sāknēt.
  • Control pāriet uz sāknēšanas ielādētāju /System/Library/CoreServices/BootX. BootX ielādē kodolu un arī izvelk OS emblēmas, ja tādas ir.
  • BootX mēģina ielādēt iepriekš kešatmiņā saglabātu ierīču draiveru sarakstu (izveidoja/atjaunināja /usr/sbin/kextcache). Šādas kešatmiņas veids ir mkext, un tajā ir informācijas vārdnīcas un binārie faili vairākiem kodola paplašinājumiem. Ņemiet vērā: ja mkext kešatmiņa ir bojāta vai tās trūkst, BootX mapē /System/Library/Extensions meklēs paplašinājumus, kas nepieciešami pašreizējā scenārijā (kā noteikts rekvizīta OSBundleRequired vērtība paplašinājuma komplekta failā Info.plist.
  • Tiek izpildīta kodola init rutīna. Tiek noteikta sāknēšanas sistēmas saknes ierīce. Šobrīd programmaparatūra vairs nav pieejama.
  • Kodols inicializē dažādas Mach/BSD datu struktūras.
  • I/O komplekts ir inicializēts.
  • Kodols startē /sbin/mach_init, Mach pakalpojumu nosaukšanas (bootstrap) dēmonu. mach_init uztur kartējumus starp pakalpojumu nosaukumiem un Mach portiem, kas nodrošina piekļuvi šiem pakalpojumiem.

No šī brīža startēšana kļūst lietotāja līmenī:

  • mach_init sāk /sbin/init, tradicionālo BSD sākuma procesu. init nosaka izpildes līmeni un palaiž /etc/rc.boot, kas iestata mašīnu pietiekami, lai palaistu viena lietotāja darbību.

Izpildes laikā rc.boot un citu rc skriptu avots /etc/rc.common , čaulas skripts, kas satur utilīta funkcijas, piemēram, CheckForNetwork() (pārbauda, ​​vai tīkls ir izveidots), GetPID (), purgedir() (izdzēš tikai direktorija saturu, nevis struktūru) utt.

  • rc.boot nosaka sāknēšanas veidu (vairāklietotāju, drošs, CD-ROM, tīkls utt.). Tīkla sāknēšanas gadījumā (mainīgais sysctl kern.netboot tiks iestatīts uz1, tādā gadījumā tas palaiž /etc/rc.netboot ar sākt arguments.

/etc/rc.netboot apstrādā dažādus tīkla sāknēšanas aspektus. Piemēram, tas veic tīkla un (ja tādi ir) lokālos stiprinājumus. Tas arī izsauc /usr/bin/nbst, lai saistītu ēnas failu ar diska attēlu, kas tiek izmantots kā saknes ierīce.Ideja ir novirzīt rakstīšanu uz ēnu failu, kas, cerams, atrodas vietējā krātuvē.

  • rc.boot izdomā, vai ir nepieciešama failu sistēmas konsekvences pārbaude. Viena lietotāja un CD-ROM boots nedarbojas fsck. SafeBoot vienmēr palaiž fsck. rc.boot apstrādā arī fsck atgriešanas statusu.
  • Ja rc.boot veiksmīgi iziet, /etc/rc , pēc tam tiek palaists vairāku lietotāju startēšanas skripts. Ja tiek palaists no CD-ROM, skripts tiek pārslēgts uz /etc/rc.cdrom (instalēšana).
  • /etc/rc pievieno lokālās failu sistēmas (HFS+, HFS, UFS, /dev/ fd, /.vol), nodrošina, ka direktorijs /private/var/tmp pastāv, un tiek palaists /etc/rc.installer_cleanup, ja tāds pastāv (atstāj instalētājs pirms atkārtotas palaišanas).
  • /etc/rc.cleanup ir palaists. Tas "attīra" vairākus Unix un Mac specifiskus direktorijus/failus.
  • Sāknēšanas kešatmiņa ir startēta.
  • Dažādi sysctl ir iestatīti mainīgie (piemēram, maksimālajam vnode skaitam, System V IPC utt.). Ja /etc/sysctl.conf pastāv (plus /etc/sysctl-macosxserver.conf operētājsistēmā Mac OS X Server), tas tiek nolasīts un tiek iestatīti sysctl tajā ietvertie mainīgie.
  • syslogd ir startēts.
  • Mach simbola fails ir izveidots.
  • /etc/rc sāk kextd, dēmona process kas pēc pieprasījuma ielādē kodola paplašinājumu no kodola vai klienta procesiem.
  • /usr/libexec/register_mach_bootstrap_servers tiek palaists, lai ielādētu dažādus Mach bootstrap pakalpojumus, kas ietverti / etc/mach_init.d
  • portmap un netinfo ir sākti.
  • Ja /System/Library/Extensions.mkext ir vecāks par /System/Library/Extensions , /etc/rc izdzēš esošo mkext un izveido jaunu. Tā arī izveido tādu, ja tāda neeksistē.
  • /etc/rc sākas /usr/sbin/update , dēmons, kas bieži izskalo iekšējās failu sistēmas kešatmiņas diskā.
  • /etc/rc sāk virtuālās atmiņas sistēmu. /private/var/vm ir iestatīts kā mijmaiņas direktorijs. /sbin/dynamic_pager tiek sākts ar atbilstošiem argumentiem (mijmaiņas faila nosaukuma ceļa veidne, izveidoto mijmaiņas failu lielums, augsta un zema ūdens līmeņa brīdinājuma trigeri, kas norāda, kad izveidot papildu mijmaiņas darījumu failus vai dzēst esošos).
  • /etc/rc sākas /usr/libexec/fix_prebinding , lai labotu nepareizus iepriekš saistītus bināros failus.
  • /etc/rc izpilda /etc/rc.cleanuplai notīrītu un atiestatītu failus un ierīces.
  • /etc/rc beidzot palaiž /sbin/SystemStarter lai apstrādātu startēšanas vienumus no tādām vietām kā /System/Library/StartupItems un /Library/StartupItems StartupItem ir programma, parasti čaulas skripts, kuras nosaukums atbilst mapes nosaukumam. Mapē ir rekvizītu saraksta fails, kurā ir ietverti atslēgu un vērtību pāri, piemēram, Description, Provides, Nepieciešams, OrderPreference, sākuma/pārtraukšanas ziņojumi utt. Varat palaist SystemStarter -n -D kā root, lai programma drukātu atkļūdošanas un atkarības informāciju (faktiski neko nepalaižot).
  • CoreGraphics startēšanas vienums palaiž Apple Type Services dēmonu (ATSServer ), kā arī Window Server (WindowServer).

Un tad jūsu Mac tiek palaists!

Varat pats redzēt nelielu daļu no šīs darbības, izmantojot detalizēto režīmu (kuru varat palaist detalizētajā režīmā katrā sāknēšanas reizē, vai pat varat iestatīt Mac, lai tas vienmēr tiktu sāknēts detalizētajā režīmā, ja vēlaties vienmēr redzēt unix stila sāknēšana), taču tas ir diezgan pamatīgs skaidrojums.

Apple arī ir pieejama dokumentācija par Mac sāknēšanas procesu, kas pieejama šeit, izstrādātāju dokumentu bibliotēkā.

Ņemiet vērā, ka sākotnējais URL, kurā norādīta iepriekš minētā informācija, vairs nav aktīvs, tāpēc šī ziņa ir iekļauta iepriekš, izmantojot kešatmiņu. Sākotnējais avots bija pavediens KernelThread ar šādu URL: http://www.kernelthread.com/mac/osx/arch_startup.html, kas pašlaik ir bezsaistē un nenovirza uz jaunu atrašanās vietu.

Ja jums ir kādi sīkumi vai citi papildinājumi, ko pievienot Mac OS X sāknēšanas secībai, kopīgojiet to komentāros!

Kas notiek Mac OS X sāknēšanas procesā?