Systemd ile masaüstüne nasıl otomatik olarak giriş yapabilirim?


20

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.


Hangi giriş yöneticisini kullanıyorsunuz? Bazıları (GDM, KDM, iirc, belki daha fazlası) zaten otomatik oturum açmayı desteklediğinden, yalnızca hizmeti onlar için etkinleştirmeniz gerekir.
Wieland

Şu anda SLiM kullanıyorum ve otomatik oturum açmak için yapılandırılabilir, ancak bir ekran yöneticisi olmadan önyükleme işlemi daha hızlı ve daha
titiz olur

Oh, sorunuzu yanlış okudum.
Wieland

Yanıtlar:


22

Bu Arch Wiki'de açıklanmaktadır :

Şuna getty@.servicekopyalayarak 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@.serviceolan yeni bir dosyaya autologin@.serviceserbestç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/systempaketler tarafından sağlanan birim dosyaları içerir, böylece orada hiçbir şeyi değiştirmemeniz gerekir.

Daha sonra, bunu autologin@.serviceotomatik 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@.servicedosyayla aynıdır , ancak en önemli kısım, autologin@.servicesizi otomatik olarak oturum açmak için değiştirmektir . Bunu yapmak için, sadece ExecStartokunacak satırı değiştirmeniz gerekir

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

Arasındaki fark ExecStarthat getty@.serviceve autologin@.servicesadece -a USERNAMEotomatik 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

~/.xinitrcMasaü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.


% İ'nin argüman argümanı nedir?
Edward Anderson

Sonunda `` karakter '' ne oldu? Bu gerekli mi? Bu ne demek?
rien333

@ rien333 Gereksiz, cevaptan kaldırdım.
Wieland

2
File existsSymlink yaptığımda hata alıyorum
Post Self

ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceüzerine yazmak için kullanın .
Manuel Schmitzberger

5

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ğı, USERNAMEancak 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.serviceiçin ttyiçine giriş yapmak istiyorum.


Netlik için not: Bir sembolik işaretse, sembolik bağlantıyı yeni bir dosyayla değiştirin ve o yeni dosyayı düzenleyin.
Edward Anderson

1

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')


Boş satır ilk olarak ExecStart girişini temizlerken, sonraki satır yeni bir exec komutu sunacaktır. Ayrıca bazı sistemlerde (Ubuntu) çalıştırılabilir yürütülebilir dosyanın bulunabileceğini /sbin/agettybelirtmek gerekir, bu yüzden önce orijinal /etc/systemd/system/getty.target.wants/getty@tty1.servicedosyayı kontrol etmeye değer .
platforma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.