मैं सिस्टमलैड के साथ डेस्कटॉप पर ऑटोलॉग कैसे कर सकता हूं?


20

मैं अपने डेस्कटॉप वातावरण में स्वचालित रूप से मुझे लॉग इन करने के लिए सिस्टमड को कैसे कॉन्फ़िगर कर सकता हूं, अधिमानतः लॉगिन मैनेजर का उपयोग किए बिना? मैं आर्क का उपयोग कर रहा हूं।


आप किस लॉगिन मैनेजर का उपयोग कर रहे हैं? कुछ (GDM, KDM, iirc, शायद और अधिक) पहले से ही ऑटोलॉगिन का समर्थन करते हैं, इसलिए आपको केवल उनके लिए सेवा को सक्षम करने की आवश्यकता होगी।
विलैंड जूल

मैं वर्तमान में SLiM का उपयोग कर रहा हूं और इसे ऑटोलॉगिन में कॉन्फ़िगर किया जा सकता है, लेकिन डिस्प्ले मैनेजर के बिना बूट प्रक्रिया तेज और अधिक झिलमिलाहट रहित होगी :)
fhucho

ओह, मैंने आपके सवाल को गलत बताया।
विलैंड जूल

जवाबों:


22

यह आर्क विकी में वर्णित है :

getty@.serviceइसे कॉपी करके एक नई सेवा फ़ाइल बनाएं/etc/systemd/system/

cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service

यह मूल रूप से पहले से मौजूद getty@.serviceएक नई फ़ाइल की प्रतिलिपि बनाता है autologin@.serviceजिसे स्वतंत्र रूप से संशोधित किया जा सकता है। इसे /etc/systemd/systemइसलिए कॉपी किया जाता है क्योंकि यह साइट-विशिष्ट इकाई फ़ाइलों को संग्रहीत किया जाता है। /usr/lib/systemd/systemइसमें पैकेज द्वारा प्रदान की गई इकाई फाइलें शामिल हैं ताकि आपको वहां कुछ भी बदलना न पड़े।

फिर आपको autologin@.serviceउस tty के लिए getty सेवा से जुड़ना होगा, जिस पर आप autologin चाहते हैं, tty1 के लिए जाँच के लिए:

ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service

अब तक, यह अभी भी सामान्य getty@.serviceफ़ाइल के समान है , लेकिन सबसे महत्वपूर्ण हिस्सा autologin@.serviceवास्तव में आपको स्वचालित रूप से लॉग इन करने के लिए संशोधित करना है। ऐसा करने के लिए, आपको केवल ExecStartपढ़ने के लिए लाइन बदलने की आवश्यकता है

ExecStart=-/sbin/agetty -a USERNAME %I 38400

ExecStartलाइन में getty@.serviceऔर उसके बीच का अंतर autologin@.serviceकेवल वह है -a USERNAMEजो उपयोगकर्ता को उपयोगकर्ता नाम USERNAME के ​​साथ स्वचालित रूप से लॉग इन करने के लिए agetty बताता है।

अब आपको केवल अपनी डेमॉन फ़ाइलों को फिर से लोड करने और सेवा शुरू करने के लिए सिस्टमड को बताना होगा:

systemctl daemon-reload
systemctl start getty@tty1.service

(मुझे यकीन नहीं है कि यदि आप पहले से ही tty1 पर लॉग इन हैं तो सेवा ठीक से शुरू हो जाएगी, सबसे सुरक्षित तरीका यह है कि सेवा शुरू करने के बजाय बस रिबूट करें)।

यदि आप X को स्वचालित रूप से प्रारंभ करना चाहते हैं, तो निम्न स्निपेट को अपने में डालें ~/.bash_profile( फिर से विकी से लिया गया):

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

आपको ~/.xinitrcअपने डेस्कटॉप वातावरण को शुरू करने के लिए संशोधित करना होगा , यह कैसे करना है कि डे पर निर्भर करता है और शायद आर्क विकी में भी वर्णित है।


एगेटी आर्ग% I क्या है?
एडवर्ड एंडरसन

अंत में `चरखी के साथ क्या? क्या इसकी जरूरत है? इसका क्या मतलब है?
rien333

@ rien333 यह अनावश्यक है, मैंने इसे उत्तर से हटा दिया है।
विआलैंड जूल

2
File existsसिम्लिंक करने पर मुझे त्रुटि मिलती है
पोस्ट सेल्फ

ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceइसे अधिलेखित करने के लिए उपयोग करें।
मैनुअल स्मिट्ज़बर्गर

5

फ़ाइल को सीधे संशोधित करें /etc/systemd/system/getty.target.wants/getty@tty1.service(जो एक सिमिलिंक है /lib/systemd/system/getty@service):

-a/--autologin USERNAMEलाइन में संलग्न करें :

ExecStart=-/sbin/agetty --noclear %I $TERM

इसलिये:

ExecStart=-/sbin/agetty -a USERNAME %I $TERM

आप इसे हटा भी सकते हैं -o '-p -- \\u'(जैसा कि वर्तमान आर्क इंस्टॉलेशन पर मौजूद है) क्योंकि यह लॉगिन की शुरुआत करेगा USERNAMEलेकिन फिर भी पासवर्ड मांगता है।

रिबूट करने के बाद, आप अपने आप लॉग इन हो जाएंगे।

Ps उस फ़ाइल नाम getty@tty1.serviceको बदलें जिसमें ttyआप लॉग इन करना चाहते हैं।


स्पष्टता के लिए ध्यान दें: यदि यह एक सिमलिंक है, तो सिमलिंक को एक नई फ़ाइल से बदलें और उस नई फाइल को संपादित करें।
एडवर्ड एंडरसन

1

IMO, आर्क विकी वर्तमान में बहुत सरल समाधान सुझाता है:

या तो हेल्पर चलाएं ( systemctl edit getty@tty1) या जो मैंने मैन्युअल रूप से किया था उसे करें:

mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf

वह पाठ जिसे आप दर्ज करना चाहते हैं (या तो विधि से) वह है ( उचित रूप से उपयोगकर्ता नाम बदलना सुनिश्चित करें ):

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

नोट : खाली लाइन महत्वपूर्ण है! (वास्तव में मुझे यकीन नहीं है कि क्यों ...)

अब, पुनरारंभ ( shutdown -r 0) और इसके प्रभाव के लिए कुछ ... login: username (automatic login)होगा जहां यह पहले उपयोगकर्ता नाम / पासवर्ड इनपुट की प्रतीक्षा में अवरुद्ध है


एक बार रिबूट होने के बाद, और ऑटो-लॉग इन होने पर, यदि आप मेरी तरह हैं और अब इस सिस्टम में एसएसएच करना चाहते हैं, तो आपको संभवतः चलाने की आवश्यकता है:

systemctl enable sshd.service

जो सिमलिंक बनाएगा (जैसे ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')


खाली लाइन पहले ExecStart प्रविष्टि को साफ़ करेगी, जबकि अगली पंक्ति एक नई निष्पादन कमांड को पेश करेगी। यह भी ध्यान देने योग्य है कि कुछ सिस्टम (उबंटू) पर एगेटी एक्जीक्यूटेबल में स्थित हो सकता है /sbin/agetty, इसलिए यह मूल /etc/systemd/system/getty.target.wants/getty@tty1.serviceफाइल को पहले चेक करने के लायक है ।
प्लेटफा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.