Kas nutinka „Mac OS X“ įkrovos procese?
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 yramkext
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 faileInfo.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
kintamasiskern.netboot
bus nustatytas į1
, tokiu atveju jis paleidžiamas/etc/rc.netboot
supradė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 nustatomisysctl jame esantys kintamieji.
syslogd pradėtas.
- Sukurtas Macho simbolio failas.
/etc/rc
pradedamaskextd, 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
irnetinfo 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 paleistiSystemStarter -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!