Skip to main content

लिनक्स पर टेक्स्ट टर्मिनलों - 14.1 गेट्टी (/ etc / inittab में उपयोग किया जाता है)

Linux Tutorial for Beginners: Introduction to Linux Operating System (जून 2026)

Linux Tutorial for Beginners: Introduction to Linux Operating System (जून 2026)
Anonim

14.1 गेट्टी (/ etc / inittab में प्रयोग किया जाता है)

गेटी का परिचय

जब कंप्यूटर शुरू होता है (या रन स्तर स्विच करता है) पर एक सीरियल पोर्ट (और उससे जुड़े टर्मिनल) पर एक लॉगिन प्रक्रिया चलाने के लिए एक गेटी कमांड / etc / inittab फ़ाइल में रखा जाना चाहिए। कमांड लाइन से गेटी चलाना समस्याएं पैदा कर सकता है (देखें कि कमांड लाइन से गेटी रन: प्रोग्राम देखने के लिए क्यों बंद हो जाता है)। गेट्टी एक टीटीवी (एक टर्मिनल) जा रहा है। प्रत्येक टर्मिनल को अपनी गेटी कमांड की आवश्यकता होती है। प्रत्येक / etc / inittab फ़ाइल में कंसोल के लिए कम से कम एक गेटी कमांड भी होता है। इसे ढूंढें और इसके आगे के वास्तविक टर्मिनलों के लिए गेटी कमांड डालें। इस फ़ाइल में टेक्स्ट टर्मिनल के लिए नमूना गेटी लाइन हो सकती हैं, जिन पर टिप्पणी की जाती है ताकि आपको उन्हें असम्बद्ध करना (अग्रणी # को हटाएं) और कुछ तर्कों को बदलना है।

जिन तर्कों की अनुमति है, वे इस बात पर निर्भर करते हैं कि आप किस गेटी का उपयोग करते हैं:सीधे जुड़े टर्मिनलों के लिए दो gettys सर्वश्रेष्ठ हैं:

  • agetty (कभी कभी गेट्टी कहा जाता है): स्थापित करने के लिए बहुत आसान है। कोई विन्यास फाइल नहीं। Agetty देखें
  • गेट्टी (getty_ps का हिस्सा)

डायल-इन मोडेम (सीधे जुड़े टर्मिनलों से बचने के लिए) के लिए दो सबसे अच्छे हैं:

  • mgetty: मोडेम के लिए सबसे अच्छा; टर्मिनल के लिए भी काम करता है लेकिन कम
  • uugetty: केवल मॉडेम के लिए; getty_ps पैकेज का हिस्सा

यदि आप वास्तविक टेक्स्ट-टर्मिनल का उपयोग नहीं करते हैं तो उपयोग करने के लिए सरल गेटिस। अधिकांश लिनक्स उपयोगकर्ता इन मॉनीटर पर इनमें से एक का उपयोग करते हैं:

  • mingetty
  • fbgetty
  • fgetty
  • rungetty

आपका लिनक्स वितरण टेक्स्ट टर्मिनलों के लिए ps_getty या agetty के साथ आ सकता है। कुछ वितरण न तो आपूर्ति करते हैं। दुर्भाग्यवश, वे अक्सर इसे "गेट्टी" कहते हैं, इसलिए आपको यह निर्धारित करने की आवश्यकता हो सकती है कि आपके द्वारा किए गए तर्कों के बाद / etc / inittab में आपके द्वारा डाले गए तर्कों के बाद कौन सा है। डेबियन agetty का उपयोग करता है (उपयोग-लिनक्स पैकेज में)। रेडहाट और फेडोरा ps_getty का उपयोग करते हैं जो: ps_getty पर है

आपके पास कौन सी गेटी है, यह निर्धारित करने के लिए एक अंतिम उपाय के रूप में, आप इसके निष्पादन योग्य कोड (आमतौर पर / sbin) को देख सकते हैं। ps_getty में इस कोड में एम्बेडेड / etc / gettydefs है। इसके लिए खोज करने के लिए, / sbin पर जाएं और टाइप करें:तार गेट्टी | grep गेट्टी अगर गेट्टी वास्तव में उपरोक्त है तो उपरोक्त कुछ भी नहीं होगा। हालांकि अगर आपके पास एग्जिटी टाइपिंग है:गेटी-एचविकल्पों को दिखाना चाहिए -hiLmw।

यदि आपके पास गेटी नहीं है तो आप अन्य वितरण और अन्य जांचना चाहते हैं विदेशी आरपीएम और डेबियन पैकेज के बीच कनवर्ट करने के लिए कार्यक्रम। गेट्टी सॉफ्टवेयर से स्रोत कोड डाउनलोड किया जा सकता है।

यदि आप मॉडेम कंट्रोल लाइनों का उपयोग नहीं कर रहे हैं (उदाहरण के लिए यदि आप केवल 3 कंडक्टर की न्यूनतम संख्या का उपयोग करते हैं: ट्रांसमिट, प्राप्त, और सामान्य सिग्नल ग्राउंड) आपको गेट्टी को "स्थानीय" ध्वज का उपयोग करके इसे जानना चाहिए। इसका प्रारूप इस बात पर निर्भर करता है कि आप किस गेटी का उपयोग करते हैं।

गेट्टी लॉगिन के बाद निकलता है (और राहत दे सकता है)

लॉग इन करने के बाद आप देखेंगे ("शीर्ष", "ps -ax", या "ptree" का उपयोग करके) कि गेट्टी प्रक्रिया अब चल रही नहीं है। इसके साथ क्या हुआ? अगर आपका खोल मारा जाता है तो गेटी फिर से शुरू क्यों होती है? यहाँ पर क्यों।

आपके उपयोगकर्ता नाम में टाइप करने के बाद, गेटी इसे लेता है और लॉगिन प्रोग्राम को आपके उपयोगकर्ता नाम बताता है। गेट्टी प्रक्रिया को लॉगिन प्रक्रिया द्वारा प्रतिस्थापित किया जाता है। लॉगिन प्रक्रिया आपके पासवर्ड के लिए पूछती है, इसे जांचती है और आपकी पासवर्ड फ़ाइल में जो भी प्रक्रिया निर्दिष्ट होती है उसे शुरू करती है। यह प्रक्रिया अक्सर बैश खोल होती है। यदि ऐसा है, तो बैश शुरू होता है और लॉगिन प्रक्रिया को प्रतिस्थापित करता है। ध्यान दें कि एक प्रक्रिया दूसरे को बदल देती है और बैश खोल प्रक्रिया मूल रूप से गेट्टी प्रक्रिया के रूप में शुरू होती है। इसके निहितार्थों को नीचे समझाया जाएगा।

अब / etc / inittab फ़ाइल में, गेटी को मारने पर श्वसन (पुनरारंभ) माना जाता है। यह उस लाइन पर कहता है जो गेटी कहता है। लेकिन अगर बैश खोल (या लॉगिन प्रक्रिया) मारे गए हैं, गेटी respawns (restarts)। क्यूं कर? खैर, लॉग इन प्रक्रिया और बैश दोनों गेटी और वारिस के लिए प्रतिस्थापन हैं

* टेक्स्ट टर्मिनल हाउ टू इंडेक्स

उनके पूर्ववर्तियों द्वारा स्थापित सिग्नल कनेक्शन। वास्तव में यदि आप विवरण देखते हैं तो आप देखेंगे कि प्रतिस्थापन प्रक्रिया में मूल प्रक्रिया के समान प्रक्रिया आईडी होगी। इस प्रकार बैश एक ही प्रक्रिया आईडी संख्या के साथ छिपाने में गेटी की तरह है। अगर बैश मारे गए तो यह गेटी की तरह ही मारा गया था (भले ही गेटी अब और नहीं चल रहा हो)। यह गेटी respawning में परिणाम।

जब कोई लॉग आउट करता है, उस धारावाहिक बंदरगाह पर सभी प्रक्रियाओं को बैश खोल सहित मारा जाता है। यह भी हो सकता है (अगर सक्षम है) यदि मॉडेम द्वारा डीसीडी वोल्टेज की बूंद से धारावाहिक बंदरगाह पर एक हैंगअप सिग्नल भेजा जाता है। या तो डीसीडी में लॉगआउट या ड्रॉप के परिणामस्वरूप गेटी respawning होगा। "टॉप" या "मार" कमांड के साथ, के कुंजी को मारकर, या तो मैन्युअल रूप से बैश (या लॉगिन) को मारकर गेटी को राहत दे सकती है। आपको सिग्नल 9 के साथ इसे मारने की आवश्यकता होगी (जिसे अनदेखा नहीं किया जा सकता है)।

अगर गेटी कमांड लाइन से चलती है: प्रोग्राम बंद हो जाते हैं

आपको आम तौर पर अंदर से गेटी चलाना चाहिए / Etc / inittab और कमांड लाइन से नहीं या अन्यथा टर्मिनल पर चल रहे कुछ प्रोग्राम अनपेक्षित रूप से निलंबित (बंद) हो सकते हैं। यहां क्यों है (यदि आपके लिए महत्वपूर्ण क्यों नहीं है तो अगले खंड पर जाएं)। यदि आप किसी अन्य टर्मिनल की कमांड लाइन से ttyS1 कहने के लिए गेटी शुरू करते हैं, तो tty1 कहें, तो इसमें tty1 को "कंट्रोलिंग टर्मिनल" के रूप में रखा जाएगा, भले ही यह वास्तविक टर्मिनल चालू हो, ttyS1 है। इस प्रकार यह गलत नियंत्रण टर्मिनल है। लेकिन अगर यह inittab फ़ाइल के अंदर शुरू हुआ है तो इसमें ttyS1 को नियंत्रित टर्मिनल (सही) के रूप में होगा।

हालांकि नियंत्रण टर्मिनल गलत है, ttyS1 पर लॉगिन ठीक काम करता है (चूंकि आपने ttyS1 को गेटी के लिए तर्क दिया है)। मानक इनपुट और आउटपुट ttyS1 पर सेट होते हैं भले ही नियंत्रण टर्मिनल tty11 रहता है। TtyS1 पर चलने वाले अन्य प्रोग्राम इस मानक इनपुट / आउटपुट (जो ttyS1 से जुड़ा हुआ है) का उत्तराधिकारी हो सकता है और सबकुछ ठीक है। लेकिन कुछ कार्यक्रम उनके नियंत्रण टर्मिनल (tty1) से पढ़ने की कोशिश करने की गलती कर सकते हैं जो गलत है। अब tty1 सोच सकता है कि ये प्रोग्राम tty1 द्वारा पृष्ठभूमि में चलाए जा रहे हैं, इसलिए tty1 से पढ़ने का प्रयास (यह ttyS1 होना चाहिए) परिणाम पढ़ने की कोशिश की गई प्रक्रिया को रोकने में परिणाम। (एक पृष्ठभूमि प्रक्रिया को इसके नियंत्रण टर्मिनल से पढ़ने की अनुमति नहीं है।)। आप एक संदेश कुछ ऐसा देख सकते हैं: "1 + रुक गया"स्क्रीन पर। इस बिंदु पर आप अटक गए हैं क्योंकि आप एक ऐसी प्रक्रिया से बातचीत नहीं कर सकते हैं जो गलत टर्मिनल के माध्यम से आपके साथ संवाद करने की कोशिश कर रहा है। निश्चित रूप से इससे बचने के लिए आप दूसरे टर्मिनल पर जा सकते हैं और प्रक्रिया को मार सकते हैं आदि। ।

agetty (गेटी नाम दिया जा सकता है)

/ Etc / inittab में एक उदाहरण पंक्ति:

एस 1: 23: respawn: / sbin / getty -L 1 9 00 ttyS1 vt102

एस 1 ttyS1 से है। 23 का मतलब है कि रन स्तर 2 या 3 में प्रवेश करने पर गेटी चलाया जाता है। Respawn का मतलब है कि अगर गेट्टी (या एक प्रक्रिया जिसे इसे बाश के रूप में बदल दिया जाता है) मारा जाता है, तो गेट्टी स्वचालित रूप से फिर से शुरू हो जाएगी (respawn)। / sbin / getty गेटी कमांड है। -एल का मतलब स्थानीय है (मॉडेम नियंत्रण संकेतों को अनदेखा करें)। -एच (उदाहरण में नहीं दिखाया गया) हार्डवेयर प्रवाह नियंत्रण (स्टाटी crtscts के समान) सक्षम बनाता है। 1 9 200 बॉड दर है। ttyS1 का अर्थ है / dev / ttyS1 (एमएस-डॉस में COM2)। vt102 टर्मिनल का प्रकार है और यह गेटी पर्यावरण वैरिएबल TERM को इस मान पर सेट करेगा। कोई विन्यास फाइल नहीं हैं। गेटी संपादित करने के बाद कमांड लाइन पर "init q" टाइप करें और आपको एक लॉगिन प्रॉम्प्ट देखना चाहिए।

समानता की समस्याओं का एग्गी का ऑटो-डिटेक्शन

agetty कार्यक्रम टर्मिनल के अंदर समानता सेट को स्वतः पहचानने का प्रयास करेगा (समरूपता सहित)। यह 8-बिट डेटा बाइट्स प्लस 1-बिट समता का समर्थन नहीं करता है। 8-बिट डेटा बाइट्स (प्लस समानता) देखें। यदि तुम प्रयोग करते हो stty समानता सेट करने के लिए, agetty स्वचालित रूप से इसे अनसेट कर देगा क्योंकि शुरुआत में समानता बिट के माध्यम से आना चाहती है जैसे कि यह डेटा बिट था। ऐसा इसलिए है क्योंकि जब आप अपना लॉगिन-नाम टाइप करते हैं तो इसे अंतिम बिट (संभवतः एक समानता बिट) प्राप्त करने की आवश्यकता होती है ताकि वह समानता को स्वतः पहचान सके। इस प्रकार यदि आप समानता का उपयोग करते हैं, तो इसे केवल टेक्स्ट-टर्मिनल के अंदर सक्षम करें और चलो agetty इसे स्वतः पहचानें और इसे कंप्यूटर पर सेट करें। यदि आपका टर्मिनल प्राप्त समानता का समर्थन करता है, तो लॉगिन प्रॉम्प्ट तब तक खराब लगेगा जब तक कि आप कुछ टाइप न करें ताकि गेटी इसका पता लगा सके

समानता। घुमावदार संकेत लॉगिन करने की कोशिश से आगंतुकों, आदि को रोक देगा। यह वही हो सकता है जो आप चाहते हैं।

कभी-कभी समानता के ऑटो डिटेक्शन के साथ एक समस्या होती है। ऐसा इसलिए होता है क्योंकि आप अपना लॉगिन नाम पहले टाइप करते हैं, agetty शुरू होता है लॉग इन करें आपको लॉग इन करने के लिए प्रोग्राम। दुर्भाग्य से, लॉग इन करें कार्यक्रम समानता का पता नहीं लगा सकता है तो अगर गेट्टी कार्यक्रम तब समानता निर्धारित करने में विफल रहा लॉग इन करें इसे या तो निर्धारित करने में सक्षम नहीं होगा। यदि पहला लॉगिन प्रयास विफल रहता है, लॉग इन करें आपको दोबारा कोशिश करने देगा, आदि (सभी समानता सेट गलत के साथ)। आखिरकार, लॉगिन करने के कई असफल प्रयासों के बाद (या एक टाइमआउट के बाद) agetty फिर से शुरू होगा और फिर से लॉगिन अनुक्रम शुरू करें। एक बार गेटी फिर से चल रहा है, तो यह दूसरी कोशिश पर समानता का पता लगाने में सक्षम हो सकता है ताकि सबकुछ ठीक काम कर सके।

गलत समानता के साथ, लॉग इन करें प्रोग्राम आपके द्वारा टाइप किए जाने वाले सही ढंग से पढ़ नहीं सकता है और आप लॉग इन नहीं कर सकते हैं। यदि आपका टर्मिनल प्राप्त समानता का समर्थन करता है, तो आप एक गड़बड़ी स्क्रीन देखना जारी रखेंगे। अगर गेटी समानता का पता लगाने में विफल रहता है तो / etc / issue फ़ाइल आमतौर पर प्रॉम्प्ट से पहले स्क्रीन पर डंप हो जाती है, तो स्क्रीन पर अधिक गड़बड़ वाले शब्द दिखाई दे सकते हैं।

टाइप किए गए पहले अक्षर से समानता का पता लगाना क्यों नहीं हो सकता है? यहां एक उदाहरण दिया गया है: मान लें कि यह 8-बिट बाइट को इसके समानता बिट 0 (उच्च-आदेश बिट) के साथ और 1-बिट्स की विषम संख्या के साथ पता लगाता है। यह कितना समानता है? खैर, 1 बिट्स की विषम संख्या का तात्पर्य है कि यह विषम समानता है। लेकिन यह एक समानता वाले 8-बिट चरित्र भी हो सकता है। यह निर्धारित करने के लिए अब तक कोई रास्ता नहीं है। लेकिन अब तक हमने समानता की संभावना को समाप्त कर दिया है। इस प्रकार समानता का पता लगाना उन्मूलन की प्रक्रिया से प्राप्त होता है।

यदि अगला बाइट टाइप किया गया है तो पहले के समान है और यह भी समानता की संभावना को समाप्त करता है, समानता निर्धारित करना अभी भी असंभव है। यह स्थिति अनिश्चित काल तक जारी रह सकती है और दुर्लभ मामलों में लॉगिन तब तक असफल हो जाएगा जब तक आप अपना लॉगिन-नाम बदल नहीं लेते। अगर एग्टीटी को 1 का समानता मिलती है तो यह मान लेगा कि यह एक समानता है और 8-बिट चरित्र का उच्च-आदेश बिट नहीं है। इस प्रकार यह मानता है कि आप अपने उपयोगकर्ता नाम में मेटा-वर्ण (उच्च बिट सेट) का उपयोग नहीं करते हैं (यानी आपका नाम ASCII में है)।

कोई भी विभिन्न तरीकों से "लॉगिन लूप" में जा सकता है। मान लीजिए कि आप अपने लॉगिन नाम के लिए केवल एक अक्षर या दो टाइप करें और फिर वापसी करें। यदि ये पत्र समानता पहचान के लिए पर्याप्त नहीं हैं, तो समानता का पता लगाने से पहले लॉगिन लॉग इन करें। कभी-कभी यह समस्या तब होती है जब आपके पास प्रारंभिकता शुरू होने पर टर्मिनल पर और / या कनेक्ट नहीं होता है।

यदि आप इस "लॉगिन लूप" में फंस गए हैं तो इसका एक तरीका है जब तक आप गेटी लॉगिन प्रॉम्प्ट प्राप्त नहीं करते हैं, तब तक कई बार रिटर्न कुंजी को हिट करना होता है। एक और तरीका है कि एक टाइमआउट के लिए बस एक मिनट या तो प्रतीक्षा करें। फिर Getty लॉगिन प्रॉम्प्ट गेट्टी प्रोग्राम द्वारा स्क्रीन पर लगाया जाएगा और आप लॉग इन करने के लिए पुनः प्रयास कर सकते हैं।

8-बिट डेटा बाइट्स (प्लस समानता)

दुर्भाग्य से, agetty इस समानता का पता नहीं लगा सकता है।1 999 के अंत तक समानता के ऑटो-डिटेक्शन को अक्षम करने के लिए इसका कोई विकल्प नहीं है और इस प्रकार गलत समानता का पता लगाएगा। नतीजा यह है कि लॉगिन प्रक्रिया खराब हो जाएगी और समानता गलत हो जाएगी। इस प्रकार समानता के साथ 8-बिट डेटा बाइट्स का उपयोग करने की कोशिश करने के लिए व्यवहार्य प्रतीत नहीं होता है।

गेट्टी (getty_ps का हिस्सा)

(इनमें से अधिकांश ग्रेग हैंकिन द्वारा पुराने सीरियल-हाउटो से है)इस गेटी के लिए किसी को कॉन्फ़िगरेशन फ़ाइल में प्रविष्टियां डालने की आवश्यकता होती है और इसमें एक एंट्री जोड़नी पड़ती है / Etc / inittab। यहां आपके टर्मिनल के लिए उपयोग करने के लिए कुछ उदाहरण प्रविष्टियां दी गई हैं जिन्हें आपने कॉन्फ़िगरेशन फ़ाइल में रखा है / Etc / gettydefs.

ध्यान दें कि डीटी 38400, डीटी 1 9 200, इत्यादि सिर्फ लेबल हैं और आप वही होना चाहिए जो आप उपयोग करते हैं / Etc / inittab.

यदि आप चाहते हैं, तो आप कर सकते हैं गेट्टी लॉगिन बैनर में दिलचस्प चीजें मुद्रित करें। मेरे उदाहरणों में, मेरे पास सिस्टम का नाम और सीरियल लाइन मुद्रित है। आप अन्य चीजें जोड़ सकते हैं: ब्लॉकक्वाट

छाया = हाँ

जब आप संपादन कर लेंगे / Etc / gettydefs, आप यह सत्यापित कर सकते हैं कि सिंटैक्स सही कर रहा है:

सुनिश्चित करें कि कोई दूसरा नहीं है गेट्टी या uugetty सीरियल पोर्ट के लिए कॉन्फ़िगरेशन फ़ाइल जो आपका टर्मिनल इस तरह से जुड़ा हुआ है (/etc/default/{uu}getty.ttySएन या /etc/conf.{uu}getty.ttySएन), क्योंकि यह शायद चलने में हस्तक्षेप करेगा गेट्टी टर्मिनल पर अगर वे निकलते हैं तो ऐसी विरोधाभासी फाइलों को हटा दें।

अपना संपादित करें / Etc / inittab चलाने के लिए फ़ाइल गेट्टी धारावाहिक बंदरगाह पर (आपके पर्यावरण के लिए सही जानकारी में प्रतिस्थापन - पोर्ट, गति, और डिफ़ॉल्ट टर्मिनल प्रकार):

इस बिंदु पर, आपको अपने टर्मिनल पर एक लॉगिन प्रॉम्प्ट देखना चाहिए। टर्मिनल का ध्यान पाने के लिए आपको वापसी पर पड़ना पड़ सकता है।

mgetty

"एम" मॉडेम के लिए खड़ा है। यह प्रोग्राम मुख्य रूप से मॉडेम के लिए है और 2000 के मध्य तक इसे टेक्स्ट टर्मिनलों के लिए उपयोग करने के लिए पुन: कंपाइलिंग की आवश्यकता होगी (जब तक कि आप हार्डवेयर प्रवाह नियंत्रण का उपयोग न करें - और आमतौर पर हाथ से बने केबल की आवश्यकता होती है)। सीधे जुड़े टर्मिनलों के लिए प्रलेखन के लिए मैन्युअल के "प्रत्यक्ष" खंड देखें: mgetty.texi।

की आखिरी पंक्तियों को देखो /etc/mgetty/mgetty.config टर्मिनल के लिए इसे कॉन्फ़िगर करने के उदाहरण के लिए। जब तक आप "टॉगल-डीटीआर नंबर" नहीं कहेंगे, तब तक यह सोचा जाएगा कि आपके पास एक मॉडेम है और पीसी पर डीटीआर पिन ड्रॉप (नकारात्मक) गैर-मौजूद मॉडेम को रीसेट करने के व्यर्थ प्रयास में है। अन्य गेटिस के विपरीत, mgetty खुद को एक टर्मिनल से संलग्न नहीं करेगा जब तक कोई उस टर्मिनल की कोई भी कुंजी हिट नहीं करता है, तो आप एक देखेंगे? टर्मिनल के लिए चोटी या ps जब तक ऐसा नहीं होता है। लॉग इन / Var / log / mgetty / कुछ चेतावनी संदेश दिखा सकते हैं जो केवल उन मॉडेम पर लागू होते हैं जिन्हें आप अनदेखा कर सकते हैं।

यहां दी गई सरल रेखा का एक उदाहरण यहां दिया गया है / Etc / inittab: