Comment puis-je me connecter automatiquement au bureau avec systemd?


20

Comment puis-je configurer systemd pour me connecter automatiquement à mon environnement de bureau, de préférence sans utiliser le gestionnaire de connexion? J'utilise Arch.


Quel gestionnaire de connexion utilisez-vous? Certains (GDM, KDM, iirc, peut-être plus) prennent déjà en charge la connexion automatique, vous n'avez donc qu'à activer le service pour eux.
Wieland

J'utilise actuellement SLiM et il peut être configuré pour se connecter automatiquement, mais sans gestionnaire d'affichage, le processus de démarrage serait plus rapide et sans scintillement :)
fhucho

Oh, j'ai mal lu votre question.
Wieland

Réponses:


22

Ceci est décrit dans l' Arch Wiki :

Créez un nouveau fichier de service similaire à getty@.serviceen le copiant dans/etc/systemd/system/

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

Cela copie essentiellement l'existant getty@.servicedans un nouveau fichier autologin@.servicequi peut être librement modifié. Il est copié /etc/systemd/systemcar c'est là que les fichiers d'unité spécifiques au site sont stockés. /usr/lib/systemd/systemcontient des fichiers d'unité fournis par les packages, vous ne devez donc rien y changer.

Vous devrez ensuite créer un lien symbolique autologin@.servicevers le service getty pour le tty sur lequel vous souhaitez vous connecter automatiquement, par exemple pour tty1:

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

Jusqu'à présent, c'est toujours le même que le getty@.servicefichier habituel , mais le plus important est de modifier le autologin@.servicepour vous connecter automatiquement. Pour ce faire, il suffit de changer la ExecStartligne pour lire

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

La différence entre la ExecStartligne getty@.serviceet autologin@.serviceest uniquement celle -a USERNAMEqui indique à agetty de connecter automatiquement l'utilisateur avec le nom d'utilisateur USERNAME.

Il ne vous reste plus qu'à dire à systemd de recharger ses fichiers démon et de démarrer le service:

systemctl daemon-reload
systemctl start getty@tty1.service

(Je ne sais pas si le service démarrera correctement si vous êtes déjà connecté sur tty1, le moyen le plus sûr est de redémarrer simplement au lieu de démarrer le service).

Si vous souhaitez ensuite démarrer automatiquement X, insérez l'extrait de code suivant dans votre ~/.bash_profile(extrait du wiki à nouveau):

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

Vous devrez modifier votre ~/.xinitrcpour démarrer votre environnement de bureau, comment cela dépend du DE et est probablement aussi décrit dans le wiki Arch.


Qu'est-ce que l'agetty arg% I?
Edward Anderson

Quoi de neuf avec le `charachter à la fin? Est-ce nécessaire? Qu'est-ce que ça veut dire?
rien333

@ rien333 Ce n'est pas nécessaire, je l'ai supprimé de la réponse.
Wieland

2
Je reçois l'erreur File existslorsque je fais le lien symbolique
Post Self

utiliser ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.servicepour l'écraser.
Manuel Schmitzberger

5

Modifiez directement le fichier /etc/systemd/system/getty.target.wants/getty@tty1.service(qui est un lien symbolique vers /lib/systemd/system/getty@service):

Ajouter -a/--autologin USERNAMEà la ligne:

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

Par conséquent:

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

Vous pouvez également supprimer -o '-p -- \\u'(comme présent sur l'installation actuelle d'Arch) car cela démarrerait la connexion USERNAMEmais demandera toujours le mot de passe.

Après le redémarrage, vous serez connecté automatiquement.

Ps Remplacez le nom getty@tty1.servicede fichier par celui auquel ttyvous souhaitez vous connecter.


Remarque pour plus de clarté: s'il s'agit d'un lien symbolique, remplacez le lien symbolique par un nouveau fichier et modifiez ce nouveau fichier.
Edward Anderson

1

IMO, l' Arch Wiki recommande actuellement une solution beaucoup plus simple:

Exécutez helper ( systemctl edit getty@tty1) ou faites ce que j'ai fait manuellement:

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

Le texte que vous souhaitez saisir (par l'une ou l'autre méthode) est ( assurez-vous de changer le nom d'utilisateur de manière appropriée ):

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

REMARQUE : la ligne vide est importante! (certes, je ne sais pas pourquoi ...)

Maintenant, redémarrez ( shutdown -r 0) et quelque chose à l'effet ... login: username (automatic login)se produira là où il a précédemment bloqué l'attente de la saisie du nom d'utilisateur / mot de passe


Une fois redémarré et connecté automatiquement, si vous êtes comme moi et que vous souhaitez vous connecter à ce système maintenant, vous devez probablement exécuter:

systemctl enable sshd.service

Qui va créer le lien symbolique (par exemple ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')


La ligne vide effacera d'abord l'entrée ExecStart, tandis que la ligne suivante introduira une nouvelle commande exec. Il convient également de noter que sur certains systèmes (Ubuntu), l'exécutable agetty peut être localisé /sbin/agetty, il convient donc de vérifier d'abord le /etc/systemd/system/getty.target.wants/getty@tty1.servicefichier d' origine .
platforma
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.