Ano ang nangyayari sa proseso ng pag-boot ng Mac OS X?

Anonim

Naisip mo ba kung ano ang mangyayari sa panahon ng Mac OS X boot at proseso ng startup? Sa Mac OS X, medyo mas kumplikado ito kaysa dati, at matagal nang nawala ang mga araw ng Classic Mac OS (System 9, 8, 7, 6), kung saan pinapanood ang aming mga Mac na nag-boot gamit ang isang serye ng mga extension at control panel na palagi naming makikilala sa pamamagitan ng kanilang icon lamang, at pagkatapos ay maghukay sa folder ng Mga Extension upang madaling ayusin kung ano ang naglo-load at nangyayari sa Mac boot.Sa ngayon, sa mga batayan ng Unix ng Mac OS X, maraming user ang ganap na hindi alam kung ano ang nangyayari sa likod ng mga eksena.

Kaya ano ang eksaktong nangyayari sa proseso ng pag-boot ng Mac OS X? Maaari kang palaging makakuha ng isang mas mahusay na hitsura sa pamamagitan ng pag-boot ng isang Mac sa Verbose Mode, ngunit hindi iyon nangangahulugang ipaliwanag ang lahat ng iyong nakikita. Sa kabutihang palad, ang isang mahusay na paliwanag ay magagamit sa pamamagitan ng segment sa KernelThread, na maingat na naglilista ng pagkakasunud-sunod ng mga kaganapan sa pag-boot ng Mac OS X, mula simula hanggang matapos. Ito ay medyo masinsinan at sulit na basahin, na inuulit sa ibaba para sa mga matanong na gumagamit ng Mac doon.

note: Gaya ng itinuro ng isang mambabasa, ang PPC ay gumagamit ng NG (Openfirmware), ang i386 ay gumagamit ng EFI (Extensible Firmware Interface)

