Ano ang nangyayari sa proseso ng pag-boot ng Mac OS X?
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 namkext
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 ngOSBundleRequired
property saInfo.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 (angsysctl
variablekern.netboot
ay itatakda sa1
kung saan, tumatakbo ito/etc/rc.netboot
na maystart 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 atsysctl variable na nakapaloob dito ay nakatakda.
syslogd ay nagsimula na.
- Nalikha ang Mach symbol file.
/etc/rc
ay nagsisimulakextd, 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
atnetinfo 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 ngDescription
,Provides
,Nangangailangan
,OrderPreference
, start/stop messages atbp. Maaari mong patakbuhin angSystemStarter -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!