Mac OS X बूट प्रक्रिया में क्या होता है?

Anonim

कभी सोचा है कि Mac OS X बूट और स्टार्टअप प्रक्रिया के दौरान क्या होता है? मैक ओएस एक्स के साथ यह पहले की तुलना में थोड़ा अधिक जटिल है, और क्लासिक मैक ओएस (सिस्टम 9, 8, 7, 6) के दिन लंबे समय से चले गए हैं, जहां हमारे मैक को एक्सटेंशन और कंट्रोल पैनल की एक श्रृंखला के साथ बूट करते हुए देखा जा सकता है। हम हमेशा अकेले उनके आइकन से पहचान सकते हैं, और फिर मैक बूट पर जो लोड हो रहा है और हो रहा है उसे आसानी से समायोजित करने के लिए एक्सटेंशन फ़ोल्डर में खुदाई करें।आज मैक ओएस एक्स के यूनिक्स आधार के साथ, कई उपयोगकर्ता पूरी तरह से अनजान हैं कि पर्दे के पीछे क्या चल रहा है।

तो मैक ओएस एक्स बूट प्रक्रिया के दौरान वास्तव में क्या होता है? वर्बोज़ मोड में मैक को बूट करके आप हमेशा बेहतर लुक पा सकते हैं, लेकिन यह जरूरी नहीं है कि आप जो देखते हैं वह सब स्पष्ट हो। सौभाग्य से KernelThread पर खंड के माध्यम से एक उत्कृष्ट व्याख्या उपलब्ध है, जो शुरू से अंत तक मैक ओएस एक्स बूट घटनाओं के अनुक्रम को ध्यान से सूचीबद्ध करता है। यह काफी गहन और पढ़ने योग्य है, जिज्ञासु मैक उपयोगकर्ताओं के लिए नीचे दोहराया गया है।

ote: जैसा कि एक पाठक ने बताया, PPC OF (ओपनफर्मवेयर) का उपयोग करता है, i386 EFI (एक्स्टेंसिबल फ़र्मवेयर इंटरफ़ेस) का उपयोग करता है

तो Mac OS X बूट प्रक्रिया के दौरान क्या होता है? आप अपना मैक चालू करते हैं, और यही होता है:

  • बिजली चालू है।
  • OF या EFI कोड निष्पादित किया गया है।
  • हार्डवेयर जानकारी एकत्र की जाती है और हार्डवेयर प्रारंभ किया जाता है।
  • कुछ (आमतौर पर ओएस, लेकिन ऐप्पल हार्डवेयर टेस्ट इत्यादि जैसी चीजें) बूट करने के लिए चुना जाता है। उपयोगकर्ता को यह चुनने के लिए कहा जा सकता है कि क्या बूट करना है।
  • नियंत्रण /सिस्टम/लाइब्रेरी/कोर सर्विसेज/बूटएक्स, बूट लोडर को जाता है। BootX कर्नेल को लोड करता है और OS बैज भी बनाता है, यदि कोई हो।
  • BootX डिवाइस ड्राइवरों की पहले से संचित सूची को लोड करने का प्रयास करता है (/usr/sbin/kextcache द्वारा बनाया/अपडेट किया गया)। ऐसा कैश mkext प्रकार का होता है और इसमें कई कर्नेल एक्सटेंशन के लिए जानकारी शब्दकोश और बाइनरी फ़ाइलें होती हैं। ध्यान दें कि यदि mkext कैश दूषित या अनुपलब्ध है, तो BootX वर्तमान परिदृश्य में आवश्यक एक्सटेंशन के लिए /System/Library/Extensions में दिखेगा (जैसा कि द्वारा निर्धारित किया गया है) एक्सटेंशन के बंडल की OSBundleRequired गुण Info.plist फ़ाइल का मान।
  • The initकर्नेल की दिनचर्या क्रियान्वित की जाती है। बूटिंग सिस्टम का रूट डिवाइस निर्धारित किया जाता है। इस बिंदु पर, फ़र्मवेयर अब पहुंच योग्य नहीं है।
  • विभिन्न मच/बीएसडी डेटा संरचनाएं कर्नेल द्वारा प्रारंभ की जाती हैं।
  • आई/ओ किट शुरू हो गया है।
  • कर्नेल शुरू होता है /sbin/mach_init, मच सेवा नामकरण (बूटस्ट्रैप) डेमॉन। mach_init सेवा के नाम और उन सेवाओं तक पहुंच प्रदान करने वाले मच पोर्ट के बीच मैपिंग बनाए रखता है।

