Apa yang berlaku dalam proses but Mac OS X?
Pernah terfikir apa yang berlaku semasa proses but dan permulaan Mac OS X? Dengan Mac OS X ia agak rumit berbanding dahulu, dan sudah lama berlalu ialah zaman Mac OS Klasik (Sistem 9, 8, 7, 6), di mana menonton Mac kami but dengan satu siri sambungan dan panel kawalan yang kita sentiasa boleh mengenal pasti dengan ikon mereka sahaja, dan kemudian pergi mencari-cari dalam folder Sambungan untuk melaraskan dengan mudah perkara yang dimuatkan dan berlaku pada but Mac.Hari ini dengan asas Unix Mac OS X, ramai pengguna langsung tidak mengetahui perkara yang berlaku di sebalik tabir.
Jadi apa sebenarnya yang berlaku semasa proses but Mac OS X? Anda sentiasa boleh mendapatkan pandangan yang lebih baik dengan but Mac dalam Mod Verbose, tetapi itu tidak semestinya menerangkan semua perkara yang anda lihat. Nasib baik penjelasan yang sangat baik tersedia melalui segmen di KernelThread, yang menyenaraikan dengan teliti urutan acara but Mac OS X, dari awal hingga akhir. Ia agak teliti dan patut dibaca, diulangi di bawah untuk pengguna Mac yang ingin tahu di luar sana.
nota: Seperti yang dinyatakan oleh pembaca, PPC menggunakan OF (Openfirmware), i386 menggunakan EFI (Antara Muka Perisian Tegar Boleh Diperluas)
Jadi apa yang berlaku semasa proses but Mac OS X? Anda menghidupkan Mac anda, dan inilah yang berlaku:
- Kuasa dihidupkan.
- OF atau EFI kod dilaksanakan.
- Maklumat perkakasan dikumpul dan perkakasan dimulakan.
- Sesuatu (biasanya OS, tetapi juga perkara seperti Ujian Perkakasan Apple, dll.) dipilih untuk but. Pengguna mungkin digesa untuk memilih perkara yang hendak but.
- Kawalan beralih kepada
/System/Library/CoreServices/BootX, pemuat but. BootX memuatkan kernel dan juga melukis lencana OS, jika ada.
- BootX cuba memuatkan senarai pemacu peranti yang dicache sebelum ini (dicipta/dikemas kini oleh
/usr/sbin/kextcache
). Cache sedemikian adalah daripada jenismkext
dan mengandungi kamus maklumat dan fail binari untuk berbilang sambungan kernel. Ambil perhatian bahawa jika cache mext rosak atau tiada, BootX akan melihat dalam/System/Library/Extensions
untuk sambungan yang diperlukan dalam senario semasa (seperti yang ditentukan oleh nilaiOSBundleRequired
harta dalamInfo.plist fail berkas sambungan.
init rutin kernel dilaksanakan. Peranti akar sistem but ditentukan. Pada ketika ini, Perisian Tegar tidak boleh diakses lagi.
- Pelbagai struktur data Mach/BSD dimulakan oleh kernel.
- Kit I/O dimulakan.
- Inti bermula
/sbin/mach_init
, daemon penamaan perkhidmatan Mach (bootstrap).mach_init mengekalkan pemetaan antara nama perkhidmatan dan port Mach yang menyediakan akses kepada perkhidmatan tersebut.
Bermula dari sini, permulaan menjadi peringkat pengguna:
mach_init
bermula/sbin/init
, BSD tradisional proses init. init menentukan runlevel dan menjalankan/etc/rc.boot, yang menyediakan mesin cukup untuk menjalankan pengguna tunggal.
Semasa pelaksanaannya, rc.but
dan yang lain rc
sumber skrip /etc/rc.common
, skrip shell yang mengandungi fungsi utiliti, seperti
CheckForNetwork() (menyemak sama ada rangkaian sudah siap),
GetPID (), purgedir() (memadamkan kandungan direktori sahaja, bukan struktur), dsb.
rc.boot
mengetahui jenis but (Berbilang Pengguna, Selamat, CD-ROM, Rangkaian dll.). Dalam kes but rangkaian (sysctl
pembolehubahkern.netboot
akan ditetapkan kepada1
dalam kes ini), ia berjalan/etc/rc.netboot
denganmula hujah.
/etc/rc.netboot
mengendalikan pelbagai aspek but rangkaian. Sebagai contoh, ia melakukan pemasangan rangkaian dan (jika ada) tempatan. Ia juga memanggil /usr/bin/nbst untuk mengaitkan fail bayangan dengan imej cakera yang digunakan sebagai peranti akar.Ideanya adalah untuk mengubah hala tulisan ke fail bayangan, yang diharapkan berada pada storan setempat.
rc.boot
mengetahui jika semakan konsistensi sistem fail diperlukan. But pengguna tunggal dan CD-ROM tidak menjalankan fsck. SafeBoot sentiasa menjalankan fsck.rc.boot mengendalikan status pengembalian fsck juga.
- Jika
rc.boot
berjaya keluar,/etc/rc
, skrip permulaan berbilang pengguna kemudiannya dijalankan. Jika but daripada CD-ROM, skrip bertukar kepada/etc/rc.cdrom (pemasangan).
/etc/rc
memasang sistem fail setempat (HFS+, HFS, UFS,/dev/ fd
,/.vol
), memastikan bahawa direktori/private/var/tmp
wujud dan berjalan/etc/rc.installer_cleanup, jika ada (ditinggalkan oleh pemasang sebelum but semula).
/etc/rc.cleanup dijalankan. Ia "membersihkan" beberapa direktori/fail khusus Unix dan Mac.
- BootCache dimulakan.
- Pelbagai
sysctl
pembolehubah ditetapkan (seperti untuk bilangan maksimum vnod, Sistem V IPC, dsb.). Jika/etc/sysctl.conf
wujud (tambah/etc/sysctl-macosxserver.conf
pada Pelayan Mac OS X), ia dibaca dansysctl pembolehubah yang terkandung di dalamnya ditetapkan.
syslogd dimulakan.
- Fail simbol Mach dicipta.
/etc/rc
bermulakextd, proses daemon yang memuatkan sambungan kernel atas permintaan daripada kernel atau proses klien.
/usr/libexec/register_mach_bootstrap_servers
dijalankan untuk memuatkan pelbagai perkhidmatan berasaskan bootstrap Mach yang terkandung dalam/ etc/mach_init.d
portmap
dannetinfo telah dimulakan.
- Jika
/Sistem/Perpustakaan/Sambungan.mkext
lebih tua daripada/Sistem/Perpustakaan/Sambungan
,/etc/rc memadamkan mext sedia ada dan mencipta yang baharu. Ia juga mencipta satu jika satu tidak wujud.
/etc/rc
bermula/usr/sbin/kemas kini , daemon yang membuang cache sistem fail dalaman ke cakera dengan kerap.
/etc/rc
memulakan sistem ingatan maya./private/var/vm
disediakan sebagai direktori swap./sbin/dynamic_pager dimulakan dengan hujah yang sesuai (templat laluan nama fail swap, saiz fail swap yang dibuat, pencetus amaran air tinggi dan rendah yang menyatakan masa untuk membuat swap tambahan fail atau padam yang sedia ada).
/etc/rc
bermula/usr/libexec/fix_prebindinguntuk membetulkan binari prabound yang salah.
/etc/rc
melaksanakan/etc/rc.cleanupuntuk membersihkan dan menetapkan semula fail dan peranti.
/etc/rc
akhirnya dilancarkan/sbin/SystemStarter
untuk mengendalikan item permulaan dari lokasi seperti/System/Library/StartupItems
and/Library/StartupItems
StartupItem ialah program, biasanya skrip shell, yang namanya sepadan dengan nama folder. Folder mengandungi fail senarai harta yang mengandungi pasangan nilai kunci sepertiPenerangan
,Menyediakan
,Memerlukan
,Keutamaan Pesanan
, mesej mula/henti dsb. Anda boleh menjalankanSystemStarter -n -D sebagai akar agar program mencetak maklumat penyahpepijatan dan kebergantungan (tanpa benar-benar menjalankan apa-apa).
CoreGraphics
item permulaan memulakan daemon Perkhidmatan Jenis Apple (ATSServer
) serta Pelayan Tetingkap (WindowServer).
Dan kemudian Mac anda dibut!
Anda boleh melihat sendiri sedikit aktiviti ini dengan Mod Verbose (yang anda boleh but ke Mod Verbose setiap but, atau anda juga boleh menetapkan Mac untuk sentiasa but dalam Mod Verbose jika anda mahu sentiasa melihat but gaya unix), tetapi ini adalah penjelasan yang cukup teliti.
Apple juga mempunyai beberapa dokumentasi yang tersedia pada proses but Mac yang tersedia di sini di perpustakaan dokumen pembangun mereka di sini.
Perhatikan URL asal yang memberikan maklumat di atas tidak lagi aktif, oleh itu siaran itu telah disertakan di atas untuk anak cucu melalui cache. Sumber asal ialah urutan pada KernelThread di url berikut: http://www.kernelthread.com/mac/osx/arch_startup.html yang sedang di luar talian dan tidak mengubah hala ke lokasi baharu.
Jika anda mempunyai sebarang berita gembira atau tambahan lain untuk ditambahkan pada jujukan but Mac OS X, kongsi dalam ulasan!