Apa yang berlaku dalam proses but Mac OS X?

Anonim

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 jenis mkext 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 nilai OSBundleRequired harta dalam Info.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 pembolehubah kern.netboot akan ditetapkan kepada1 dalam kes ini), ia berjalan /etc/rc.netboot dengan mula 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 dan sysctl pembolehubah yang terkandung di dalamnya ditetapkan.
  • syslogd dimulakan.
  • Fail simbol Mach dicipta.
  • /etc/rc bermula kextd, 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 dan netinfo 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 seperti Penerangan, Menyediakan, Memerlukan, Keutamaan Pesanan, mesej mula/henti dsb. Anda boleh menjalankan SystemStarter -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!

Apa yang berlaku dalam proses but Mac OS X?