Kas nutinka „Mac OS X“ įkrovos procese?

Anonim

Ar kada susimąstėte, kas nutinka „Mac OS X“ įkrovos ir paleidimo metu? Su „Mac OS X“ viskas yra šiek tiek sudėtingesnė nei anksčiau, o klasikinės „Mac OS“ (9, 8, 7, 6 sistemos) laikai jau seniai praėjo, kai stebime, kaip mūsų „Mac“ kompiuteriai paleidžiami naudojant daugybę plėtinių ir valdymo skydelių, visada galėtume identifikuoti vien pagal jų piktogramą, o tada naršyti aplanke „Plėtiniai“ ir lengvai pakoreguoti, kas įkeliama ir vyksta „Mac“ įkrovos metu.Šiandien su „Unix“ pagrindu sukurtu „Mac OS X“ pagrindu daugelis vartotojų visiškai nežino, kas vyksta užkulisiuose.

Taigi, kas tiksliai nutinka „Mac OS X“ įkrovos metu? Visada galite geriau pamatyti paleidę „Mac“ daugiafunkciu režimu, tačiau tai nebūtinai paaiškina viską, ką matote. Laimei, puikų paaiškinimą galima rasti „KernelThread“ segmente, kuriame kruopščiai išvardijama „Mac OS X“ įkrovos įvykių seka nuo pradžios iki pabaigos. Tai gana nuodugni ir verta perskaityti, pakartota toliau smalsiems „Mac“ naudotojams.

Pastaba: kaip atkreipė dėmesį skaitytojas, PPC naudoja OF (Openfirmware), i386 naudoja EFI (išplečiamą programinės aparatinės įrangos sąsają)

Taigi, kas nutinka „Mac OS X“ įkrovos metu? Įjungiate „Mac“ ir atsitinka taip:

  • Maitinimas įjungtas.
  • OF arba EFI kodas vykdomas.
  • Surenkama aparatinės įrangos informacija ir inicijuojama aparatinė įranga.
  • Kažkas (dažniausiai OS, bet ir tokie dalykai kaip Apple Hardware Test ir kt.) Pasirinktas paleisti. Vartotojas gali būti paragintas pasirinkti, ką paleisti.
  • Control pereina į /System/Library/CoreServices/BootX, įkrovos įkroviklį. „BootX“ įkelia branduolį ir nupiešia OS ženklelius, jei tokių yra.
  • BootX bando įkelti anksčiau talpykloje saugomą įrenginių tvarkyklių sąrašą (sukūrė / atnaujino /usr/sbin/kextcache). Tokios talpyklos tipas yra mkext ir joje yra kelių branduolio plėtinių informaciniai žodynai ir dvejetainiai failai. Atminkite, kad jei mkext talpykla yra sugadinta arba jos nėra, „BootX“ ieškos plėtinių, kurių reikia pagal dabartinį scenarijų, /System/Library/Extensions OSBundleRequired vertės plėtinio rinkinio faile Info.plist.
  • Vykdoma branduolio init rutina. Nustatomas įkrovos sistemos šakninis įrenginys. Šiuo metu programinė įranga nebepasiekiama.
  • Įvairias Mach/BSD duomenų struktūras inicijuoja branduolys.
  • I/O rinkinys inicijuotas.
  • Branduolys paleidžiamas /sbin/mach_init, Mach tarnybos pavadinimo (bootstrap) demonas. mach_init palaiko susiejimą tarp paslaugų pavadinimų ir Mach prievadų, kurie suteikia prieigą prie tų paslaugų.

Nuo šiol paleidimas tampa vartotojo lygiu:

  • mach_init prasideda /sbin/init, tradicinis BSD pradinis procesas. init nustato vykdymo lygį ir paleidžia /etc/rc.boot, kuri pakankamai sukonfigūruoja mašiną, kad būtų galima paleisti vieną vartotoją.

