Systemd'yi, tercihen oturum açma yöneticisini kullanmadan masaüstü ortamımda otomatik olarak oturum açmam için nasıl yapılandırabilirim? Arch kullanıyorum.
Systemd'yi, tercihen oturum açma yöneticisini kullanmadan masaüstü ortamımda otomatik olarak oturum açmam için nasıl yapılandırabilirim? Arch kullanıyorum.
Yanıtlar:
Bu Arch Wiki'de açıklanmaktadır :
Şuna
getty@.service
kopyalayarak benzer yeni bir hizmet dosyası oluşturun :/etc/systemd/system/
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Bu temelde zaten var getty@.service
olan yeni bir dosyaya autologin@.service
serbestçe değiştirilebilen yeni bir dosyaya kopyalar . Şuraya kopyalanır /etc/systemd/system
çünkü siteye özgü birim dosyaları burada depolanır. /usr/lib/systemd/system
paketler tarafından sağlanan birim dosyaları içerir, böylece orada hiçbir şeyi değiştirmemeniz gerekir.
Daha sonra, bunu autologin@.service
otomatik olarak oturum açmak istediğiniz tty için getty hizmetine, örneğin tty1 için symlink etmeniz gerekir:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
Şimdiye kadar, bu her zamanki getty@.service
dosyayla aynıdır , ancak en önemli kısım, autologin@.service
sizi otomatik olarak oturum açmak için değiştirmektir . Bunu yapmak için, sadece ExecStart
okunacak satırı değiştirmeniz gerekir
ExecStart=-/sbin/agetty -a USERNAME %I 38400
Arasındaki fark ExecStart
hat getty@.service
ve autologin@.service
sadece -a USERNAME
otomatik olarak USERNAME kullanıcı ile kullanıcı giriş yapmak için agetty söyler.
Şimdi sadece systemd'ye daemon dosyalarını yeniden yüklemesini ve servisi başlatmasını söylemelisiniz:
systemctl daemon-reload
systemctl start getty@tty1.service
(Eğer zaten tty1'de oturum açtıysanız hizmetin düzgün başlayıp başlamayacağından emin değilim, en güvenli yol hizmeti başlatmak yerine sadece yeniden başlatmaktır).
Daha sonra X'i otomatik olarak başlatmak istiyorsanız, aşağıdaki snippet'i ~/.bash_profile
( wiki'den tekrar alınır) içine ekleyin :
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
~/.xinitrc
Masaüstü ortamınızı başlatmak için bunu değiştirmeniz gerekir , bunun nasıl yapılacağı DE'ye bağlıdır ve muhtemelen Arch wiki'de de açıklanmaktadır.
File exists
Symlink yaptığımda hata alıyorum
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
üzerine yazmak için kullanın .
Dosyayı doğrudan değiştirin /etc/systemd/system/getty.target.wants/getty@tty1.service
(şuna bağlı bir sembolik bağlantıdır /lib/systemd/system/getty@service
):
Satıra ekle -a/--autologin USERNAME
:
ExecStart=-/sbin/agetty --noclear %I $TERM
Dolayısıyla:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
Ayrıca, -o '-p -- \\u'
(geçerli Arch kurulumunda olduğu gibi), oturum açmayı başlatacağı, USERNAME
ancak yine de şifreyi soracağı için kaldırabilirsiniz .
Yeniden başlattıktan sonra otomatik olarak oturum açacaksınız.
Ps değiştir dosya adı getty@tty1.service
için tty
içine giriş yapmak istiyorum.
IMO, Arch Wiki şu anda çok daha basit bir çözüm önermektedir:
Yardımcıyı çalıştırın ( systemctl edit getty@tty1
) veya yaptığım şeyi manuel olarak yapın:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
Girmek istediğiniz metin (her iki yöntemle de) şöyledir ( kullanıcı adını uygun şekilde değiştirdiğinizden emin olun ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
NOT : Boş satır önemlidir! (Kuşkusuz neden olduğundan emin değilim ...)
Şimdi, restart ( shutdown -r 0
) ve ... login: username (automatic login)
daha önce kullanıcı adı / şifre girişi için beklemenin engellendiği bir şey olacak
Yeniden başlatıldıktan ve otomatik olarak oturum açtıktan sonra, benden hoşlanıyorsanız ve şimdi bu sisteme SSH eklemek istiyorsanız, muhtemelen çalıştırmanız gerekir:
systemctl enable sshd.service
Hangi sembolik yaratacaktır (örn ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'
)
/sbin/agetty
belirtmek gerekir, bu yüzden önce orijinal /etc/systemd/system/getty.target.wants/getty@tty1.service
dosyayı kontrol etmeye değer .