परिचय एवं पृष्ठभूमि
जब भी कोई लिनक्स सिस्टम बूट होता है, तो स्क्रीन पर सबसे पहले दिखाई देने वाला ’login:’ इंटरफ़ेस वस्तुतः बैकग्राउंड में चल रहे agetty डेमन का परिणाम होता है। जटिल मैन्युअल दस्तावेज़ों में उलझने के बजाय, इस गाइड में हम agetty की बुनियादी वास्तुकला, systemd के साथ इसका तालमेल, /etc/issue के उपयोग से कस्टमाइज़्ड लॉगिन बैनर तैयार करने और स्वतः लॉगिन (auto-login) जैसी उपयोगी व्यवस्थाओं को व्यावहारिक स्तर पर लागू करना सीखेंगे।
agetty की बुनियादी वास्तुकला और systemd सर्विस की जांच
सबसे पहले यह पुष्टि करते हैं कि हमारे ऑपरेटिंग सिस्टम में agetty बाइनरी किस डायरेक्टरी में स्थापित है। इसके लिए which agetty कमांड निष्पादित करेंगे।

सिस्टम आर्किटेक्चर के दृष्टिकोण से, agetty वर्चुअल टर्मिनल या सीरियल इंटरफ़ेस को सक्रिय करता है, टर्मिनल पैरामीटर्स सेट करता है और यूज़र ऑथेंटिकेशन के लिए लॉगिन प्रॉम्प्ट प्रस्तुत करता है। इसके संस्करण और समर्थित फीचर्स की समीक्षा करने के लिए सहायता विकल्प देखा जा सकता है।
⚙️ [महत्वपूर्ण कमांड-लाइन ऑप्शन्स]
-a, --autologin : क्रेडेंशियल दर्ज किए बिना सीधे निर्धारित यूज़र अकाउंट में सेशन शुरू करने की सुविधा देता है।-J, --noclear : लॉगिन स्क्रीन आने पर टर्मिनल स्क्रीन को वाइप किए बिना पुराने बूट लॉग्स को स्क्रीन पर बनाए रखता है।-f, --issue-file : लॉगिन प्रॉम्प्ट से ठीक पहले स्क्रीन पर प्रदर्शित होने वाली सूचना फ़ाइल (issue) का वैकल्पिक पाथ सेट करता है।-o, --login-options : ऑथेंटिकेशन हैंडल करने वाले निचले स्तर के login यूटिलिटी को अतिरिक्त आर्गुमेंट्स भेजने के लिए काम आता है।-n, --skip-login : यूज़रनेम इनपुट की प्रतीक्षा किए बिना सीधे प्रमाणीकरण के अगले चरण को ट्रिगर करता है।-8, --8bits : टर्मिनल को 8-बिट कैरेक्टर डेटा प्रोसेस करने के अनुकूल बनाता है।

पहले वर्चुअल कंसोल (tty1) के लिए जिम्मेदार systemd इंस्टेंस की वर्तमान स्थिति जांचने के उद्देश्य से systemctl status getty@tty1.service --no-pager रन किया जाता है।
इस आउटपुट से स्पष्ट होता है कि बैकग्राउंड में agetty एक्टिव स्टेट में सक्रिय है और यूज़र इनपुट की प्रतीक्षा कर रहा है।

/etc/issue के जरिए कंसोल के लिए कस्टम वेलकम बैनर तैयार करना
डिफ़ॉल्ट रूप से कंसोल पर दिखने वाले वेलकम मैसेज को देखने के लिए हम cat /etc/issue चलाकर मौजूदा फ़ाइल का विश्लेषण करते हैं।
इस फ़ाइल में प्रयुक्त \n टोकन सिस्टम के होस्टनेम का प्रतिनिधित्व करता है, जबकि \l एक्टिव टर्मिनल लाइन (tty) संख्या को डायनेमिकली प्रिंट करने वाला agetty एस्केप कोड है।

कॉन्फ़िगरेशन में कोई भी नया बदलाव करने से पहले मूल फ़ाइल को सुरक्षित रखना आवश्यक है। इसलिए sudo cp /etc/issue /etc/issue.bak चलाकर बैकअप कॉपी बना लेते हैं।

अब टर्मिनल नंबर और ओएस डिटेल्स को आकर्षक ढंग से प्रस्तुत करने हेतु एक नया टेम्पलेट तैयार करते हैं: echo -e '\n=== Welcome to Ubuntu Server (tty: \l) ===\nOS: \s \r (\m) | Time: \t\n' | sudo tee /tmp/custom_issue।
इस स्ट्रिंग में कंसोल पहचानकर्ता (\l), ऑपरेटिंग सिस्टम का नाम (\s), कर्नेल रिलीज (\r), आर्किटेक्चर टाइप (\m) तथा मौजूदा टाइमस्टैम्प (\t) जैसे विशेष मैक्रोज़ शामिल हैं।

