Bagaimana saya bisa mengkonfigurasi systemd untuk secara otomatis login saya ke lingkungan desktop saya, lebih disukai tanpa menggunakan login manager? Saya menggunakan Arch.
Bagaimana saya bisa mengkonfigurasi systemd untuk secara otomatis login saya ke lingkungan desktop saya, lebih disukai tanpa menggunakan login manager? Saya menggunakan Arch.
Jawaban:
Ini dijelaskan dalam Arch Wiki :
Buat file layanan baru yang mirip
getty@.servicedengan menyalinnya/etc/systemd/system/cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Ini pada dasarnya menyalin yang sudah ada getty@.serviceke file baru autologin@.serviceyang 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 autologin@.servicemenghubungkannya dengan layanan getty untuk tty yang ingin Anda autologin, untuk examply untuk tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
Hingga kini, ini masih sama dengan getty@.servicefile biasa , tetapi bagian terpenting adalah memodifikasi autologin@.serviceagar 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 getty@.servicedan autologin@.servicehanya -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 getty@tty1.service
(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.
File existsketika saya melakukan symlink
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceuntuk menimpanya.
Secara langsung memodifikasi file /etc/systemd/system/getty.target.wants/getty@tty1.service(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 getty@tty1.serviceke yang ttyingin Anda masuki.
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/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/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')
/sbin/agetty, jadi ada baiknya memeriksa /etc/systemd/system/getty.target.wants/getty@tty1.servicefile asli terlebih dahulu.