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@.service
en le copiant dans/etc/systemd/system/
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Cela copie essentiellement l'existant getty@.service
dans un nouveau fichier autologin@.service
qui peut être librement modifié. Il est copié /etc/systemd/system
car c'est là que les fichiers d'unité spécifiques au site sont stockés. /usr/lib/systemd/system
contient des fichiers d'unité fournis par les packages, vous ne devez donc rien y changer.
Vous devrez ensuite créer un lien symbolique autologin@.service
vers 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@.service
fichier habituel , mais le plus important est de modifier le autologin@.service
pour vous connecter automatiquement. Pour ce faire, il suffit de changer la ExecStart
ligne pour lire
ExecStart=-/sbin/agetty -a USERNAME %I 38400
La différence entre la ExecStart
ligne getty@.service
et autologin@.service
est uniquement celle -a USERNAME
qui 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 ~/.xinitrc
pour démarrer votre environnement de bureau, comment cela dépend du DE et est probablement aussi décrit dans le wiki Arch.
File exists
lorsque je fais le lien symbolique
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
pour 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 USERNAME
mais demandera toujours le mot de passe.
Après le redémarrage, vous serez connecté automatiquement.
Ps Remplacez le nom getty@tty1.service
de fichier par celui auquel tty
vous 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.service
fichier d' origine .