Jos vykdymo metu rc.boot ir kitas rc scenarijų š altinis /etc/rc.common , apvalkalo scenarijus su naudingomis funkcijomis, pvz., CheckForNetwork() (tikrina, ar tinklas veikia), GetPID (), purgedir() (ištrina tik katalogo turinį, o ne struktūrą) ir kt.

  • rc.boot nustato įkrovos tipą (daugelio naudotojų, saugaus, kompaktinio disko, tinklo ir kt.). Įkrovos iš tinklo atveju (sysctl kintamasis kern.netboot bus nustatytas į1, tokiu atveju jis paleidžiamas /etc/rc.netboot su pradėti argumentas.

/etc/rc.netboot tvarko įvairius tinklo įkrovos aspektus. Pavyzdžiui, jis atlieka tinklo ir (jei yra) vietinius prijungimus. Ji taip pat iškviečia /usr/bin/nbst, kad susietų šešėlinį failą su disko vaizdu, naudojamu kaip šakninis įrenginys.Idėja yra nukreipti rašymą į šešėlinį failą, kuris, tikiuosi, yra vietinėje saugykloje.

  • rc.boot išsiaiškina, ar reikia patikrinti failų sistemos nuoseklumą. Vieno vartotojo ir CD-ROM įkrovos nepaleidžia fsck. „SafeBoot“ visada veikia „fsck“. rc.boot taip pat tvarko fsck grąžinimo būseną.
  • Jei rc.boot sėkmingai išeina, /etc/rc , tada paleidžiamas kelių vartotojų paleisties scenarijus. Jei paleidžiama iš kompaktinio disko, scenarijus persijungia į /etc/rc.cdrom (diegimas).
  • /etc/rc jungia vietines failų sistemas (HFS+, HFS, UFS, /dev/ fd, /.vol), užtikrina, kad katalogas /private/var/tmp egzistuoja ir veikia /etc/rc.installer_cleanup, jei toks yra (paliko diegimo programa prieš paleisdama iš naujo).
  • /etc/rc.cleanup paleidžiamas. Jis „išvalo“ daugybę Unix ir Mac specifinių katalogų/failų.
  • BootCache paleista.
  • Įvairūs sysctl kintamieji yra nustatyti (pvz., maksimalaus vnode skaičiaus, V sistemos IPC ir kt.). Jei /etc/sysctl.conf egzistuoja (plius /etc/sysctl-macosxserver.conf „Mac OS X Server“), jis nuskaitomas ir nustatomi sysctl jame esantys kintamieji.
  • syslogd pradėtas.
  • Sukurtas Macho simbolio failas.
  • /etc/rc pradedamas kextd, demono procesas kuri pagal poreikį įkelia branduolio plėtinį iš branduolio arba kliento procesų.
  • /usr/libexec/register_mach_bootstrap_servers paleidžiama siekiant įkelti įvairias Mach įkrovos paslaugas, esančias / etc/mach_init.d
  • portmap ir netinfo paleisti.
  • Jei /System/Library/Extensions.mkext yra senesnis nei /System/Library/Extensions , /etc/rc ištrina esamą mkext ir sukuria naują. Jis taip pat sukuria vieną, jei jo nėra.
  • /etc/rc startuoja /usr/sbin/update , demonas, kuris dažnai išplauna vidines failų sistemos talpyklas į diską.
  • /etc/rc paleidžia virtualiosios atminties sistemą. /private/var/vm nustatytas kaip apsikeitimo katalogas. /sbin/dynamic_pager paleidžiamas su atitinkamais argumentais (swap failo pavadinimo kelio šablonas, sukurtų apsikeitimo failų dydis, aukšto ir žemo vandens perspėjimo paleidikliai, nurodantys, kada sukurti papildomą apsikeitimą failus arba ištrinti esamus).
  • /etc/rc startuoja /usr/libexec/fix_prebinding , kad ištaisytumėte neteisingai susietus dvejetainius failus.
  • /etc/rc vykdo /etc/rc.cleanupnorėdami išvalyti ir iš naujo nustatyti failus ir įrenginius.
  • /etc/rc pagaliau paleidžiama /sbin/SystemStarter tvarkyti paleisties elementus iš tokių vietų kaip /System/Library/StartupItems ir /Library/StartupItems StartupItem yra programa, paprastai apvalkalo scenarijus, kurios pavadinimas sutampa su aplanko pavadinimu. Aplanke yra ypatybių sąrašo failas, kuriame yra raktų ir reikšmių poros, pvz., Description, Provides, Reikia, OrderPreference, start/stop pranešimai ir kt. Galite paleisti SystemStarter -n -D kaip root, kad programa išspausdintų derinimo ir priklausomybės informaciją (iš tikrųjų nieko nevykdant).
  • CoreGraphics paleisties elementas paleidžia „Apple Type Services“ demoną (ATSServer ), taip pat „Window Server“ (WindowServer).

Ir tada jūsų „Mac“ bus paleistas!

Nedidelę šios veiklos dalį galite pamatyti patys naudodami daugiafunkcinį režimą (kurį galite paleisti į daugiažodį režimą kiekvieną kartą arba netgi galite nustatyti, kad „Mac“ visada būtų paleistas išsamiu režimu, jei norite visada matyti unix stiliaus įkrova), bet tai gana išsamus paaiškinimas.

„Apple“ taip pat turi tam tikrą dokumentaciją apie „Mac“ įkrovos procesą, kurią galima rasti čia, jų kūrėjų dokumentų bibliotekoje.

Atminkite, kad pirminis URL, kuriame pateikta aukščiau pateikta informacija, nebėra aktyvus, todėl šis įrašas buvo įtrauktas į aukščiau palikuonims per talpyklą. Pradinis š altinis buvo „KernelThread“ gija šiuo URL adresu: http://www.kernelthread.com/mac/osx/arch_startup.html, kuri šiuo metu yra neprisijungusi ir neperadresuoja į naują vietą.

Jei turite kokių nors smulkmenų ar kitų papildymų, kuriuos norite pridėti prie „Mac OS X“ įkrovos sekos, pasidalykite komentaruose!

Kas nutinka „Mac OS X“ įkrovos procese?