Što se događa u procesu pokretanja sustava Mac OS X?
Jeste li se ikad zapitali što se događa tijekom procesa pokretanja i pokretanja Mac OS X-a? Sa Mac OS X-om malo je kompliciranije nego što je nekada bilo, a davno su prošli dani klasičnog Mac OS-a (Sustav 9, 8, 7, 6), gdje smo gledali kako se naši Macovi podižu s nizom proširenja i kontrolnih ploča koje uvijek bismo mogli identificirati samo po njihovoj ikoni, a zatim ići kopati po mapi Extensions kako bismo jednostavno podesili što se učitava i događa pri pokretanju Maca.Danas s Unix podlogom Mac OS X-a, mnogi korisnici uopće nisu svjesni što se događa iza kulisa.
Dakle, što se točno događa tijekom procesa pokretanja Mac OS X-a? Uvijek možete bolje pogledati pokretanjem Maca u Verbose Modeu, ali to ne mora nužno objasniti sve što vidite. Srećom, izvrsno objašnjenje dostupno je putem segmenta na KernelThreadu, koji pažljivo navodi slijed događaja pokretanja Mac OS X-a, od početka do kraja. Prilično je temeljit i vrijedan čitanja, ponovljen u nastavku za radoznale korisnike Maca.
napomena: Kao što je čitatelj istaknuo, PPC koristi OF (Openfirmware), i386 koristi EFI (Extensible Firmware Interface)
Dakle, što se događa tijekom postupka pokretanja Mac OS X-a? Uključite svoj Mac i dogodi se ovo:
- Napajanje je uključeno.
- OF ili EFI kod se izvršava.
- Informacije o hardveru se prikupljaju i hardver se inicijalizira.
- Nešto (obično OS, ali i stvari kao što je Apple Hardware Test, itd.) je odabrano za pokretanje. Od korisnika se može tražiti da odabere što će pokrenuti.
- Kontrola prelazi na
/System/Library/CoreServices/BootX, pokretački program. BootX učitava kernel i iscrtava oznake OS-a, ako ih ima.
- BootX pokušava učitati prethodno predmemorirani popis upravljačkih programa uređaja (kreirao/ažurirao
/usr/sbin/kextcache
). Takva predmemorija je tipamkext
i sadrži info rječnike i binarne datoteke za više ekstenzija kernela. Imajte na umu da ako je mkext predmemorija oštećena ili nedostaje, BootX će tražiti u/System/Library/Extensions
ekstenzije koje su potrebne u trenutnom scenariju (kako je određeno prema vrijednost svojstvaOSBundleRequired
u datoteciInfo.plist paketa ekstenzije.
- Izvršena je
init rutina kernela. Određen je korijenski uređaj sustava za dizanje. U ovom trenutku firmware više nije dostupan.
- Različite Mach/BSD strukture podataka inicijalizira kernel.
- I/O komplet je inicijaliziran.
- Jezgra pokreće
/sbin/mach_init
, demon Machove usluge imenovanja (bootstrap).mach_init održava preslikavanja između naziva usluga i Mach portova koji omogućuju pristup tim uslugama.
Odavde nadalje, pokretanje postaje na korisničkoj razini:
mach_init
počinje/sbin/init
, tradicionalni BSD init proces. init određuje runlevel i pokreće/etc/rc.boot, što postavlja stroj dovoljno za rad s jednim korisnikom.
Tijekom njegovog izvođenja, rc.boot
i drugi rc
izvor skripte /etc/rc.common
, skripta ljuske koja sadrži pomoćne funkcije, kao što su
CheckForNetwork() (provjerava radi li mreža),
GetPID (), purgedir() (briše samo sadržaj direktorija, ne strukturu), itd.
rc.boot
utvrđuje vrstu pokretanja (višekorisničko, sigurno, CD-ROM, mrežno itd.). U slučaju mrežnog pokretanja (sysctl
varijablakern.netboot
bit će postavljena na1
u tom slučaju), pokreće/etc/rc.netboot
sstart argument.
/etc/rc.netboot
obrađuje različite aspekte mrežnog dizanja. Na primjer, izvodi mrežno i (ako postoji) lokalno montiranje. Također poziva /usr/bin/nbst za pridruživanje datoteke u sjeni sa slikom diska koja se koristi kao root uređaj.Ideja je preusmjeriti pisanje u shadow datoteku, koja je, nadamo se, na lokalnoj pohrani.
rc.boot
utvrđuje je li potrebna provjera dosljednosti datotečnog sustava. Pokretanja za jednog korisnika i CD-ROM-a ne pokreću fsck. SafeBoot uvijek pokreće fsck.rc.boot također obrađuje povratni status fsck-a.
- Ako
rc.boot
izađe uspješno,/etc/rc
, pokreće se višekorisnička skripta za pokretanje. Ako se diže s CD-ROM-a, skripta se prebacuje na/etc/rc.cdrom (instalacija).
/etc/rc
montira lokalne datotečne sustave (HFS+, HFS, UFS,/dev/ fd
,/.vol
), osigurava da direktorij/private/var/tmp
postoji i pokreće/etc/rc.installer_cleanup, ako postoji (ostavio ga je instalater prije ponovnog pokretanja).
/etc/rc.cleanup je pokrenut. "Čisti" niz Unix i Mac specifičnih direktorija/datoteka.
- BootCache je pokrenut.
- Različite
sysctl
varijable su postavljene (kao što je za maksimalni broj vnodes, System V IPC, itd.). Ako/etc/sysctl.conf
postoji (plus/etc/sysctl-macosxserver.conf
na Mac OS X poslužitelju), čita se i postavlja sesysctl varijabli sadržanih u njemu.
syslogd je pokrenut.
- Stvorena je datoteka Machovog simbola.
/etc/rc
pokrećekextd, daemon proces koji učitava proširenje kernela na zahtjev procesa kernela ili klijenta.
/usr/libexec/register_mach_bootstrap_servers
se pokreće za učitavanje raznih Machovih usluga za pokretanje koje se nalaze u/ etc/mach_init.d
portmap
inetinfo su pokrenuti.
- Ako je
/System/Library/Extensions.mkext
stariji od/System/Library/Extensions
,/etc/rc briše postojeći mkext i stvara novi. Također ga stvara ako ne postoji.
/etc/rc
počinje/usr/sbin/update , demon koji često ispire interne predmemorije sustava datoteka na disk.
/etc/rc
pokreće sustav virtualne memorije./private/var/vm
je postavljen kao swap direktorij./sbin/dynamic_pager se pokreće s odgovarajućim argumentima (predložak staze naziva datoteke za razmjenu, veličina stvorenih datoteka za razmjenu, okidači upozorenja o visokoj i niskoj vodi koji određuju kada treba stvoriti dodatnu swap datoteku datoteke ili izbrisati postojeće).
/etc/rc
počinje/usr/libexec/fix_prebindingza popravak netočno unaprijed povezanih binarnih datoteka.
/etc/rc
izvršava/etc/rc.cleanupza čišćenje i resetiranje datoteka i uređaja.
/etc/rc
konačno pokreće/sbin/SystemStarter
za rukovanje stavkama pokretanja s lokacija kao što su/System/Library/StartupItems
i/Library/StartupItems
StartupItem je program, obično skripta ljuske, čije ime odgovara nazivu mape. Mapa sadrži datoteku s popisom svojstava koja sadrži parove ključ-vrijednost kao što suDescription
,Provides
,Requires
,OrderPreference
, poruke pokretanja/zaustavljanja itd. Možete pokrenutiSystemStarter -n -D kao root da bi program ispisao informacije o otklanjanju pogrešaka i ovisnosti (bez stvarnog pokretanja bilo čega).
CoreGraphics
stavka pokretanja pokreće Apple Type Services demon (ATSServer
) kao i Window Server (WindowServer).
I tada se vaš Mac pokreće!
Možete i sami vidjeti malo ove aktivnosti pomoću Verbose Mode (koji možete pokrenuti u Verbose Mode po pokretanju, ili čak možete postaviti Mac da se uvijek pokreće u Verbose Mode ako želite uvijek vidjeti pokretanje u stilu unixa), ali ovo je prilično temeljito objašnjenje.
Apple također ima dostupnu dokumentaciju o procesu pokretanja Maca dostupnu ovdje u njihovoj knjižnici dokumenata za razvojne programere.
Imajte na umu da izvorni URL koji pruža gore navedene informacije više nije aktivan, stoga je ta objava uključena iznad za buduće potomstvo putem predmemorije. Izvorni izvor bila je nit na KernelThreadu na sljedećem url-u: http://www.kernelthread.com/mac/osx/arch_startup.html koja je trenutno izvan mreže i ne preusmjerava na novu lokaciju.
Ako imate bilo kakvih sitnica ili drugih dodataka za dodavanje Mac OS X slijedu pokretanja, podijelite ih u komentarima!