यहां से स्टार्टअप उपयोगकर्ता-स्तर बन जाता है:

  • mach_init start /sbin/init, पारंपरिक बीएसडी init प्रक्रिया। 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 यह पता लगाता है कि क्या फ़ाइल सिस्टम की निरंतरता जांच की आवश्यकता है। एकल-उपयोक्ता और CD-ROM बूट fsck नहीं चलते हैं। सेफबूट हमेशा fsck चलाता है। rc.boot fsck की वापसी स्थिति को भी संभालता है।
  • If 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 चलाया जाता है। यह कई यूनिक्स और मैक विशिष्ट निर्देशिकाओं/फ़ाइलों को "साफ़" करता है।
  • BootCache शुरू हो गया है।
  • विभिन्न sysctl चर सेट किए गए हैं (जैसे vnodes की अधिकतम संख्या, सिस्टम V IPC, आदि के लिए)। अगर /etc/sysctl.conf मौजूद है (प्लस /etc/sysctl-macosxserver.conf Mac OS X सर्वर पर), इसे पढ़ा जाता है और sysctl इसमें निहित चर सेट होते हैं।
  • syslogd शुरू हो गया है।
  • मच प्रतीक फ़ाइल बनाई गई है।
  • /etc/rc शुरू होता है kextd, डेमॉन प्रक्रिया जो कर्नेल या क्लाइंट प्रक्रियाओं से मांग पर कर्नेल एक्सटेंशन लोड करता है।
  • /usr/libexec/register_mach_bootstrap_servers / में निहित विभिन्न मच बूटस्ट्रैप आधारित सेवाओं को लोड करने के लिए चलाया जाता है etc/mach_init.d
  • portmap और netinfo शुरू हो गए हैं।
  • If /System/Library/Extensions.mkext /System/Library/Extensions से पुराना है , /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 /System/Library/StartupItems और /Library/StartupItems जैसे स्थानों से स्टार्टअप आइटम को संभालने के लिए एक StartupItem एक प्रोग्राम है, आमतौर पर एक शेल स्क्रिप्ट, जिसका नाम फ़ोल्डर के नाम से मेल खाता है। फ़ोल्डर में एक संपत्ति सूची फ़ाइल होती है जिसमें Description, Provides, आवश्यकताएं, OrderPreference, संदेश प्रारंभ/बंद करें आदि। आप चला सकते हैं SystemStarter -n -D प्रोग्राम को डिबगिंग और निर्भरता जानकारी प्रिंट करने के लिए रूट के रूप में (वास्तव में कुछ भी चलाए बिना)।
  • The CoreGraphics स्टार्टअप आइटम Apple Type Services डेमॉन शुरू करता है (ATSServer ) और साथ ही विंडो सर्वर (WindowServer).

और फिर आपका Mac बूट हो गया है!

आप वर्बोज़ मोड के साथ स्वयं इस गतिविधि का थोड़ा सा हिस्सा देख सकते हैं (जिसे आप हर बूट वर्बोज़ मोड में बूट कर सकते हैं, या यदि आप हमेशा देखना चाहते हैं तो आप मैक को हमेशा वर्बोज़ मोड में बूट करने के लिए सेट कर सकते हैं यूनिक्स स्टाइल बूट), लेकिन यह एक बहुत गहन व्याख्या है।

Apple के पास मैक बूट प्रक्रिया पर कुछ दस्तावेज़ भी उपलब्ध हैं जो यहां उनकी डेवलपर डॉक्यूमेंटाईटन लाइब्रेरी में उपलब्ध हैं।

ध्यान दें कि उपरोक्त जानकारी प्रदान करने वाला मूल URL अब सक्रिय नहीं है, इसलिए उस पोस्ट को कैश के माध्यम से भावी पीढ़ी के लिए ऊपर शामिल किया गया है। मूल स्रोत निम्नलिखित url पर KernelThread पर एक थ्रेड था: http://www.kernelthread.com/mac/osx/arch_startup.html जो वर्तमान में ऑफ़लाइन है और किसी नए स्थान पर रीडायरेक्ट नहीं करता है।

यदि आपके पास मैक ओएस एक्स बूट अनुक्रम में जोड़ने के लिए कोई सुझाव या अन्य जोड़ हैं, तो टिप्पणियों में साझा करें!

Mac OS X बूट प्रक्रिया में क्या होता है?