सिस्टम 5 init
आपको कहानी का केवल एक छोटा सा हिस्सा बताएगा।
एक प्रकार का मायोपिया है जो लिनक्स दुनिया को प्रभावित करता है। लोगों को लगता है कि वे "सिस्टम 5 init
" नामक एक चीज का उपयोग करते हैं , और यही दोनों पारंपरिक और शुरू करने के लिए सबसे अच्छी जगह है। न ही वास्तव में मामला है।
परंपरा वास्तव में ऐसा नहीं है कि ऐसे लोग इसे शुरुआत के लिए कहते हैं। सिस्टम 5 init
और सिस्टम 5 rc
से एटी एंड टी यूनिक्स सिस्टम 5 की तारीख, जो पहले यूनिक्स के बाद लगभग था जैसा कि हम अब लिनक्स (लिनक्स) के पहले संस्करण के बाद कह रहे हैं।
प्रथम संस्करण यूनिक्स केवल था init
। यह नहीं था rc
। 1 संस्करण असेंबली भाषा init
( जिसका कोड बहाल किया गया है और वॉरेन टोमी एट अल द्वारा उपलब्ध कराया गया है। ) 12 getty
प्रक्रियाओं से सीधे जुड़ा हुआ है और इसका जवाब दिया गया है, एक अंतर्निहित तालिका से 3 हार्डवेयर्ड फाइल सिस्टम को माउंट किया गया है, और सीधे एक घर की निर्देशिका से एक कार्यक्रम चलाया है। उपयोगकर्ता नाम mel
। getty
तालिका कार्यक्रम छवि में सीधे भी था।
UNIX सिस्टम 5 के बाद यह एक और दशक था कि तथाकथित "पारंपरिक" लिनक्स इनिट सिस्टम आया था। 1992 में, मिकेल वैन स्मुरेनबर्ग (फिर से) ने एक लिनक्स init
+ rc
और उनके संबंधित उपकरण लिखे , जिन्हें लोग अब "सिस्टम 5 init
" के रूप में संदर्भित करते हैं , भले ही यह वास्तव में यूनिक्स सिस्टम 5 से सॉफ्टवेयर नहीं है (और बस नहीं है) init
)।
सिस्टम 5 init
/ rc
शुरू करने के लिए सबसे अच्छी जगह नहीं है, और यहां तक कि अगर कोई सिस्टमड के ज्ञान पर जोड़ता है जो कि जानने के लिए आधे से भी कवर नहीं करता है। इनिट सिस्टम डिज़ाइन (लिनक्स और बीएसडी के लिए) के क्षेत्र में बहुत काम हुआ है जो पिछले दो दशकों में हुआ है। सभी प्रकार के इंजीनियरिंग निर्णयों पर चर्चा की गई है, बनाया गया है, डिज़ाइन किया गया है, लागू किया गया है, और इसका अभ्यास किया जाता है। वाणिज्यिक यूनियनों ने भी बहुत कुछ किया।
अध्ययन और सीखने के लिए मौजूदा प्रणाली
यहाँ उन दो के अलावा कुछ प्रमुख init सिस्टमों की एक अधूरी सूची दी गई है , और एक या दो उनके (कई) मुख्य हैं:
- जोआचिम निल्सन के परिमित एक अधिक मानव-पठनीय विन्यास फ़ाइल का उपयोग करने का मार्ग गया।
- फेलिक्स वॉन लीटनर का मिनिट एक फाइलसिस्टम- इ -द-डेटाबेस कॉन्फ़िगरेशन सिस्टम, छोटे मेमोरी फुटप्रिंट्स के लिए चला गया, और शुरू होने वाली चीजों के बीच निर्भरता को शुरू / रोक
init
देता है।
- गेरिट पपी के रनर के लिए चला गया जो मैंने पहले केवल चार शेल स्क्रिप्ट के दृष्टिकोण के रूप में वर्णित किया है ।
- InitNG पर निर्भरताएं, लक्ष्य नाम, एकाधिक कॉन्फ़िगरेशन फ़ाइलें, और अधिक लचीली कॉन्फ़िगरेशन सिंटैक्स के साथ पूरी प्रक्रिया के लिए और अधिक चाइल्ड प्रक्रियाओं के लिए सेटिंग्स है।
- अपस्टार्ट एक पूर्ण रीडिज़ाइन के लिए गया, सिस्टम को सेवाओं और अन्योन्याश्रितियों के रूप में नहीं, बल्कि घटनाओं और नौकरियों के रूप में उनके द्वारा ट्रिगर किया गया।
- नोश के डिजाइन में सेवा प्रबंधन के सभी को शामिल करना शामिल है (यहां तक कि
getty
स्पॉइंग और ज़ोंबी रीपिंग सहित ) एक अलग सेवा प्रबंधक में, और सिर्फ ऑपरेटिंग-सिस्टम-विशिष्ट "एपीआई" डिवाइस / सिम्लिंक / निर्देशिका और सिस्टम ईवेंट को संभालना।
- पापीत एक बहुत ही सरल स्वभाव है। यह
/bin/rc.init
प्रोग्राम, माउंट फाइलसिस्टम इत्यादि को शुरू करना किसका काम है, इसके लिए आप इसका उपयोग कर सकते हैं, जैसे कि आप मिनिर्क जैसे किसी चीज़ का उपयोग कर सकते हैं ।
इसके अलावा, लगभग 10 साल पहले, डेमोनटूल उपयोगकर्ताओं और svscan
# 1 प्रक्रिया के रूप में उपयोग करने वाले अन्य लोगों के बीच चर्चा हुई थी , जिसके कारण प्रक्रिया 1 अध्ययन के रूप में पॉल जर्क के स्क्वैस्कन जैसी परियोजनाओं का नेतृत्व किया गया था , गेरिट पपी के विचारों और 1 की प्रक्रिया के रूप में लॉरेंट बर्कॉट के स्वानस्कन ।
जो हमें # 1 कार्यक्रमों को किस प्रक्रिया में लाता है।
# 1 कार्यक्रम क्या प्रक्रिया करते हैं
क्या प्रक्रिया # 1 की धारणा "करने के लिए" माना जाता है उनके अधीन व्यक्तिपरक हैं। एक सार्थक उद्देश्य डिजाइन मानदंड क्या प्रक्रिया # 1 न्यूनतम पर करना चाहिए । कर्नेल उस पर कई आवश्यकताएं लगाता है। और हमेशा विभिन्न प्रकार के कुछ ऑपरेटिंग-सिस्टम-विशिष्ट चीजें होती हैं जो इसे करना पड़ता है। जब यह आता है कि किस प्रक्रिया # 1 ने पारंपरिक रूप से किया है, तो हम उस न्यूनतम स्तर पर नहीं हैं और वास्तव में कभी नहीं रहे हैं।
कई चीजें हैं जो विभिन्न ऑपरेटिंग सिस्टम गुठली और अन्य कार्यक्रमों की प्रक्रिया # 1 की मांग करती हैं जो एक बस नहीं बच सकती हैं।
लोग आपको बताएंगे कि fork()
अनाथ प्रक्रियाओं के माता-पिता के रूप में चीजें और अभिनय करना प्रक्रिया # 1 का प्रमुख कार्य है। विडंबना यह है कि यह असत्य है। अनाथ प्रक्रियाओं के साथ काम करना (हाल ही में लिनक्स कर्नेल के साथ, जैसा कि https://unix.stackexchange.com/a/177361/5132 पर समझाया गया है ) एक हिस्सा है जो एक प्रक्रिया से काफी हद तक बाहर हो सकता है # 1 अन्य प्रक्रियाओं में, जैसे कि एक समर्पित सेवा प्रबंधक । ये सभी सेवा प्रबंधक हैं, जो # 1 प्रक्रिया को पूरा करते हैं:
- IBM AIX
srcmstr
प्रोग्राम, सिस्टम रिसोर्स कंट्रोलर
runsvdir
रनर से गेरिट पपी
- डैनियल जे बर्नस्टीन है
svscan
daemontools से, एडम सैम्पसन का svscan
से freedt , ब्रूस Guenter के svscan
daemontools-दोहराना से, और लॉरेंट Bercot के s6-svscan
से S6
- वेन मार्शल के
perpd
पेर से
- सोलारिस 10 में सेवा प्रबंधन सुविधा
service-manager
nosh से
इसी तरह, जैसा कि https://superuser.com/a/888936/38062 पर बताया गया है , पूरे /dev/initctl
विचार को प्रक्रिया 1 के पास कहीं भी होने की जरूरत नहीं है। विडंबना यह है कि यह अत्यधिक केंद्रीकृत प्रणाली है जो प्रदर्शित करता है कि इसे प्रक्रिया # 1 से बाहर ले जाया जा सकता है।
इसके विपरीत, के लिए अनिवार्य चीजें init
, कि लोगों को आम तौर पर उनके ऑफ-द-टॉप ऑफ सिर डिजाइनों में भूल जाते हैं, इस तरह के हैंडलिंग बातें हैं SIGINT
, SIGPWR
, SIGWINCH
, और इसके आगे गिरी से भेजे गए और विभिन्न सिस्टम स्थिति परिवर्तन भेजे गए अनुरोध को लागू करने उन प्रोग्रामों से जो "जानते हैं" कि # 1 प्रक्रिया करने के लिए कुछ निश्चित संकेतों का मतलब कुछ चीजों से है। (उदाहरण के लिए: जैसा कि https://unix.stackexchange.com/a/196471/5132 पर बताया गया है , बीएसडी टूलसेट "जानते हैं" SIGUSR1
जिसका एक विशिष्ट अर्थ है।)
एक बार आरंभिक और अंतिमकरण कार्य भी होते हैं जिन्हें कोई नहीं कर सकता है, या न करने से बहुत पीड़ित होगा, जैसे "एपीआई" फाइल सिस्टम को बढ़ाना या फाइल सिस्टम कैश को फ्लश करना।
"एपीआई" फाइलसिस्टम के साथ काम करने की मूल बातें init
रोम के 1 संस्करण के संचालन के लिए अलग-अलग हैं। यूनिक्स: एक कार्यक्रम में हार्डवर्क की गई जानकारी की एक सूची है, और एक बस mount()
सूची में सभी प्रविष्टियों की है। आप इस तंत्र को सिस्टम में BSD (sic!) के रूप में विविध रूप में पाएंगे init
, nosh के माध्यम system-manager
से systemd में।
"एक साधारण शेल के लिए सिस्टम सेट करें"
जैसा कि आपने देखा है, init=/bin/sh
"एपीआई" फाइलसिस्टम को माउंट नहीं किया गया है, बिना किसी कैश फ्लश के एक असमान फैशन में क्रैश हो जाता है जब एक प्रकार exit
( https://unix.stackexchange.com/a/195978/5132 ), और सामान्य रूप से इसे छोड़ देता है (सुपर) उपयोगकर्ता मैन्युअल रूप से उन कार्यों को करता है जो सिस्टम को न्यूनतम रूप से उपयोग करने योग्य बनाते हैं।
यह देखने के लिए कि प्रक्रिया # 1 कार्यक्रमों में वास्तव में क्या करने के अलावा कोई विकल्प नहीं है, और इस प्रकार आपको अपने बताए गए डिज़ाइन लक्ष्य के लिए एक अच्छे पाठ्यक्रम पर सेट किया गया है, आपका सबसे अच्छा विकल्प जेरिट पपीट के रन, फेलिक्स डॉन के संचालन में ओवरलैप्स को देखना है। लीटनर के मिनिट और system-manager
नोश पैकेज से कार्यक्रम। पूर्व दो शो न्यूनतम होने का प्रयास करते हैं, फिर भी उस सामान को संभालते हैं जिससे बचना असंभव है।
उत्तरार्द्ध उपयोगी है, मैं सुझाव देता हूं, system-manager
कार्यक्रम के लिए इसकी व्यापक मैनुअल प्रविष्टि के लिए , जो यह बताता है कि "एपीआई" फाइलसिस्टम माउंट किए गए हैं, क्या आरंभीकरण कार्य चलाए जाते हैं, और कौन से सिग्नल संभाले जाते हैं; सिस्टम द्वारा डिजाइन में सिस्टम मैनेजर ने केवल तीन अन्य चीजें (सेवा प्रबंधक, एक सहायक लकड़हारा, और राज्य परिवर्तन चलाने का कार्यक्रम) स्पॉन किया है और केवल प्रक्रिया # 1 में अपरिहार्य है।