Booting process of Linux
लिनक्स की बहु-चरणीय बूट प्रक्रिया कई मायनों में बीएसडी और अन्य यूनिक्स-शैली बूट प्रक्रियाओं के समान है, जिनसे यह प्राप्त होती है। लिनक्स संस्थापना को चालू करने में कई चरण और सॉफ्टवेयर घटक शामिल होते हैं, जिनमें फर्मवेयर आरंभीकरण, बूट लोडर का निष्पादन, लिनक्स कर्नेल छवि को लोड करना और शुरू करना और विभिन्न स्टार्टअप स्क्रिप्ट और डेमॉन का निष्पादन शामिल है। इन चरणों और घटकों में से प्रत्येक के लिए अलग-अलग भिन्नताएं और दृष्टिकोण हैं; उदाहरण के लिए, GRUB, कोरबूट या दास यू-बूट का उपयोग बूट लोडर के रूप में किया जा सकता है (ऐतिहासिक उदाहरण LILO, SYSLINUX या लोडलिन हैं), जबकि स्टार्टअप स्क्रिप्ट या तो पारंपरिक init-शैली हो सकती हैं, या सिस्टम कॉन्फ़िगरेशन को आधुनिक विकल्पों जैसे सिस्टमडी या अपस्टार्ट के माध्यम से किया जा सकता है। लिनक्स स्टार्टअप प्रक्रिया के प्रारंभिक चरण कंप्यूटर वास्तुकला पर बहुत अधिक निर्भर करते हैं। आई. बी. एम. पी. सी. संगत हार्डवेयर एक वास्तुकला है जिस पर आमतौर पर लिनक्स का उपयोग किया जाता है; इन प्रणालियों पर, बी. आई. ओ. एस. एक महत्वपूर्ण भूमिका निभाता है, जिसमें अन्य प्रणालियों पर सटीक अनुरूप नहीं हो सकते हैं। निम्नलिखित उदाहरण में, आई. बी. एम. पी. सी. संगत हार्डवेयर माना जाता हैः बी. आई. ओ. एस. वास्तविक हार्डवेयर प्लेटफॉर्म के लिए विशिष्ट पावर-ऑन स्व-परीक्षण जैसे प्रारंभिक कार्य करता है। एक बार जब हार्डवेयर की गणना की जाती है और बूट के लिए आवश्यक हार्डवेयर को सही ढंग से आरंभ किया जाता है, तो बी. आई. ओ. एस. कॉन्फ़िगर किए गए बूट डिवाइस से बूट कोड को लोड और निष्पादित करता है। बूट लोडर अक्सर उपयोगकर्ता को संभावित बूट विकल्पों का एक मेनू प्रस्तुत करता है और इसमें एक डिफ़ॉल्ट विकल्प होता है, जिसे कुछ समय बीतने के बाद चुना जाता है। एक बार चयन हो जाने के बाद, बूट लोडर कर्नेल को मेमोरी में लोड करता है, इसे कुछ मापदंडों की आपूर्ति करता है और इसे नियंत्रण देता है। अगर गुठली को संपीड़ित किया जाता है, तो वह खुद ही विघटित हो जाएगी। इसके बाद यह आवश्यक हार्डवेयर और मेमोरी पेजिंग जैसे सिस्टम कार्यों को स्थापित करता है, और स्टार्ट _ कर्नेल () को कॉल करता है जो अधिकांश सिस्टम सेटअप (इंटरप्ट, बाकी मेमोरी प्रबंधन, डिवाइस और ड्राइवर आरंभीकरण, आदि) करता है। इसके बाद यह अलग से निष्क्रिय प्रक्रिया, शेड्यूलर और init प्रक्रिया शुरू करता है, जिसे उपयोगकर्ता स्थान में निष्पादित किया जाता है। init में या तो ऐसी लिपियाँ होती हैं जो खोल (sysv, bsd, runit) या विन्यास फ़ाइलों द्वारा निष्पादित की जाती हैं जो द्विआधारी घटकों (systemd, upstart) द्वारा निष्पादित की जाती हैं। इनिशियल में विशिष्ट स्तर (एस. आई. एस. वी., बी. एस. डी.) या लक्ष्य (एस. आई. एस. डी.) होते हैं, जिनमें से प्रत्येक में सेवाओं का विशिष्ट समूह (डीमॉन) होता है। ये विभिन्न गैर-प्रचालन प्रणाली सेवाएँ और संरचनाएँ प्रदान करते हैं और उपयोगकर्ता वातावरण बनाते हैं। एक विशिष्ट सर्वर वातावरण एक वेब सर्वर, डेटाबेस सेवाएँ और नेटवर्किंग शुरू करता है। विशिष्ट डेस्कटॉप वातावरण एक डेमॉन के साथ शुरू होता है, जिसे प्रदर्शन प्रबंधक कहा जाता है, जो एक ग्राफिक वातावरण शुरू करता है जिसमें एक ग्राफिकल सर्वर होता है जो एक बुनियादी अंतर्निहित ग्राफिकल स्टैक और एक लॉगिन प्रबंधक प्रदान करता है जो क्रेडेंशियल्स दर्ज करने और एक सत्र का चयन करने की क्षमता प्रदान करता है। उपयोगकर्ता द्वारा सही प्रमाण-पत्र दर्ज करने के बाद, सत्र प्रबंधक एक सत्र शुरू करता है। सत्र यू. आई. तत्वों (पैनल, डेस्कटॉप, एपलेट, आदि) जैसे कार्यक्रमों का एक समूह है। जो, एक साथ, एक पूर्ण डेस्कटॉप वातावरण बना सकते हैं। शटडाउन पर, init को नियंत्रित तरीके से सभी उपयोगकर्ता स्थान कार्यक्षमता को बंद करने के लिए कहा जाता है। एक बार जब अन्य सभी प्रक्रियाएं समाप्त हो जाती हैं, तो init कर्नेल को सिस्टम को बंद करने का निर्देश देते हुए एक सिस्टम कॉल करता है। चरण बूट लोडर बूट लोडर चरण कंप्यूटर वास्तुकला के अनुसार भिन्न होता है। चूँकि पहले के चरण ऑपरेटिंग सिस्टम के लिए विशिष्ट नहीं हैं, x86 और x 86-64 आर्किटेक्चर के लिए बी. आई. ओ. एस.-आधारित बूट प्रक्रिया को तब शुरू माना जाता है जब मास्टर बूट रिकॉर्ड (एम. बी. आर.) कोड को वास्तविक मोड में निष्पादित किया जाता है और पहले चरण के बूट लोडर को लोड किया जाता है। यू. ई. एफ. आई. प्रणालियों में, लिनक्स कर्नेल को सीधे यू. ई. एफ. आई. फर्मवेयर द्वारा ई. एफ. आई. एस. टी. यू. बी. के माध्यम से निष्पादित किया जा सकता है, लेकिन आमतौर पर बूट लोडर के रूप में जी. आर. यू. बी. 2 या सिस्टम डी-बूट का उपयोग किया जाता है। नीचे कुछ लोकप्रिय बूट लोडरों का सारांश दिया गया हैः GRUB 2 विभिन्न ऑपरेटिंग सिस्टम और स्वचालित विन्यास का स्वचालित पता लगाने में सक्षम होने के कारण GRUB 1 से अलग है। स्टेज 1 को मास्टर बूट रिकॉर्ड (एमबीआर) से बीआईओएस द्वारा लोड और निष्पादित किया जाता है। मध्यवर्ती चरण लोडर (stage1.5, आमतौर पर core.img) को चरण 1 लोडर द्वारा लोड और निष्पादित किया जाता है। दूसरे चरण का लोडर (चरण 2,/बूट/ग्रब/फाइलें) stage1.5 द्वारा लोड किया जाता है और GRUB स्टार्टअप मेनू प्रदर्शित करता है जो उपयोगकर्ता को एक ऑपरेटिंग सिस्टम चुनने या स्टार्टअप मापदंडों की जांच और संपादन करने की अनुमति देता है। एक मेनू प्रविष्टि चुने जाने और वैकल्पिक मापदंड दिए जाने के बाद, GRUB लिनक्स कर्नेल को मेमोरी में लोड करता है और उसे नियंत्रण देता है। GRUB 2 एक अन्य बूट लोडर की चेन-लोडिंग में भी सक्षम है। यू. ई. एफ. आई. प्रणालियों में, चरण 1 और stage1.5 आमतौर पर एक ही यू. ई. एफ. आई. अनुप्रयोग फ़ाइल होते हैं (जैसे x64 यू. ई. एफ. आई. प्रणालियों के लिए grubx64.efi)। सिस्टमडी-बूट (पूर्व में गुमिबूट), सिस्टमडी के साथ शामिल एक बूटलोडर जिसे न्यूनतम विन्यास की आवश्यकता होती है (केवल यूईएफआई प्रणालियों के लिए)। एस. आई. एस. एल. आई. एन. यू. एक्स./आई. एस. ओ. एल. आई. एन. यू. एक्स. एक बूट लोडर है जो एफ. ए. टी. फाइलसिस्टम से पूर्ण लिनक्स संस्थापनाओं को बूट करने में माहिर है। इसका उपयोग अक्सर बूट या बचाव फ़्लॉपी डिस्क, लाइव यू. एस. बी. और अन्य हल्के बूट सिस्टम के लिए किया जाता है। ISOLINUX का उपयोग आम तौर पर लिनक्स लाइव सीडी और बूट करने योग्य इंस्टॉल सीडी द्वारा किया जाता है। आरईएफआईएनडी, यूईएफआई प्रणालियों के लिए एक बूट प्रबंधक। कोरबूट यू. ई. एफ. आई. या बी. आई. ओ. एस. का एक मुफ्त कार्यान्वयन है और आमतौर पर सिस्टम बोर्ड के साथ तैनात किया जाता है, और यदि आवश्यक हो तो विक्रेता द्वारा प्रदान किए गए क्षेत्र उन्नयन। कोरबूट के कुछ हिस्से सिस्टम बी. आई. ओ. एस. बन जाते हैं और बूट के बाद मेमोरी में रहते हैं। दास यू-बूट एम्बेडेड सिस्टम के लिए एक बूट लोडर है। इसका उपयोग उन प्रणालियों पर किया जाता है जिनमें बी. आई. ओ. एस./यू. ई. एफ. आई. नहीं है, बल्कि स्मृति में बूट लोडर को पढ़ने और इसे निष्पादित करने के लिए कस्टम विधियों का उपयोग किया जाता है। ऐतिहासिक बूट लोडर, जो अब आम उपयोग में नहीं हैं, में शामिल हैंः LILO फ़ाइल सिस्टम लेआउट को नहीं समझता या विश्लेषण नहीं करता है। इसके बजाय, एक कॉन्फ़िगरेशन फ़ाइल (/वगैरह/लिलो. कॉन्फ़) एक लाइव सिस्टम में बनाई जाती है जो कर्नेल और रैम डिस्क (initrd या initramfs) के स्थान के बारे में रॉ ऑफ़सेट जानकारी (मैपर टूल) को मैप करती है। कॉन्फ़िगरेशन फ़ाइल, जिसमें प्रत्येक के लिए बूट विभाजन और कर्नेल पथनाम जैसे डेटा शामिल हैं, साथ ही यदि आवश्यक हो तो अनुकूलित विकल्प, फिर बूटलोडर कोड के साथ एमबीआर बूटसेक्टर में लिखा जाता है। जब इस बूटसेक्टर को बी. आई. ओ. एस. द्वारा पढ़ा और नियंत्रित किया जाता है, तो एल. आई. एल. ओ. मेनू कोड को लोड करता है और इसे खींचता है और फिर लिनक्स कर्नेल या किसी अन्य बूट-लोडर को चेन-लोड करने के लिए गणना करने और लोड करने के लिए उपयोगकर्ता इनपुट के साथ संग्रहीत मूल्यों का उपयोग करता है। GRUB 1 में अपनी कॉन्फ़िगरेशन फ़ाइल तक पहुँचने के लिए रन-टाइम पर सामान्य फ़ाइल सिस्टम को पढ़ने का तर्क शामिल है। यह जीआरयूबी 1 को एमबीआर में एम्बेड करने के बजाय फ़ाइल सिस्टम से अपनी कॉन्फ़िगरेशन फ़ाइल को पढ़ने की क्षमता देता है, जो इसे रन-टाइम पर कॉन्फ़िगरेशन को बदलने और ऑफ़सेट पर भरोसा करने के बजाय डिस्क और विभाजन को मानव-पठनीय प्रारूप में निर्दिष्ट करने की अनुमति देता है। इसमें एक कमांड-लाइन इंटरफेस भी है, जो गलत कॉन्फ़िगरेशन या दूषित होने पर GRUB को ठीक या संशोधित करना आसान बनाता है। लोडलिन एक बूट लोडर है जो चल रहे डॉस या विंडोज 9x कर्नेल को रन टाइम पर लिनक्स कर्नेल से बदल सकता है। यह हार्डवेयर के मामले में उपयोगी हो सकता है जिसे सॉफ्टवेयर के माध्यम से चालू करने की आवश्यकता होती है और जिसके लिए ऐसे कॉन्फ़िगरेशन प्रोग्राम स्वामित्व वाले होते हैं और केवल डी. ओ. एस. के लिए उपलब्ध होते हैं। यह बूटिंग विधि आजकल कम आवश्यक है, क्योंकि लिनक्स में कई हार्डवेयर उपकरणों के लिए ड्राइवर हैं, लेकिन इसका मोबाइल उपकरणों में कुछ उपयोग देखा गया है। एक अन्य उपयोग का मामला तब होता है जब लिनक्स एक भंडारण उपकरण पर स्थित होता है जो बूट करने के लिए बी. आई. ओ. एस. के लिए उपलब्ध नहीं हैः डी. ओ. एस. या विंडोज बी. आई. ओ. एस. सीमा को पूरा करने के लिए उपयुक्त ड्राइवरों को लोड कर सकते हैं और वहां से लिनक्स को बूट कर सकते हैं। कर्नेल लिनक्स कर्नेल सभी ऑपरेटिंग सिस्टम प्रक्रियाओं को संभालता है, जैसे कि स्मृति प्रबंधन, कार्य अनुसूचना, आई/ओ, अंतर-प्रक्रिया संचार और समग्र प्रणाली नियंत्रण। यह दो चरणों में लोड किया जाता है-पहले चरण में, कर्नेल (एक संपीड़ित छवि फ़ाइल के रूप में) को मेमोरी में लोड किया जाता है और विघटित किया जाता है, और कुछ बुनियादी कार्य जैसे कि बुनियादी मेमोरी प्रबंधन स्थापित किए जाते हैं। इसके बाद नियंत्रण को अंतिम बार मुख्य कर्नेल प्रारंभ प्रक्रिया में बदल दिया जाता है। एक बार जब कर्नेल पूरी तरह से चालू हो जाता है-और अपने स्टार्टअप के हिस्से के रूप में, लोड होने और निष्पादित होने पर-कर्नेल चलाने के लिए एक init प्रक्रिया की तलाश करता है, जो (अलग से) एक उपयोगकर्ता स्थान और उपयोगकर्ता वातावरण और अंतिम लॉगिन के लिए आवश्यक प्रक्रियाओं को सेट करता है। इसके बाद कर्नेल को निष्क्रिय रहने दिया जाता है, जो अन्य प्रक्रियाओं से कॉल के अधीन होता है। कुछ प्लेटफार्मों के लिए (जैसे ए. आर. एम. 64-बिट), कर्नेल अपघटन को बूट लोडर द्वारा किया जाता है। कर्नेल को आमतौर पर एक छवि फ़ाइल के रूप में लोड किया जाता है, जिसे zlib के साथ zImage या bzImage प्रारूपों में संपीड़ित किया जाता है। इसके शीर्ष पर एक दिनचर्या न्यूनतम मात्रा में हार्डवेयर सेटअप करती है, छवि को पूरी तरह से उच्च मेमोरी में विघटित करती है, और कॉन्फ़िगर किए जाने पर किसी भी रैम डिस्क पर ध्यान देती है। इसके बाद यह./arch/i386/boot/head और स्टार्टअप _ 32 () (x86 आधारित प्रोसेसर के लिए) प्रक्रिया के माध्यम से कर्नेल स्टार्टअप को निष्पादित करता है। कर्नेल के लिए स्टार्टअप फ़ंक्शन (जिसे स्वैपर या प्रोसेस 0 भी कहा जाता है) मेमोरी प्रबंधन (पेजिंग टेबल और मेमोरी पेजिंग) स्थापित करता है, सीपीयू के प्रकार और किसी भी अतिरिक्त कार्यक्षमता जैसे कि फ्लोटिंग पॉइंट क्षमताओं का पता लगाता है, और फिर एक कॉल के माध्यम से गैर-वास्तुकला विशिष्ट लिनक्स कर्नेल कार्यक्षमता पर स्विच करता है। स्टार्ट _ कर्नेल आरंभीकरण कार्यों की एक विस्तृत श्रृंखला को निष्पादित करता है। यह इंटरप्ट हैंडलिंग (आईआरक्यू) को सेट करता है, आगे मेमोरी को कॉन्फ़िगर करता है, प्रारंभिक प्रक्रिया (पहली उपयोगकर्ता-स्थान प्रक्रिया) शुरू करता है, और फिर सीपीयू _ आइडल () के माध्यम से निष्क्रिय कार्य शुरू करता है। विशेष रूप से, कर्नेल स्टार्टअप प्रक्रिया प्रारंभिक रैम डिस्क ("initrd") को भी माउंट करती है जिसे बूट चरण के दौरान अस्थायी रूट फ़ाइल सिस्टम के रूप में पहले लोड किया गया था। initrd ड्राइवर मॉड्यूल को अन्य उपकरणों पर निर्भरता के बिना सीधे मेमोरी से लोड करने की अनुमति देता है (जैसे। एक हार्ड डिस्क) और उन तक पहुँचने के लिए आवश्यक ड्राइवर (जैसे. एस. ए. टी. ए. ड्राइवर)। कर्नेल में स्थिर रूप से संकलित कुछ ड्राइवरों का यह विभाजन और initrd से लोड किए गए अन्य ड्राइवर एक छोटे कर्नेल की अनुमति देते हैं। रूट फ़ाइल सिस्टम को बाद में एक कॉल के माध्यम से पिवोट _ रूट () पर स्विच किया जाता है जो अस्थायी रूट फ़ाइल सिस्टम को अनमाउंट करता है और इसे वास्तविक के उपयोग के साथ बदल देता है, एक बार जब बाद वाला सुलभ हो जाता है। अस्थायी रूट फाइल प्रणाली द्वारा उपयोग की जाने वाली स्मृति को फिर से प्राप्त किया जाता है। इस प्रकार, कर्नेल उपकरणों को आरंभ करता है, बूट लोडर द्वारा निर्दिष्ट रूट फ़ाइल सिस्टम को केवल पढ़ने के लिए माउंट करता है, और प्रारंभिक (/sbin/init) चलाता है जिसे सिस्टम द्वारा संचालित पहली प्रक्रिया (PID = 1) के रूप में नामित किया जाता है। फाइल सिस्टम को माउंट करने पर कर्नेल द्वारा एक संदेश मुद्रित किया जाता है, और प्रारंभिक प्रक्रिया शुरू करने पर आरंभ किया जाता है। यह रूट फाइल सिस्टम को स्थापित करने से पहले सेटअप और उपकरण से संबंधित मामलों (रैम डिस्क या इसी तरह के) को संभालने की अनुमति देने के लिए वैकल्पिक रूप से इनिचर्ड भी चला सकता है। रेड हैट के अनुसार, इस स्तर पर विस्तृत कर्नेल प्रक्रिया को संक्षेप में इस प्रकार प्रस्तुत किया गया हैः "जब कर्नेल को लोड किया जाता है, तो यह तुरंत कंप्यूटर की मेमोरी को प्रारंभ और कॉन्फ़िगर करता है और सिस्टम से जुड़े विभिन्न हार्डवेयर को कॉन्फ़िगर करता है, जिसमें सभी प्रोसेसर, आई/ओ सबसिस्टम और भंडारण उपकरण शामिल हैं। इसके बाद यह संपीड़ित initrd छवि को स्मृति में एक पूर्व निर्धारित स्थान पर देखता है, इसे विघटित करता है, इसे माउंट करता है और सभी आवश्यक ड्राइवरों को लोड करता है। इसके बाद, यह फाइल सिस्टम से संबंधित आभासी उपकरणों को आरंभ करता है, जैसे कि एल. वी. एम. या सॉफ्टवेयर आर. ए. आई. डी., इनट्र्ड डिस्क छवि को उतारने से पहले और डिस्क छवि के सभी मेमोरी को मुक्त करने से पहले। कर्नेल तब एक रूट उपकरण बनाता है, रूट विभाजन को केवल पढ़ने के लिए माउंट करता है, और किसी भी अप्रयुक्त मेमोरी को मुक्त करता है। इस बिंदु पर, कर्नेल को मेमोरी और ऑपरेशनल में लोड किया जाता है। हालाँकि, चूंकि कोई उपयोगकर्ता अनुप्रयोग नहीं हैं जो प्रणाली को सार्थक इनपुट की अनुमति देते हैं, इसलिए इसके साथ बहुत कुछ नहीं किया जा सकता है। एक initramfs-शैली बूट समान है, लेकिन वर्णित initrd बूट के समान नहीं है। इस बिंदु पर, इंटरप्ट को सक्षम करने के साथ, शेड्यूलर सिस्टम के समग्र प्रबंधन का नियंत्रण ले सकता है, ताकि प्री-एम्प्टिव मल्टी-टास्किंग प्रदान की जा सके, और उपयोगकर्ता स्थान में उपयोगकर्ता वातावरण को बूट करना जारी रखने के लिए init प्रक्रिया को छोड़ दिया जाता है। अर्ली यूजर स्पेस initramfs, जिसे अर्ली यूजर स्पेस के रूप में भी जाना जाता है, लिनक्स कर्नेल के संस्करण 2.5.46 के बाद से उपलब्ध है, जिसमें जितना संभव हो उतने कार्यों को बदलने का इरादा है जो पहले कर्नेल ने स्टार्टअप प्रक्रिया के दौरान किए होंगे। प्रारंभिक उपयोगकर्ता स्थान के विशिष्ट उपयोग यह पता लगाने के लिए हैं कि मुख्य उपयोगकर्ता स्थान फ़ाइल प्रणाली को लोड करने और उन्हें अस्थायी फ़ाइल प्रणाली से लोड करने के लिए किस उपकरण चालक की आवश्यकता है। कई वितरणों में इनिट्रामफ छवि उत्पन्न करने और बनाए रखने के लिए ड्रकट का उपयोग किया जाता है। प्रारंभिक प्रक्रिया एक बार कर्नेल शुरू हो जाने के बाद, यह init प्रक्रिया शुरू करता है, एक डेमन जो फिर उपयोगकर्ता स्थान को बूटस्ट्रैप करता है, उदाहरण के लिए फ़ाइल सिस्टम की जाँच और माउंट करके, और अन्य प्रक्रियाओं को शुरू करके। init सिस्टम शुरू करने वाला पहला डेमन (बूटिंग के दौरान) और समाप्त करने वाला अंतिम डेमन (शटडाउन के दौरान) है। ऐतिहासिक रूप से यह "SysV init" था, जिसे सिर्फ "init" कहा जाता था। हाल के लिनक्स वितरणों में सिस्टमडी जैसे अधिक आधुनिक विकल्पों में से एक का उपयोग करने की संभावना है। नीचे मुख्य init प्रक्रियाओं का सारांश दिया गया हैः SysV init (बस "init") यूनिक्स और BSD init प्रक्रियाओं के समान है, जिनसे यह व्युत्पन्न हुआ है। एक मानक लिनक्स प्रणाली में, init को एक पैरामीटर के साथ निष्पादित किया जाता है, जिसे रनलेवल के रूप में जाना जाता है, जो 0 से 6 तक का मान लेता है और यह निर्धारित करता है कि कौन से सबसिस्टम को चालू किया गया है। प्रत्येक रनलेवल की अपनी स्क्रिप्ट होती है जो दिए गए रनलेवल को स्थापित करने या छोड़ने में शामिल विभिन्न प्रक्रियाओं को संहिताबद्ध करती है, और ये वे स्क्रिप्ट हैं जिन्हें बूट प्रक्रिया में आवश्यक के रूप में संदर्भित किया जाता है। प्रारंभिक लिपियाँ आम तौर पर "/et/rc" जैसे नामों के साथ निर्देशिकाओं में रखी जाती हैं। init के लिए शीर्ष स्तर की विन्यास फ़ाइल/et/inittab पर है। सिस्टम बूट के दौरान, यह जाँचता है कि क्या एक डिफ़ॉल्ट रनलेवल/वगैरह/inittab में निर्दिष्ट है, और रनलेवल को सिस्टम कंसोल के माध्यम से दर्ज करने का अनुरोध करता है यदि नहीं। इसके बाद यह दिए गए रनलेवल के लिए सभी प्रासंगिक बूट स्क्रिप्ट को चलाने के लिए आगे बढ़ता है, जिसमें लोडिंग मॉड्यूल, रूट फ़ाइल सिस्टम की अखंडता की जांच करना (जिसे केवल पढ़ने के लिए माउंट किया गया था) और फिर इसे पूर्ण पढ़ने-लिखने की पहुंच के लिए रीमाउंट करना और नेटवर्क स्थापित करना शामिल है। निर्दिष्ट सभी प्रक्रियाओं को उत्पन्न करने के बाद, init निष्क्रिय हो जाता है, और तीन घटनाओं में से एक के होने की प्रतीक्षा करता हैः प्रक्रियाएं जो समाप्त होने या मरने लगीं, एक बिजली विफलता संकेत, या रनलेवल को और बदलने के लिए/sbin/tilinit के माध्यम से अनुरोध। सिस्टमडी एस. आई. एस. वी. init का एक आधुनिक विकल्प है। init की तरह, systemd एक डेमन है जो अन्य डेमन का प्रबंधन करता है। सिस्टेम्ड सहित सभी डेमन पृष्ठभूमि प्रक्रियाएँ हैं। लेनार्ट पोयटरिंग और के सीवर्स, सॉफ्टवेयर इंजीनियर जिन्होंने शुरू में सिस्टमडी विकसित किया था, ने कई तरीकों से init डेमन की दक्षता को पार करने की कोशिश की। वे निर्भरताओं को व्यक्त करने के लिए सॉफ्टवेयर ढांचे में सुधार करना चाहते थे, ताकि सिस्टम बूटिंग के दौरान अधिक प्रसंस्करण को समानांतर रूप से किया जा सके और खोल के कम्प्यूटेशनल ओवरहेड को कम किया जा सके। प्रत्येक डेमन के लिए सिस्टमडी के आरंभीकरण निर्देश एक शेल स्क्रिप्ट के बजाय एक घोषणात्मक विन्यास फ़ाइल में दर्ज किए जाते हैं। अंतर-प्रक्रिया संचार के लिए, सिस्टमडी यूनिक्स डोमेन सॉकेट्स और डी-बस को चल रहे डिमन्स के लिए उपलब्ध कराता है। सिस्टमड आक्रामक समानांतरकरण में भी सक्षम है। विंडोज संदर्भों की SYSLINUX बूटिंग प्रक्रिया भी देखें बाहरी लिंक एक डेवलपरवर्क्स लेख एम. टिम जोन्स बूटचार्टः बूट प्रोसेस परफॉर्मेंस विज़ुअलाइज़ेशन ई. एफ. आई. सिस्टम पर बूटस्ट्रैप प्रक्रिया, LWN.net, 11 फरवरी, 2015, मैट फ्लेमिंग बूटिंग द्वारा लिनक्स कर्नेल लिनक्स बूटिंग प्रक्रियाएँ