Mitä Mac OS X:n käynnistysprosessissa tapahtuu?

Oletko koskaan miettinyt, mitä Mac OS X:n käynnistys- ja käynnistysprosessin aikana tapahtuu? Mac OS X:llä se on hieman monimutkaisempaa kuin ennen, ja perinteisen Mac OS:n (System 9, 8, 7, 6) ajat ovat kauan menneet, jolloin Mac-tietokoneiden käynnistymisen katseleminen sarjalla laajennuksia ja ohjauspaneeleja, jotka Voisimme aina tunnistaa heidän kuvakkeensa ja sitten kaivella Extensions-kansiota säätääksesi helposti, mitä latautuu ja tapahtuu Macin käynnistyksessä.Nykyään Mac OS X:n Unix-perustalla monet käyttäjät ovat täysin tietämättömiä siitä, mitä kulissien takana tapahtuu.
Mitä sitten tarkalleen ottaen tapahtuu Mac OS X:n käynnistyksen aikana? Saat aina paremman kuvan käynnistämällä Macin monisanaisessa tilassa, mutta se ei välttämättä selitä kaikkea näkemääsi. Onneksi erinomainen selitys on saatavilla KernelThreadin segmentin kautta, joka listaa huolellisesti Mac OS X:n käynnistystapahtumien järjestyksen alusta loppuun. Se on melko perusteellinen ja lukemisen arvoinen, toistetaan alla uteliaille Mac-käyttäjille.
huomautus: Kuten lukija huomautti, PPC käyttää OF:ää (Openfirmware), i386 käyttää EFI:tä (Extensible Firmware Interface)
Mitä sitten tapahtuu Mac OS X:n käynnistysprosessin aikana? Käynnistät Macin, ja näin tapahtuu:
- Virta on kytketty.
- OF tai EFI-koodi suoritetaan.
- Laitteistotiedot kerätään ja laitteisto alustetaan.
- Jotain (yleensä käyttöjärjestelmä, mutta myös asioita, kuten Apple Hardware Test jne.) on valittu käynnistymään. Käyttäjää saatetaan pyytää valitsemaan, mitä käynnistetään.
- Control siirtyy käynnistyslataimeen
/System/Library/CoreServices/BootX. BootX lataa ytimen ja piirtää myös käyttöjärjestelmätunnukset, jos sellaisia on. - BootX yrittää ladata aiemmin välimuistissa olevan laiteajureiden luettelon (luonut/päivittänyt
/usr/sbin/kextcache). Tällainen välimuisti on tyyppiämkextja sisältää tietosanakirjoja ja binääritiedostoja useille ydinlaajennuksille. Huomaa, että jos mkext-välimuisti on vioittunut tai puuttuu, BootX etsii hakemistosta/System/Library/Extensionslaajennuksia, joita tarvitaan nykyisessä skenaariossa (määritettynäOSBundleRequired-ominaisuuden arvoInfo.plist laajennuspaketin tiedostossa. - Ytimen
init-rutiini suoritetaan. Käynnistysjärjestelmän juurilaite määritetään. Tässä vaiheessa laiteohjelmisto ei ole enää käytettävissä. - Ydin alustaa erilaisia Mach/BSD-tietorakenteita.
- I/O-sarja on alustettu.
- Ydin käynnistää
/sbin/mach_init, Mach-palvelun nimeämisen (bootstrap) -daemonin.mach_init ylläpitää kartoituksia palvelujen nimien ja Mach-porttien välillä, jotka tarjoavat pääsyn näihin palveluihin.
Tästä eteenpäin käynnistyksestä tulee käyttäjätaso:
mach_initalkaa/sbin/init, perinteinen BSD aloita prosessi. init määrittää ajon tason ja suorittaa/etc/rc.boot, mikä määrittää koneen riittävän hyvin yhden käyttäjän suorittamiseen.
Suorituksensa aikana rc.boot ja muut rc komentosarjan lähde /etc/rc.common , komentosarja, joka sisältää aputoimintoja, kuten CheckForNetwork() (tarkistaa, onko verkko päällä), GetPID (), purgedir() (poistaa vain hakemiston sisällön, ei rakennetta) jne.
rc.bootselvittää käynnistystyypin (Multi-User, Safe, CD-ROM, Network jne.). Verkkokäynnistyksen tapauksessa (sysctl-muuttujakern.netbootasetetaan arvoon1, jolloin se suorittaa/etc/rc.netbootaloitus argumentti.
/etc/rc.netboot käsittelee useita verkkokäynnistyksen näkökohtia. Se esimerkiksi suorittaa verkko- ja (jos sellaisia on) paikallisia liitoksia. Se kutsuu myös /usr/bin/nbst yhdistääkseen varjotiedoston juurilaitteena käytettävään levykuvaan.Ajatuksena on ohjata kirjoitukset varjotiedostoon, joka toivottavasti on paikallisessa tallennustilassa.
rc.bootselvittää, tarvitaanko tiedostojärjestelmän yhdenmukaisuuden tarkistusta. Yhden käyttäjän ja CD-ROM-käynnistykset eivät suorita fsck:tä. SafeBoot suorittaa aina fsck:n.rc.boot käsittelee myös fsck:n palautustilan.- Jos
rc.bootsulkeutuu onnistuneesti,/etc/rc, usean käyttäjän käynnistyskomentosarja suoritetaan sitten. Jos käynnistetään CD-ROM-levyltä, komentosarja vaihtuu muotoon/etc/rc.cdrom (asennus). /etc/rcliittää paikalliset tiedostojärjestelmät (HFS+, HFS, UFS,/dev/ fd,/.vol), varmistaa, että hakemisto/private/var/tmpon olemassa ja suorittaa/etc/rc.installer_cleanup, jos sellainen on olemassa (asennusohjelman jättämä ennen uudelleenkäynnistystä)./etc/rc.cleanup suoritetaan. Se "puhdistaa" useita Unix- ja Mac-kohtaisia hakemistoja/tiedostoja.- BootCache on käynnistetty.
- Erilaiset
sysctlmuuttujat on asetettu (kuten vsolmujen enimmäismäärälle, System V IPC:lle jne.). Jos/etc/sysctl.confon olemassa (plus/etc/sysctl-macosxserver.confMac OS X Serverissä), se luetaan jasysctl siinä olevat muuttujat asetetaan. syslogd on aloitettu.- Mach-symbolitiedosto on luotu.
/etc/rcalkaakextd, demoniprosessi joka lataa ytimen laajennuksen pyynnöstä ytimestä tai asiakasprosesseista./usr/libexec/register_mach_bootstrap_serverssuoritetaan lataamaan erilaisia Mach-käynnistyspohjaisia palveluja, jotka sisältyvät/ etc/mach_init.dportmapjanetinfo aloitetaan.- Jos
/System/Library/Extensions.mkexton vanhempi kuin/System/Library/Extensions,/etc/rc poistaa olemassa olevan mkextin ja luo uuden. Se myös luo sellaisen, jos sellaista ei ole olemassa. /etc/rcalkaa/usr/sbin/update , demoni, joka huuhtelee sisäiset tiedostojärjestelmän välimuistit levylle usein./etc/rckäynnistää virtuaalimuistijärjestelmän./private/var/vmon asetettu swap-hakemistoksi./sbin/dynamiikka tiedostot tai poista olemassa olevat)./etc/rcalkaa/usr/libexec/fix_prebindingkorjataksesi virheelliset esisidottu binaarit./etc/rcsuorittaa/etc/rc.cleanuptiedostojen ja laitteiden puhdistamiseen ja nollaukseen./etc/rckäynnistyy vihdoin/sbin/SystemStarterkäsitellä aloituskohteita paikoista, kuten/System/Library/StartupItemsja/Library/StartupItemsStartupItem on ohjelma, yleensä komentosarja, jonka nimi vastaa kansion nimeä. Kansio sisältää ominaisuusluettelotiedoston, joka sisältää avainarvopareja, kutenDescription,Provides,Requires,OrderPreference, aloitus-/lopetusviestit jne. Voit suorittaaSystemStarter -n -D pääkäyttäjänä, jotta ohjelma tulostaa virheenkorjaus- ja riippuvuustiedot (käyttämättä mitään).CoreGraphicskäynnistyskohde käynnistää Apple Type Services -daemonin (ATSServer) sekä Window Server (WindowServer).
Ja sitten Mac käynnistetään!
Voit nähdä osan tästä toiminnasta itse Verbose Mode -tilassa (jonka voit käynnistää Verbose Mode -tilassa käynnistystä kohti, tai voit jopa asettaa Macin käynnistymään aina monisanaisessa tilassa, jos haluat aina nähdä unix-tyylinen käynnistys), mutta tämä on melko perusteellinen selitys.
Applella on myös saatavilla Macin käynnistysprosessiin liittyviä asiakirjoja, jotka ovat saatavilla täällä heidän kehittäjien dokumentaatiokirjastossaan.
Huomaa, että alkuperäinen URL-osoite, joka tarjoaa yllä olevat tiedot, ei ole enää aktiivinen, joten viesti on sisällytetty yllä olevaan jälkipolville välimuistin kautta. Alkuperäinen lähde oli KernelThreadin säiettä seuraavassa URL-osoitteessa: http://www.kernelthread.com/mac/osx/arch_startup.html, joka on tällä hetkellä offline-tilassa eikä ohjaa uuteen paikkaan.
Jos sinulla on jotain lisättävää Mac OS X:n käynnistysjärjestykseen, jaa kommenteissa!






