Š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 tipamkexti 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/Extensionsekstenzije koje su potrebne u trenutnom scenariju (kako je određeno prema vrijednost svojstvaOSBundleRequiredu 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_initpoč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.bootutvrđuje vrstu pokretanja (višekorisničko, sigurno, CD-ROM, mrežno itd.). U slučaju mrežnog pokretanja (sysctlvarijablakern.netbootbit će postavljena na1u tom slučaju), pokreće/etc/rc.netbootsstart 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.bootutvrđ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.bootizađ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/rcmontira lokalne datotečne sustave (HFS+, HFS, UFS,/dev/ fd,/.vol), osigurava da direktorij/private/var/tmppostoji 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
sysctlvarijable su postavljene (kao što je za maksimalni broj vnodes, System V IPC, itd.). Ako/etc/sysctl.confpostoji (plus/etc/sysctl-macosxserver.confna Mac OS X poslužitelju), čita se i postavlja sesysctl varijabli sadržanih u njemu. syslogd je pokrenut.- Stvorena je datoteka Machovog simbola.
/etc/rcpokrećekextd, daemon proces koji učitava proširenje kernela na zahtjev procesa kernela ili klijenta./usr/libexec/register_mach_bootstrap_serversse pokreće za učitavanje raznih Machovih usluga za pokretanje koje se nalaze u/ etc/mach_init.dportmapinetinfo su pokrenuti.- Ako je
/System/Library/Extensions.mkextstariji od/System/Library/Extensions,/etc/rc briše postojeći mkext i stvara novi. Također ga stvara ako ne postoji. /etc/rcpočinje/usr/sbin/update , demon koji često ispire interne predmemorije sustava datoteka na disk./etc/rcpokreće sustav virtualne memorije./private/var/vmje 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/rcpočinje/usr/libexec/fix_prebindingza popravak netočno unaprijed povezanih binarnih datoteka./etc/rcizvršava/etc/rc.cleanupza čišćenje i resetiranje datoteka i uređaja./etc/rckonačno pokreće/sbin/SystemStarterza rukovanje stavkama pokretanja s lokacija kao što su/System/Library/StartupItemsi/Library/StartupItemsStartupItem 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).CoreGraphicsstavka 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!






