Bagaimana saya bisa autologin ke desktop dengan systemd?

20

Bagaimana saya bisa mengkonfigurasi systemd untuk secara otomatis login saya ke lingkungan desktop saya, lebih disukai tanpa menggunakan login manager? Saya menggunakan Arch.

fhucho
sumber
Manajer login mana yang Anda gunakan? Beberapa (GDM, KDM, iirc, mungkin lebih) sudah mendukung autologin sehingga Anda hanya perlu mengaktifkan layanan untuk mereka.
Wieland
Saya saat ini menggunakan SLIM dan dapat dikonfigurasi untuk autologin, tetapi tanpa manajer tampilan proses booting akan lebih cepat dan lebih flickerless :)
fhucho
Oh, saya salah membaca pertanyaan Anda.
Wieland

Jawaban:

22

Ini dijelaskan dalam Arch Wiki :

Buat file layanan baru yang mirip [email protected]dengan menyalinnya/etc/systemd/system/

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

Ini pada dasarnya menyalin yang sudah ada [email protected]ke file baru [email protected]yang dapat dimodifikasi secara bebas. Ini disalin ke /etc/systemd/systemkarena di situlah file unit khusus situs disimpan. /usr/lib/systemd/systemberisi file unit yang disediakan oleh paket sehingga Anda tidak boleh mengubah apa pun di sana.

Anda kemudian harus [email protected]menghubungkannya dengan layanan getty untuk tty yang ingin Anda autologin, untuk examply untuk tty1:

ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Hingga kini, ini masih sama dengan [email protected]file biasa , tetapi bagian terpenting adalah memodifikasi [email protected]agar Anda benar-benar masuk secara otomatis. Untuk melakukan itu, Anda hanya perlu mengubah ExecStartbaris untuk membaca

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

Perbedaan antara ExecStartbaris [email protected]dan [email protected]hanya -a USERNAMEyang memberitahu agetty untuk login pengguna dengan nama pengguna USERNAME secara otomatis.

Sekarang Anda hanya perlu memberi tahu systemd untuk memuat ulang file daemonnya dan memulai layanan:

systemctl daemon-reload
systemctl start [email protected]

(Saya tidak yakin apakah layanan akan mulai dengan benar jika Anda sudah masuk pada tty1, cara paling aman adalah dengan hanya reboot daripada memulai layanan).

Jika Anda ingin memulai X secara otomatis, masukkan cuplikan berikut ke ~/.bash_profile(diambil dari wiki lagi):

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

Anda harus memodifikasi Anda ~/.xinitrcuntuk memulai lingkungan desktop Anda, bagaimana melakukannya tergantung pada DE dan mungkin dijelaskan dalam Arch wiki juga.

Wieland
sumber
Apa agetty arg% I?
Edward Anderson
Ada apa dengan `charachter di akhir? Apakah itu dibutuhkan? Apa artinya?
rien333
@ rien333 Tidak perlu, saya sudah menghapusnya dari jawaban.
Wieland
2
Saya mendapatkan kesalahan File existsketika saya melakukan symlink
Post Self
gunakan ln -sf /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]untuk menimpanya.
Manuel Schmitzberger
5

Secara langsung memodifikasi file /etc/systemd/system/getty.target.wants/[email protected](yang merupakan symlink ke /lib/systemd/system/getty@service):

Tambahkan -a/--autologin USERNAMEke baris:

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

Karenanya:

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

Anda juga dapat menghapus -o '-p -- \\u'(seperti yang ada pada instalasi Arch saat ini) karena ini akan memulai login USERNAMEtetapi masih meminta kata sandi.

Setelah reboot, Anda akan masuk secara otomatis.

Ps Ubah nama file [email protected]ke yang ttyingin Anda masuki.

Zac
sumber
Catatan untuk kejelasan: jika itu adalah symlink, ganti symlink dengan file baru, dan edit file baru itu.
Edward Anderson
1

IMO, Arch Wiki saat ini merekomendasikan solusi yang lebih sederhana:

Jalankan helper ( systemctl edit getty@tty1) atau lakukan apa yang saya lakukan secara manual:

mkdir -p /etc/systemd/system/[email protected]/
touch /etc/systemd/system/[email protected]/override.conf

Teks yang ingin Anda masukkan (dengan salah satu metode) adalah ( pastikan untuk mengubah nama pengguna dengan tepat ):

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

CATATAN : Baris kosong itu penting! (memang aku tidak yakin mengapa ...)

Sekarang, restart ( shutdown -r 0) dan sesuatu yang ... login: username (automatic login)akan terjadi akan terjadi di tempat yang sebelumnya diblokir menunggu input nama pengguna / kata sandi


Setelah reboot, dan masuk otomatis, jika Anda seperti saya dan ingin SSH masuk ke sistem ini sekarang, Anda mungkin perlu menjalankan:

systemctl enable sshd.service

Yang akan membuat symlink (mis. ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')

jakebrinkmann
sumber
Baris kosong pertama-tama akan menghapus entri ExecStart, sedangkan baris berikutnya akan memperkenalkan perintah exec baru. Juga patut dicatat bahwa pada beberapa sistem (Ubuntu) agetty executable dapat ditemukan /sbin/agetty, jadi ada baiknya memeriksa /etc/systemd/system/getty.target.wants/[email protected]file asli terlebih dahulu.
platforma