Mac OS X önyükleme işleminde ne olur?

Anonim

Mac OS X önyükleme ve başlatma işlemi sırasında ne olduğunu hiç merak ettiniz mi? Mac OS X ile işler bir zamanlar olduğundan biraz daha karmaşıktır ve Mac'lerimizi izlemenin bir dizi uzantı ve kontrol paneliyle açıldığı Klasik Mac OS (Sistem 9, 8, 7, 6) günleri çoktan geride kaldı. her zaman yalnızca simgeleriyle tanımlayabilir ve ardından Mac önyüklemesinde neyin yüklendiğini ve meydana geldiğini kolayca ayarlamak için Uzantılar klasöründe dolaşabiliriz.Bugün Mac OS X'in Unix temelleri ile birçok kullanıcı perde arkasında neler olup bittiğinin tamamen farkında değil.

Peki Mac OS X önyükleme işlemi sırasında tam olarak ne oluyor? Bir Mac'i Ayrıntılı Modda başlatarak her zaman daha iyi bir görünüm elde edebilirsiniz, ancak bu, gördüğünüz her şeyi mutlaka açıklamaz. Neyse ki, baştan sona Mac OS X önyükleme olaylarının sırasını dikkatli bir şekilde listeleyen KernelThread'deki segment aracılığıyla mükemmel bir açıklama mevcuttur. Meraklı Mac kullanıcıları için aşağıda tekrarlanan oldukça kapsamlı ve okumaya değer.

ote: Bir okuyucunun işaret ettiği gibi, PPC OF (Openfirmware) kullanır, i386 EFI (Genişletilebilir Firmware Arayüzü) kullanır

Peki Mac OS X önyükleme işlemi sırasında ne olur? Mac'inizi açtığınızda şunlar olur:

  • Güç açıldı.
  • OF veya EFI kodu çalıştırılır.
  • Donanım bilgileri toplanır ve donanım başlatılır.
  • Önyükleme için bir şey (genellikle işletim sistemi, ama aynı zamanda Apple Donanım Testi vb.) seçilir. Kullanıcıdan neyin önyükleneceğini seçmesi istenebilir.
  • Kontrol, önyükleyici olan /System/Library/CoreServices/BootX'a geçer. BootX çekirdeği yükler ve varsa işletim sistemi işaretlerini de çizer.
  • BootX, önceden önbelleğe alınmış aygıt sürücüleri listesini yüklemeye çalışır (/usr/sbin/kextcache tarafından oluşturulan/güncellenen). Böyle bir önbellek mkext türündedir ve bilgi sözlüklerini ve çoklu çekirdek uzantıları için ikili dosyaları içerir. mkext önbelleği bozuk veya eksikse, BootX'in mevcut senaryoda ihtiyaç duyulan uzantılar için /System/Library/Extensions içine bakacağını unutmayın (tarafından belirlendiği şekilde) uzantı paketinin Info.plist dosyasındaki OSBundleRequired özelliğinin değeri.
  • Çekirdeğin init yordamı yürütülür. Önyükleme sisteminin kök aygıtı belirlenir. Bu noktada, Firmware'e artık erişilemez.
  • Çeşitli Mach/BSD veri yapıları çekirdek tarafından başlatılır.
  • G/Ç Kiti başlatıldı.
  • Çekirdek başlar /sbin/mach_init, Mach hizmet adlandırma (bootstrap) arka plan programı. mach_init, hizmet adları ile bu hizmetlere erişim sağlayan Mach bağlantı noktaları arasındaki eşlemeleri sürdürür.

Bundan sonra, başlatma kullanıcı düzeyinde olur:

  • mach_init başlar /sbin/init, geleneksel BSD başlatma işlemi. init çalışma seviyesini belirler ve /etc/rc.boot çalıştırır, bu da makineyi tek kullanıcılı çalışacak şekilde ayarlar.

Yürütülmesi sırasında, rc.boot ve diğer rc komut dosyaları kaynak /etc/rc.common , CheckForNetwork() (ağın çalışıp çalışmadığını kontrol eder), GetPID gibi yardımcı işlevleri içeren bir kabuk komut dosyası (), purgedir() (yalnızca dizin içeriğini siler, yapıyı değil), etc.

  • rc.boot önyükleme türünü belirler (Çok Kullanıcılı, Güvenli, CD-ROM, Ağ vb.). Bir ağ önyüklemesi durumunda (sysctl değişkeni kern.netboot,olarak ayarlanacaktır. 1 bu durumda), bir ile /etc/rc.netboot çalışır. başlangıç argüman.

