ماذا يحدث في عملية التمهيد لنظام التشغيل Mac OS X؟

Anonim

هل تساءلت يومًا عما يحدث أثناء عملية التمهيد وبدء تشغيل Mac OS X؟ مع نظام التشغيل Mac OS X ، يكون الأمر أكثر تعقيدًا قليلاً مما كانت عليه الأمور من قبل ، وقد ولت منذ فترة طويلة أيام Classic Mac OS (النظام 9 ، 8 ، 7 ، 6) ، حيث يتم تشغيل أجهزة Mac الخاصة بنا من خلال سلسلة من الملحقات ولوحات التحكم التي يمكننا دائمًا تحديد الرمز الخاص بهم فقط ، ثم البحث في مجلد الإضافات لضبط ما يتم تحميله ويحدث في تمهيد Mac بسهولة.اليوم مع أسس Unix لنظام التشغيل Mac OS X ، لا يدرك العديد من المستخدمين تمامًا ما يجري وراء الكواليس.

إذن ما الذي يحدث بالضبط أثناء عملية تمهيد نظام التشغيل Mac OS X؟ يمكنك دائمًا الحصول على مظهر أفضل عن طريق تشغيل جهاز Mac في وضع Verbose ، ولكن هذا لا يفسر بالضرورة كل ما تراه. لحسن الحظ ، يتوفر شرح ممتاز عبر المقطع في KernelThread ، والذي يسرد بعناية تسلسل أحداث تمهيد Mac OS X ، من البداية إلى النهاية. إنه شامل إلى حد ما ويستحق القراءة ، ويتكرر أدناه لمستخدمي Mac الفضوليين الموجودين هناك.

ote: كما أشار القارئ ، تستخدم PPC لـ (Openfirmware) ، يستخدم i386 EFI (واجهة البرامج الثابتة القابلة للتوسيع)