तैयार किए गए टेम्पलेट की सिंटैक्स सटीकता जांचने के लिए cat /tmp/custom_issue के जरिए फ़ाइल की सामग्री को कंसोल पर दोबारा प्रिंट करके देखते हैं।

agetty के प्रमुख पैरामीटर्स और systemd ड्रॉप-इन ओवरराइड का व्यावहारिक उपयोग
tty1 के लिए काम करने वाली मूल सर्विस परिभाषा को समझने के लिए systemctl cat getty@tty1.service कमांड निष्पादित की जाती है।
इससे हमें /usr/lib/systemd/system/getty@.service टेम्पलेट के अंदर कॉन्फ़िगर किए गए मानक निष्पादन पर्यावरण और ExecStart लाइन की संरचना दिखाई देती है।

पैकेज द्वारा दी गई कोर फ़ाइलों को सीधे संशोधित करने के जोखिम से बचने के लिए, ड्रॉप-इन डायरेक्टरी पद्धति अपनाना सबसे सुरक्षित है। इसके लिए sudo mkdir -p /etc/systemd/system/getty@tty1.service.d डायरेक्टरी बनाते हैं।

बूट स्क्रीन को साफ होने से रोकने के लिए --noclear फ्लैग और नई बॉड रेट सेटिंग्स जोड़ने हेतु echo -e '[Service]\nExecStart=\nExecStart=-/sbin/agetty -o "-p -- \\u" --noclear -s %I 115200,38400,9600 vt220' | sudo tee /etc/systemd/system/getty@tty1.service.d/noclear.conf रन करते हैं।
यहाँ पहले खाली ExecStart= देकर मूल कमांड को रीसेट किया जाता है और उसके तुरंत बाद हमारे कस्टमाइज़्ड ऑप्शन्स के साथ नई agetty कमांड परिभाषित की जाती है।

नए ड्रॉप-इन कॉन्फ़िगरेशन को systemd इंजन में लोड करने के लिए systemctl daemon-reload चलाना अनिवार्य है।

हमारे ओवरराइड नियम यूनिट में सफलतापूर्वक मर्ज हुए हैं या नहीं, यह सत्यापित करने के लिए पुनः systemctl cat getty@tty1.service चलाते हैं।
परिणाम के निचले हिस्से में noclear.conf का जुड़ना यह सिद्ध करता है कि कॉन्फ़िगरेशन सही ढंग से प्रभावी हो चुका है।

सीरियल कंसोल और एक्टिव TTY सेशन्स की निगरानी करना
वर्तमान परिवेश में कौन-कौन से कंसोल इंस्टेंसेस सक्रिय रूप से कार्य कर रहे हैं, इसकी पड़ताल systemctl list-units --type=service 'getty@*' --no-pager के माध्यम से की जा सकती है।
इससे यह स्पष्ट होता है कि tty1 इंटरफ़ेस को संभालने वाला getty@tty1.service पूरी तरह सुचारू अवस्था में चल रहा है।

क्लाउड एनवायरनमेंट, वीएम या एम्बेडेड हार्डवेयर में इस्तेमाल होने वाले सीरियल इंटरफ़ेस से जुड़े यूनिट फाइलों का स्टेटस देखने के लिए systemctl list-unit-files 'serial-getty*' --no-pager का उपयोग किया जाता है।
यहाँ हम देख सकते हैं कि serial-getty@.service टेम्प्लेट सिस्टम पर मौजूद तो है, किंतु वर्तमान में निष्क्रिय (disabled) अवस्था में है।

सिस्टम में इस वक्त लॉगिन किए हुए यूज़र्स और उनके संबंधित टर्मिनल्स (TTY) की पूरी जानकारी प्राप्त करने के लिए w कमांड अत्यंत उपयोगी है।
इसके आउटपुट से न केवल लॉगिन सत्र और उनके TTY असाइनमेंट का पता चलता है, बल्कि अपटाइम और सिस्टम लोड एवरेज की तत्काल स्थिति भी सामने आ जाती है।

इस प्रकार हमने लिनक्स वर्चुअल कंसोल के आधारभूत घटक agetty के कार्यप्रणाली तंत्र से लेकर systemd ओवरराइड्स और लॉगिन कस्टमाइज़ेशन तक के प्रमुख चरणों का व्यावहारिक अभ्यास पूरा किया। कंसोल स्तर के इन कॉन्फ़िगरेशन्स पर पकड़ लिनक्स बूट प्रोसेस और टर्मिनल मैनेजमेंट को गहराई से समझने में बेहद मददगार साबित होती है।