ماذا يحدث في عملية التمهيد لنظام التشغيل Mac OS X؟
هل تساءلت يومًا عما يحدث أثناء عملية التمهيد وبدء تشغيل 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 ، شارك في التعليقات!