Kaya ano ang mangyayari sa panahon ng proseso ng pag-boot ng Mac OS X? I-on mo ang iyong Mac, at ito ang mangyayari:

  • Naka-on ang power.
  • OF o EFI code ay pinaandar.
  • Kinakolekta ang impormasyon ng hardware at sinisimulan ang hardware.
  • Something (karaniwan ay ang OS, ngunit pati na rin ang mga bagay tulad ng Apple Hardware Test, atbp.) ay pinili upang mag-boot. Maaaring i-prompt ang user na piliin kung ano ang i-boot.
  • Ang kontrol ay pumasa sa /System/Library/CoreServices/BootX, ang boot loader. Nilo-load ng BootX ang kernel at kinukuha din ang mga OS badge, kung mayroon man.
  • BootX ay sumusubok na i-load ang isang dating naka-cache na listahan ng mga driver ng device (ginawa/na-update ni /usr/sbin/kextcache). Ang nasabing cache ay nasa uri na mkext at naglalaman ng mga diksyunaryo ng impormasyon at binary na file para sa maraming kernel extension. Tandaan na kung sira o nawawala ang cache ng mext, titingnan ng BootX ang /System/Library/Extensions para sa mga extension na kailangan sa kasalukuyang senaryo (tulad ng tinutukoy ng ang halaga ng OSBundleRequired property sa Info.plist file ng bundle ng extension.
  • Ang init routine ng kernel ay naisakatuparan. Natutukoy ang root device ng booting system. Sa puntong ito, hindi na naa-access ang Firmware.
  • Ang iba't ibang istruktura ng data ng Mach/BSD ay sinisimulan ng kernel.
  • Na-initialize ang I/O Kit.
  • Nagsisimula ang kernel /sbin/mach_init, ang Mach service na pagpapangalan (bootstrap) na daemon. mach_init ay nagpapanatili ng mga pagmamapa sa pagitan ng mga pangalan ng serbisyo at mga Mach port na nagbibigay ng access sa mga serbisyong iyon.

Mula dito, nagiging user-level na ang startup:

  • mach_init ay nagsisimula /sbin/init, ang tradisyonal na BSD init na proseso. Tinutukoy ng init ang runlevel, at nagpapatakbo ng /etc/rc.boot, na nagse-set up sa makina upang magpatakbo ng single-user.

Sa panahon ng pagpapatupad nito, rc.boot at ang iba pang rc source ng script /etc/rc.common , isang shell script na naglalaman ng mga utility function, gaya ng CheckForNetwork() (sinusuri kung nakabukas ang network), GetPID (), purgedir() (tinatanggal ang mga nilalaman ng direktoryo lamang, hindi ang istraktura), atbp.

  • rc.boot ay tumutukoy sa uri ng boot (Multi-User, Safe, CD-ROM, Network atbp.). Sa kaso ng network boot (ang sysctl variable kern.netboot ay itatakda sa1 kung saan, tumatakbo ito /etc/rc.netboot na may start argument.

/etc/rc.netboot ang humahawak sa iba't ibang aspeto ng network booting. Halimbawa, nagsasagawa ito ng network at (kung mayroon) lokal na pag-mount. Tinatawag din nito ang /usr/bin/nbst upang iugnay ang isang shadow file sa disk image na ginagamit bilang root device.Ang ideya ay i-redirect ang mga pagsusulat sa shadow file, na sana ay nasa lokal na storage.

  • rc.boot ay malalaman kung kinakailangan ang isang file system consistency check. Ang single-user at CD-ROM boots ay hindi nagpapatakbo ng fsck. Palaging tumatakbo ang SafeBoot ng fsck. rc.boot ay humahawak din sa return status ng fsck.
  • Kung rc.boot matagumpay na lumabas, /etc/rc , ang multi-user startup script ay tatakbo. Kung magbo-boot mula sa isang CD-ROM, lilipat ang script sa /etc/rc.cdrom (installation).
  • /etc/rc nag-mount ng mga lokal na file system (HFS+, HFS, UFS, /dev/ fd, /.vol), tinitiyak na ang direktoryo ay /private/var/tmp ang umiiral, at tumatakbo ang /etc/rc.installer_cleanup, kung mayroon (iniiwan ng installer bago mag-reboot).
  • /etc/rc.cleanup ay tumatakbo. "Nililinis" nito ang ilang partikular na direktoryo/file ng Unix at Mac.
  • Nagsimula na ang BootCache.
  • Iba-ibang sysctl ang mga variable ay nakatakda (gaya ng para sa maximum na bilang ng mga vnode, System V IPC, atbp.). Kung /etc/sysctl.conf ay umiiral (plus /etc/sysctl-macosxserver.conf sa Mac OS X Server), ito ay binabasa at sysctl variable na nakapaloob dito ay nakatakda.
  • syslogd ay nagsimula na.
  • Nalikha ang Mach symbol file.
  • /etc/rc ay nagsisimula kextd, ang proseso ng daemon na naglo-load ng kernel extension on demand mula sa kernel o mga proseso ng kliyente.
  • /usr/libexec/register_mach_bootstrap_servers ay pinapatakbo upang i-load ang iba't ibang serbisyong nakabatay sa Mach bootstrap na nasa / etc/mach_init.d
  • portmap at netinfo ay nagsimula na.
  • Kung /System/Library/Extensions.mkext ay mas matanda sa /System/Library/Extensions Tinatanggal ng , /etc/rc ang kasalukuyang mext at gagawa ng bago. Lumilikha din ito ng isa kung wala ang isa.
  • /etc/rc ay magsisimula /usr/sbin/update , ang daemon na madalas na nag-flush ng mga cache ng internal file system sa disk.
  • /etc/rc magsisimula ang virtual memory system. /private/var/vm ay naka-set up bilang direktoryo ng swap. /sbin/dynamic_pager ay sinimulan sa mga naaangkop na argumento (swap filename path template, laki ng swap file na ginawa, mataas at mababang water alert trigger na tumutukoy kung kailan gagawa ng karagdagang swap mga file o tanggalin ang mga umiiral na).
  • /etc/rc ay magsisimula /usr/libexec/fix_prebindingpara ayusin ang mga maling prebound na binary.
  • /etc/rc executes /etc/rc.cleanuppara linisin at i-reset ang mga file at device.
  • /etc/rc sa wakas ay inilunsad /sbin/SystemStarter upang pangasiwaan ang mga startup item mula sa mga lokasyon gaya ng /System/Library/StartupItems at /Library/StartupItems Ang StartupItem ay isang programa, karaniwang isang shell script, na ang pangalan ay tumutugma sa pangalan ng folder. Naglalaman ang folder ng file ng listahan ng property na naglalaman ng mga pares ng key-value gaya ng Description, Provides, Nangangailangan, OrderPreference, start/stop messages atbp. Maaari mong patakbuhin ang SystemStarter -n -D bilang ugat upang magkaroon ang programa ng pag-print ng impormasyon sa pag-debug at dependency (nang walang aktwal na nagpapatakbo ng kahit ano).
  • Ang CoreGraphics startup item ang magsisimula sa Apple Type Services daemon (ATSServer ) pati na rin ang Window Server (WindowServer).

At pagkatapos ay na-boot ang iyong Mac!

Makikita mo mismo ang kaunti sa aktibidad na ito gamit ang Verbose Mode (na maaari mong i-boot sa Verbose Mode bawat boot, o maaari ka ring magtakda ng Mac na palaging mag-boot sa Verbose Mode kung gusto mong palaging makita ang unix style boot), ngunit ito ay isang medyo masinsinang paliwanag.

Mayroon ding available na dokumentasyon ang Apple sa proseso ng Mac boot na available dito sa kanilang developer documentaiton library dito.

Tandaan ang orihinal na URL na nagbibigay ng impormasyon sa itaas ay hindi na aktibo, kaya ang post na iyon ay isinama sa itaas para sa mga susunod na henerasyon sa pamamagitan ng cache. Ang orihinal na pinagmulan ay isang thread sa KernelThread sa sumusunod na url: http://www.kernelthread.com/mac/osx/arch_startup.html na kasalukuyang offline at hindi nagre-redirect sa isang bagong lokasyon.

Kung mayroon kang anumang mga balita o iba pang mga karagdagan na idaragdag sa sequence ng boot ng Mac OS X, ibahagi sa mga komento!

Ano ang nangyayari sa proseso ng pag-boot ng Mac OS X?