إذن ماذا يحدث أثناء عملية تمهيد نظام التشغيل Mac OS X؟ تقوم بتشغيل جهاز Mac الخاص بك ، وهذا ما يحدث:

  • الطاقة قيد التشغيل.
  • تم تنفيذOF أو رمز EFI
  • يتم جمع معلومات الأجهزة وتهيئة الأجهزة.
  • تم تحديد شيء ما (عادةً ما يكون نظام التشغيل ، ولكن أيضًا أشياء مثل Apple Hardware Test ، وما إلى ذلك) للتشغيل. قد يُطلب من المستخدم تحديد ما سيتم تشغيله.
  • يمر التحكم إلى/ النظام / المكتبة / الخدمات الأساسية / BootX، محمل الإقلاع. يقوم BootX بتحميل النواة ويرسم أيضًا شارات نظام التشغيل ، إن وجدت.
  • يحاول BootX تحميل قائمة برامج تشغيل الأجهزة المخزنة مؤقتًا مسبقًا (تم إنشاؤها / تحديثها بواسطة/ usr / sbin / kextcache ). ذاكرة التخزين المؤقت هذه من النوعmkextوتحتوي على قواميس المعلومات والملفات الثنائية لملحقات النواة المتعددة. لاحظ أنه إذا كانت ذاكرة التخزين المؤقت mkext تالفة أو مفقودة ، فسيبحث BootX في/ System / Library / Extensionsللامتدادات المطلوبة في السيناريو الحالي (كما هو محدد بواسطة قيمةOSBundleRequiredالخاصية فيInfo.plistملف حزمة الامتداد.
  • initيتم تنفيذ روتين النواة. يتم تحديد الجهاز الجذر لنظام التشغيل. في هذه المرحلة ، لم يعد يمكن الوصول إلى البرامج الثابتة.
  • يتم تهيئة هياكل بيانات Mach / BSD المختلفة بواسطة kernel.
  • تمت تهيئة مجموعة الإدخال / الإخراج.
  • تبدأ النواة/ sbin / mach_init، شيطان تسمية خدمة Mach (bootstrap).mach_initيحافظ على التعيينات بين أسماء الخدمات ومنافذ Mach التي توفر الوصول إلى تلك الخدمات.

من الآن فصاعدًا ، تصبح الشركة الناشئة على مستوى المستخدم:

  • mach_initالبداية/ sbin / init، BSD التقليدي عملية البدء. يحدد init مستوى التشغيل ، ويقوم بتشغيل/ etc / rc.boot، الذي يقوم بإعداد الجهاز بما يكفي لتشغيل مستخدم واحد.

أثناء تنفيذه ،rc.التمهيدوالآخرRCمصدر البرامج النصية/ etc / rc.common ، نص برمجي يحتوي على وظائف مساعدة ، مثلCheckForNetwork ()(للتحقق مما إذا كانت الشبكة تعمل) ،GetPID () ،purgedir ()(يحذف محتويات الدليل فقط ، وليس الهيكل) ، إلخ.

  • rc.bootيحدد نوع التمهيد (متعدد المستخدمين ، آمن ، قرص مضغوط ، شبكة وما إلى ذلك). في حالة تمهيد الشبكة ( sysctlمتغيرkern.netbootسيتم تعيينه على1في هذه الحالة) ، يتم تشغيله/ etc / rc.netbootمع بدءوسيطة.

/ etc / rc.netbootيتعامل مع مختلف جوانب تمهيد الشبكة. على سبيل المثال ، ينفذ الشبكة و (إن وجد) يتصاعد المحلية. كما أنه يستدعي/ usr / bin / nbstلربط ملف الظل بصورة القرص المستخدمة كجهاز الجذر.الفكرة هي إعادة توجيه عمليات الكتابة إلى ملف الظل ، والذي نأمل أن يكون موجودًا على التخزين المحلي.

  • rc.bootيكتشف ما إذا كان التحقق من اتساق نظام الملفات مطلوبًا. لا تقوم أحذية المستخدم الفردي والأقراص المضغوطة بتشغيل fsck. يدير SafeBoot دائمًا fsck.rc.bootيعالج حالة إرجاع fsck أيضًا.
  • إذاrc.bootيخرج بنجاح ،/ etc / rc، ثم يتم تشغيل البرنامج النصي لبدء التشغيل متعدد المستخدمين. في حالة التشغيل من قرص مضغوط ، ينتقل البرنامج النصي إلى/ etc / rc.cdrom(التثبيت).
  • / etc / rcتحميل أنظمة الملفات المحلية (HFS + ، HFS ، UFS ،/ dev / fd ،/. vol ) ، يضمن أن الدليل/ private / var / tmpموجود ، ويعمل/ etc / rc.installer_cleanup، إن وجد (تركه المثبت قبل إعادة التشغيل).
  • / etc / rc.cleanupقيد التشغيل. إنه "ينظف" عددًا من الدلائل / الملفات الخاصة بنظامي التشغيل Unix و Mac.
  • بدء تشغيل BootCache
  • متنوعsysctlتم تعيين المتغيرات (مثل الحد الأقصى لعدد vnodes ، System V IPC ، إلخ). إذا/ etc / sysctl.confموجود (بالإضافة إلى/ etc / sysctl-macosxserver.confعلى Mac OS X Server) ، تتم قراءته وsysctlيتم تعيين المتغيرات الموجودة فيه.
  • syslogdبدأ
  • تم إنشاء ملف رمز Mach
  • / etc / RCيبدأkextd، عملية الشيطان يقوم بتحميل امتداد kernel عند الطلب من عمليات kernel أو العميل.
  • / usr / libexec / register_mach_bootstrap_serversيتم تشغيله لتحميل العديد من الخدمات القائمة على تشغيل Mach Bootstrap المتضمنة في/ etc / mach_init.d
  • portmapوnetinfoبدأت.
  • إذا/ النظام / المكتبة / الامتدادات. mkextأقدم من/ النظام / المكتبة / الامتدادات ،/ etc / rcيحذف mkext الموجود وينشئ واحدًا جديدًا. كما أنه ينشئ واحدًا إذا لم يكن موجودًا.
  • / etc / rcيبدأ/ usr / sbin / update، البرنامج الخفي الذي يقوم بمسح ذاكرة التخزين المؤقت لنظام الملفات الداخلي على القرص بشكل متكرر.
  • / etc / rcيبدأ نظام الذاكرة الافتراضية./ private / var / vmتم إعداده كدليل المبادلة./ sbin / dynamic_pagerيبدأ بالوسيطات المناسبة (قالب مسار اسم ملف المبادلة ، حجم ملفات المبادلة التي تم إنشاؤها ، مشغلات تنبيه المياه المرتفعة والمنخفضة التي تحدد وقت إنشاء مبادلة إضافية أو حذف الملفات الموجودة).
  • / etc / rcيبدأ/ usr / libexec / fix_prebindingلإصلاح الثنائيات الموجودة مسبقًا بشكل غير صحيح.
  • / etc / rcينفذ/ etc / rc.cleanupلتنظيف وإعادة تعيين الملفات والأجهزة.
  • / etc / RC/ sbin / SystemStarterللتعامل مع عناصر بدء التشغيل من مواقع مثل/ النظام / المكتبة / StartupItemsو/ Library / StartupItems StartupItem هو برنامج ، عادةً ما يكون برنامج نصي shell ، يتطابق اسمه مع اسم المجلد. يحتوي المجلد على ملف قائمة خصائص يحتوي على أزواج ذات قيمة مفتاح مثلالوصف ،يوفر ،يتطلب،OrderPreference، بدء / إيقاف الرسائل إلخ. يمكنك تشغيل SystemStarter -n -Dكجذر لجعل البرنامج يطبع معلومات تصحيح الأخطاء والتبعية (بدون تشغيل أي شيء فعليًا).
  • CoreGraphicsيبدأ عنصر بدء التشغيل برنامج Apple Type Services الخفي ( ATSServer) وكذلك Window Server ( WindowServer ).

وبعد ذلك يتم تمهيد جهاز Mac الخاص بك!

يمكنك رؤية القليل من هذا النشاط بنفسك باستخدام وضع Verbose (الذي يمكنك تشغيله في وضع Verbose لكل عملية تمهيد ، أو يمكنك حتى ضبط جهاز Mac للتمهيد دائمًا في وضع Verbose إذا كنت تريد أن ترى دائمًا التمهيد بنمط يونكس) ، لكن هذا شرح شامل جدًا.

لدى Apple أيضًا بعض الوثائق المتوفرة حول عملية تمهيد Mac المتوفرة هنا في مكتبة مستندات المطورين الخاصة بهم هنا.

لاحظ أن عنوان URL الأصلي الذي يوفر المعلومات المذكورة أعلاه لم يعد نشطًا ، وبالتالي تم تضمين هذا المنشور أعلاه للأجيال القادمة عبر ذاكرة التخزين المؤقت. كان المصدر الأصلي عبارة عن سلسلة رسائل على KernelThread على عنوان url التالي: http://www.kernelthread.com/mac/osx/arch_startup.html وهو حاليًا غير متصل ولا يعيد التوجيه إلى موقع جديد.

إذا كان لديك أي حكايات أو إضافات أخرى لإضافتها إلى تسلسل التمهيد لنظام التشغيل Mac OS X ، شارك في التعليقات!

ماذا يحدث في عملية التمهيد لنظام التشغيل Mac OS X؟