मैक ओएस एक्स बूट प्रक्रिया में क्या होता है?
लंबे समय से ओएस 9 के दिन हैं, हमारे मैक एक्सटेंशन और नियंत्रण पैनलों की श्रृंखला के साथ बूट करते हुए देखते हैं जिन्हें हम हमेशा पहचान सकते हैं। आज ओएस एक्स के यूनिक्स अंडरपिनिंग के साथ, कई उपयोगकर्ता पूरी तरह से अनजान हैं कि दृश्यों के पीछे क्या चल रहा है। तो मैक ओएस एक्स बूट प्रक्रिया के दौरान वास्तव में क्या होता है? कर्नेल थ्रेड में एक सेगमेंट सावधानीपूर्वक घटनाओं के अनुक्रम को प्रारंभ से लेकर खत्म करने के लिए सूचीबद्ध करता है। यह काफी पढ़ा हुआ है और पढ़ने के लायक है। यह पूछताछ मैक ओएस एक्स उपयोगकर्ताओं के लिए नीचे दोहराया गया है।
नोट: एक पाठक के रूप में इंगित किया गया है, पीपीसी का उपयोग करता है, i386 ईएफआई का उपयोग करता है
आप अपना मैक चालू करते हैं, और यही होता है:
- पावर चालू है।
- OF या EFI कोड निष्पादित किया गया है।
- हार्डवेयर जानकारी एकत्र की जाती है और हार्डवेयर प्रारंभ होता है।
- कुछ (आमतौर पर ओएस, लेकिन ऐप्पल हार्डवेयर टेस्ट इत्यादि जैसी चीजें) को बूट करने के लिए चुना जाता है। उपयोगकर्ता को बूट करने के लिए चुनने के लिए कहा जा सकता है।
- नियंत्रण
/System/Library/CoreServices/BootX
, बूट लोडर को पास करता है। BootX कर्नेल लोड करता है और ओएस बैज भी खींचता है, यदि कोई हो। /usr/sbin/kextcache
डिवाइस ड्राइवरों की पहले कैश की गई सूची को लोड करने का प्रयास करता है (/usr/sbin/kextcache
द्वारा निर्मित / अपडेट किया गया)। इस तरह का कैश प्रकारmkext
और इसमें एकाधिक कर्नेल एक्सटेंशन के लिए जानकारी शब्दकोश और बाइनरी फ़ाइलें शामिल हैं। ध्यान दें कि यदि mkext कैश भ्रष्ट या अनुपलब्ध है, तो BootX मौजूदा परिदृश्य में आवश्यक/System/Library/Extensions
लिए/System/Library/Extensions
मेंOSBundleRequired
(जैसा किOSBundleRequired
की आवश्यकता के आधार पर निर्धारित किया गया है, विस्तार की बंडल कीInfo.plist
फ़ाइल में ।- कर्नेल की
init
दिनचर्या निष्पादित की जाती है। बूटिंग सिस्टम की रूट डिवाइस निर्धारित है। इस बिंदु पर, फर्मवेयर अब और अधिक सुलभ नहीं है। - कर्नेल द्वारा विभिन्न मैच / बीएसडी डेटा संरचनाएं शुरू की जाती हैं।
- आई / ओ किट शुरू किया गया है।
- कर्नेल प्रारंभ
/sbin/mach_init
, मैक सेवा नामकरण (बूटस्ट्रैप)/sbin/mach_init
शुरू होता है।mach_init
सेवा नामों और मैक बंदरगाहों के बीच मैपिंग बनाए रखता है जो उन सेवाओं तक पहुंच प्रदान करता है।
यहां से, स्टार्टअप उपयोगकर्ता स्तर बन जाता है:
mach_init
शुरू होता है/sbin/init
, पारंपरिक बीएसडी init प्रक्रिया। init रनलेवल निर्धारित करता है, और चलाता है/etc/rc.boot
, जो सिंगल-उपयोगकर्ता चलाने के लिए पर्याप्त मशीन सेट करता है।
इसके निष्पादन के दौरान, rc.boot
और अन्य rc.boot
स्क्रिप्ट स्रोत /etc/rc.common
, एक शेल स्क्रिप्ट जिसमें उपयोगिता फ़ंक्शंस शामिल हैं, जैसे GetPID()
नेटवर्क ऊपर है या नहीं), GetPID()
, purgedir()
( purgedir()
केवल निर्देशिका सामग्री, संरचना नहीं), आदि
rc.boot
बूट के प्रकार (बहु-उपयोगकर्ता, सुरक्षित, सीडी-रोम, नेटवर्क इत्यादि) के आंकड़े बताते हैं। नेटवर्क बूट के मामले में (sysctl
variablekern.netboot
को उस स्थिति में1
सेट किया जाएगा), यहstart
तर्क के साथ/etc/rc.netboot
चलाता है।
/etc/rc.netboot
नेटवर्क बूटिंग के विभिन्न पहलुओं को संभालता है। उदाहरण के लिए, यह नेटवर्क और (यदि कोई है) स्थानीय माउंट करता है। यह रूट छवि के रूप में उपयोग की जा रही डिस्क छवि के साथ एक छाया फ़ाइल को /usr/bin/nbst
लिए /usr/bin/nbst
भी कॉल करता है। विचार छाया फ़ाइल में लिखने को रीडायरेक्ट करना है, जो उम्मीद है कि स्थानीय भंडारण पर है।
- यदि फ़ाइल सिस्टम स्थिरता जांच की आवश्यकता है तो
rc.boot
आंकड़े बाहर हैं। एकल उपयोगकर्ता और सीडी-रोम बूट fsck नहीं चलाते हैं। सेफबूट हमेशा fsck चलाता है।rc.boot
fsck की वापसी स्थिति को भी संभालता है। - यदि
rc.boot
सफलतापूर्वक बाहर निकलता है,/etc/rc
, तो बहु-उपयोगकर्ता स्टार्टअप स्क्रिप्ट चलाया जाता है। यदि सीडी-रोम से बूटिंग हो, तो स्क्रिप्ट/etc/rc.cdrom
(स्थापना) पर स्विच हो जाती है। /etc/rc
स्थानीय फाइल सिस्टम (/.vol
+,/.vol
, यूएफएस,/dev/fd
,/.vol
)/.vol
करता है, यह सुनिश्चित करता है कि निर्देशिका/private/var/tmp
मौजूद है, और/etc/rc.installer_cleanup
चलाता है, यदि कोई मौजूद है ( रीबूट से पहले एक इंस्टॉलर द्वारा छोड़ा गया)।/etc/rc.cleanup
चलाया जाता है। यह कई यूनिक्स और मैक विशिष्ट निर्देशिकाओं / फ़ाइलों को "साफ़" करता है।- बूटकैच शुरू हो गया है।
- विभिन्न
sysctl
चर सेट हैं (जैसे अधिकतम संख्या में vnodes, सिस्टम वी आईपीसी, आदि)। यदि/etc/sysctl.conf
मौजूद है (मैक ओएस एक्स सर्वर पर प्लस/etc/sysctl-macosxserver.conf
), तो इसे पढ़ा जाता है और इसमें निहितsysctl
चर सेट होते हैं। syslogd
शुरू किया गया है।- मैक प्रतीक फ़ाइल बनाई गई है।
/etc/rc
kextd
शुरू होता है,kextd
प्रक्रिया जो कर्नेल या क्लाइंट प्रक्रियाओं से मांग पर कर्नेल एक्सटेंशन लोड करती है।/usr/libexec/register_mach_bootstrap_servers
/etc/mach_init.d
में निहित विभिन्न मैक बूटस्ट्रैप आधारित सेवाओं को लोड करने के लिए चलाया जाता हैportmap
औरnetinfo
शुरू हो गए हैं।- यदि
/System/Library/Extensions
/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
executes/etc/rc.cleanup
निष्पादित करता है। /etc/rc
अंततः/System/Library/StartupItems
और/Library/StartupItems
जैसे स्टार्टअप आइटम को संभालने के लिए लॉन्च/sbin/SystemStarter
लॉन्च/Library/StartupItems
। स्टार्टअपइटम एक प्रोग्राम है, आमतौर पर एक शेल स्क्रिप्ट, जिसका नाम फ़ोल्डर नाम से मेल खाता है। फ़ोल्डर में एक प्रॉपर्टी लिस्ट फ़ाइल होती है जिसमें कुंजी-वैल्यू जोड़े होते हैं जैसेDescription
,Provides
,Requires
,OrderPreference
, संदेश प्रारंभ / बंद करें आदि। आप प्रोग्राम्स प्रिंट डिबगिंग और निर्भरता जानकारी के लिएSystemStarter -n -D
को रूट के रूप में चला सकते हैं (वास्तव में बिना कुछ भी चल रहा है)।CoreGraphics
स्टार्टअप आइटम ऐप्पल टाइप सर्विसेजATSServer
(ATSServer
) के साथ-साथ विंडो सर्वर (ATSServer
) शुरू करता है।
स्रोत: कर्नेल थ्रेड