/etc/rc.netboot ağ önyüklemesinin çeşitli yönlerini ele alır. Örneğin, ağ ve (varsa) yerel bağlamalar gerçekleştirir. Ayrıca, bir gölge dosyasını kök aygıt olarak kullanılan disk görüntüsüyle ilişkilendirmek için /usr/bin/nbst öğesini çağırır.Fikir, yazma işlemlerini yerel depolamada olduğunu umduğumuz gölge dosyasına yönlendirmektir.

  • rc.boot bir dosya sistemi tutarlılık kontrolünün gerekli olup olmadığını anlar. Tek kullanıcı ve CD-ROM önyüklemeleri fsck'i çalıştırmaz. SafeBoot her zaman fsck'yi çalıştırır. rc.boot, fsck'in dönüş durumunu da yönetir.
  • Eğer rc.boot başarıyla çıkarsa, /etc/rc , çok kullanıcılı başlangıç ​​komut dosyası çalıştırılır. Bir CD-ROM'dan önyükleme yapılıyorsa, komut dosyası /etc/rc.cdrom (yükleme). konumuna geçer.
  • /etc/rc yerel dosya sistemlerini bağlar (HFS+, HFS, UFS, /dev/ fd, /.vol), dizinin /private/var/tmp olmasını sağlar vardır ve varsa /etc/rc.installer_cleanup öğesini çalıştırır (yeniden başlatmadan önce yükleyici tarafından bırakılır).
  • /etc/rc.cleanup çalıştırılır. Bir dizi Unix ve Mac'e özgü dizini/dosyayı “temizler”.
  • BootCache başlatıldı.
  • Çeşitli sysctl değişkenler ayarlandı (maksimum vnod sayısı, System V IPC, vb. gibi). /etc/sysctl.conf varsa (artı /etc/sysctl-macosxserver.conf) Mac OS X Server'da), okunur ve burada bulunan sysctl değişkenleri ayarlanır.
  • syslogd başlatıldı.
  • Mach sembol dosyası oluşturuldu.
  • /etc/rc başlar kextd, arka plan programı süreci çekirdek veya istemci işlemlerinden talep üzerine çekirdek uzantısını yükleyen.
  • /usr/libexec/register_mach_bootstrap_servers / içinde bulunan çeşitli Mach önyükleme tabanlı hizmetleri yüklemek için çalıştırılır. etc/mach_init.d
  • portmap ve netinfo başlatıldı.
  • Eğer /System/Library/Extensions.mkext, /System/Library/Extensions'tan eskiyse , /etc/rc mevcut mkext'i siler ve yeni bir tane oluşturur. Bir tane yoksa da yaratır.
  • /etc/rc başlar /usr/sbin/update , dahili dosya sistemi önbelleklerini sık sık diske temizleyen arka plan programı.
  • /etc/rc sanal bellek sistemini başlatır. /private/var/vm takas dizini olarak ayarlanır. /sbin/dynamic_pager uygun argümanlarla başlatılır (takas dosya adı yolu şablonu, oluşturulan takas dosyalarının boyutu, ek takasın ne zaman oluşturulacağını belirten yüksek ve düşük su uyarı tetikleyicileri) dosyaları silin veya mevcut olanları silin).
  • /etc/rc başlar /usr/libexec/fix_prebindingyanlış önceden bağlanmış ikili dosyaları düzeltmek için.
  • /etc/rc yürütür /etc/rc.cleanupdosyaları ve cihazları temizlemek ve sıfırlamak için.
  • /etc/rc sonunda /sbin/SystemStarter hizmete giriyor /System/Library/StartupItems ve /Library/StartupItems gibi konumlardan başlangıç ​​öğelerini işlemek için Bir StartupItem, adı klasör adıyla eşleşen, genellikle bir kabuk betiği olan bir programdır. Klasör, Description, Provides, gibi anahtar/değer çiftlerini içeren bir özellik listesi dosyası içerir. Gereklidir, OrderPreference, mesajları başlat/durdur vb. Çalıştırabilirsiniz SystemStarter -n -D programın hata ayıklama ve bağımlılık bilgilerini (aslında hiçbir şey çalıştırmadan) yazdırması için root olarak.
  • CoreGraphics başlangıç ​​öğesi, Apple Type Services arka plan programını (ATSServer başlatır. ) ve Windows Sunucusu (WindowServer).

Ve sonra Mac'iniz açıldı!

Bu etkinliğin bir kısmını Ayrıntılı Mod ile kendiniz görebilirsiniz (her açılışta Ayrıntılı Mod'da önyükleyebilirsiniz veya hatta her zaman görmek istiyorsanız bir Mac'i her zaman Ayrıntılı Mod'da önyükleme yapacak şekilde ayarlayabilirsiniz) unix tarzı önyükleme), ancak bu oldukça kapsamlı bir açıklama.

Apple'ın burada, geliştirici belgeleri kitaplığında bulunan Mac önyükleme işlemiyle ilgili bazı belgeleri de vardır.

Yukarıdaki bilgileri sağlayan orijinal URL'nin artık etkin olmadığına dikkat edin, bu nedenle bu gönderi gelecek nesiller için önbellek yoluyla yukarıya dahil edildi. Orijinal kaynak şu url'deki KernelThread'deki bir ileti dizisiydi: http://www.kernelthread.com/mac/osx/arch_startup.html şu anda çevrimdışı ve yeni bir konuma yönlendirme yapmıyor.

Mac OS X önyükleme sırasına ekleyeceğiniz herhangi bir bilgi veya başka eklentiniz varsa, yorumlarda paylaşın!

Mac OS X önyükleme işleminde ne olur?