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.

fhucho
la source
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 à [email protected]en le copiant dans/etc/systemd/system/

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

Cela copie essentiellement l'existant [email protected]dans un nouveau fichier [email protected]qui 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 [email protected]vers le service getty pour le tty sur lequel vous souhaitez vous connecter automatiquement, par exemple pour tty1:

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

Jusqu'à présent, c'est toujours le même que le [email protected]fichier habituel , mais le plus important est de modifier le [email protected]pour 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 [email protected]et [email protected]est 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 [email protected]

(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.

Wieland
la source
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/[email protected] /etc/systemd/system/getty.target.wants/[email protected]pour l'écraser.
Manuel Schmitzberger
5

Modifiez directement le fichier /etc/systemd/system/getty.target.wants/[email protected](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 [email protected]de fichier par celui auquel ttyvous souhaitez vous connecter.

Zac
la source
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/[email protected]/
touch /etc/systemd/system/[email protected]/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')

jakebrinkmann
la source
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/[email protected]fichier d' origine .
platforma