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.
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.
Réponses:
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.
File existslorsque je fais le lien symbolique
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.servicepour l'écraser.
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.
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')
/sbin/agetty, il convient donc de vérifier d'abord le /etc/systemd/system/getty.target.wants/getty@tty1.servicefichier d' origine .