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ämkext
ja sisältää tietosanakirjoja ja binääritiedostoja useille ydinlaajennuksille. Huomaa, että jos mkext-välimuisti on vioittunut tai puuttuu, BootX etsii hakemistosta/System/Library/Extensions
laajennuksia, 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_init
alkaa/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.boot
selvittää käynnistystyypin (Multi-User, Safe, CD-ROM, Network jne.). Verkkokäynnistyksen tapauksessa (sysctl
-muuttujakern.netboot
asetetaan arvoon1
, jolloin se suorittaa/etc/rc.netboot
aloitus 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.boot
selvittää, 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.boot
sulkeutuu 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/rc
liittää paikalliset tiedostojärjestelmät (HFS+, HFS, UFS,/dev/ fd
,/.vol
), varmistaa, että hakemisto/private/var/tmp
on 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
sysctl
muuttujat on asetettu (kuten vsolmujen enimmäismäärälle, System V IPC:lle jne.). Jos/etc/sysctl.conf
on olemassa (plus/etc/sysctl-macosxserver.conf
Mac OS X Serverissä), se luetaan jasysctl siinä olevat muuttujat asetetaan.
syslogd on aloitettu.
- Mach-symbolitiedosto on luotu.
/etc/rc
alkaakextd, demoniprosessi joka lataa ytimen laajennuksen pyynnöstä ytimestä tai asiakasprosesseista.
/usr/libexec/register_mach_bootstrap_servers
suoritetaan lataamaan erilaisia Mach-käynnistyspohjaisia palveluja, jotka sisältyvät/ etc/mach_init.d
portmap
janetinfo aloitetaan.
- Jos
/System/Library/Extensions.mkext
on 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/rc
alkaa/usr/sbin/update , demoni, joka huuhtelee sisäiset tiedostojärjestelmän välimuistit levylle usein.
/etc/rc
käynnistää virtuaalimuistijärjestelmän./private/var/vm
on asetettu swap-hakemistoksi./sbin/dynamiikka tiedostot tai poista olemassa olevat).
/etc/rc
alkaa/usr/libexec/fix_prebindingkorjataksesi virheelliset esisidottu binaarit.
/etc/rc
suorittaa/etc/rc.cleanuptiedostojen ja laitteiden puhdistamiseen ja nollaukseen.
/etc/rc
käynnistyy vihdoin/sbin/SystemStarter
käsitellä aloituskohteita paikoista, kuten/System/Library/StartupItems
ja/Library/StartupItems
StartupItem 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).
CoreGraphics
kä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!