X11 कर्नेल के साथ कैसे सहभागिता करता है / लॉगिन करता है


14

जैसा कि मैं लिनक्स कर्नेल के साथ पाठ-आधारित बातचीत के लिए समझता हूं, एक प्रोग्राम initशुरू होता है getty(या agetty) जो कि टीटीवाई उपकरणों में से एक से जोड़ता है /devऔर उपयोगकर्ता नाम के लिए संकेत देता है। इसके बाद, एक प्रोग्राम loginचलाया जाता है जो उपयोगकर्ता के पासवर्ड के लिए संकेत देता है और यदि सही है, तो उपयोगकर्ता के पसंदीदा शेल (जैसे bashया csh) को लॉन्च करता है । इस बिंदु पर, बैश TTY डिवाइस के माध्यम से कर्नेल के साथ इंटरैक्ट करता है।

यह लॉगिन प्रक्रिया X11 के लिए कैसे काम करती है? क्या X11 एक TTY के ऊपर कर्नेल के साथ इंटरैक्ट करता है?

जवाबों:


15

शेल उपयोगकर्ता इनपुट प्राप्त करने और आउटपुट का उत्पादन करने के लिए TTY डिवाइस (यदि यह एक से जुड़ा हुआ है) का उपयोग करता है, और बहुत कुछ नहीं। तथ्य यह है कि एक शेल एक TTY से जुड़ा हुआ है getty(और द्वारा संरक्षित login) द्वारा निर्धारित किया जाता है ; अधिकांश समय शेल को परवाह नहीं है कि यह TTY से जुड़ा है या नहीं। कर्नेल के साथ इसका इंटरैक्शन सिस्टम कॉल के माध्यम से होता है ।

एक X11 सर्वर लॉगिन (शेल की तरह) के बारे में नहीं जानता है। X11 में लॉगिन प्रक्रिया दो तरीकों से काम करती है:

  • या तो उपयोगकर्ता टर्मिनल पर लॉग इन करता है, और फिर एक्स (आमतौर पर उपयोग करना startx) शुरू करता है;
  • या एक एक्स सर्वर को "डिस्प्ले मैनेजर" के साथ शुरू किया जाता है जो उपयोगकर्ता को एक लॉगिन और पासवर्ड के लिए संकेत देता है (या जो भी प्रमाणीकरण जानकारी आवश्यक है)।

जिस तरह से X11 सर्वर इनपुट प्राप्त करते हैं और आउटपुट एक शेल की तुलना में बहुत अलग है। इनपुट पक्ष पर, एक्स उन उपकरणों के बारे में जानता है जो गोले नहीं, चूहों से शुरू होते हैं; यह आमतौर पर उन लोगों को सीधे अपने ड्राइवरों के साथ प्रबंधित करता है। कीबोर्ड के लिए भी, X के पास अपने ड्राइवर होते हैं जो कर्नेल की हैंडलिंग को पूरक करते हैं (इसलिए जैसा कि मैं इसे समझता हूं, उदाहरण के लिए लिनक्स पर X कीबोर्ड से कच्चे इनपुट को पढ़ने के लिए TTY ड्राइवर का उपयोग करता है, लेकिन फिर व्याख्या करता है कि अपने ड्राइवर का उपयोग कर रहा है)। आउटपुट साइड पर, एक्स ड्राइव कर्नेल की सहायता से या बिना TTY डिवाइस के बिना, सीधे डिवाइस प्रदर्शित करता है।

X11 सर्वर कई प्रणालियों पर हालांकि, कर्नेल के साथ सिंक्रनाइज़ करने के लिए TTY डिवाइस का उपयोग करते हैं: जो सिस्टम वर्चुअल टर्मिनल का समर्थन करता है, X को उस पर चलने वाले VT को "रिजर्व" करने की आवश्यकता होती है, और VT स्विचिंग को संभालता है। रास्ते में कुछ अन्य सूक्ष्मताएं हैं; इस प्रकार लिनक्स पर, एक्सपी टीपीवाई को जीपीएम (एक प्रोग्राम जो चूहों के पाठ-मोड का उपयोग करने की अनुमति देता है) को निष्क्रिय करने के लिए कहता है। एक्स भी एक वीटी साझा कर सकते हैं ...

अतीत में कुछ कार्यस्थानों पर, कर्नेल के साथ बहुत स्पष्ट सिंक्रनाइज़ेशन नहीं था; यदि आप नहीं चलते हैं xconsole, तो आप अपने X11 डिस्प्ले के शीर्ष पर "टेक्स्ट मोड" में प्रदर्शित कर्नेल संदेशों के साथ समाप्त हो सकते हैं।


2

कर्नेल में लॉगिन की बिल्कुल कोई अवधारणा नहीं है, या जो लॉग इन है - सभी इसकी परवाह करते हैं कि एक निश्चित उपयोगकर्ता आईडी के तहत चलने वाली प्रक्रियाएं हैं (जो कि कर्नेल के व्यवसाय में से कोई भी नहीं है!)। एक लॉगिन कार्यक्रम, यह टर्मिनल या X11 डिस्प्ले मैनेजर पर गेटी हो, रूट के रूप में चलता है और फिर स्थानीय यूसोलर (NSS और libc सामान - जो कर्नेल व्यवसाय या तो नहीं) का सुझाव दिया गया है, के लिए एक उत्थान सेट करने के लिए setuid () और संबंधित कॉल का उपयोग करता है। उपयोगकर्ता के लिए उपयोग करने के लिए जो अभी प्रमाणित है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.