Version du gestionnaire d'affichage (plus facile)
C'est généralement le rôle du gestionnaire d'affichage d'afficher un écran de connexion et de démarrer une session utilisateur. Si vous en aviez un, ce serait un chemin de moindre résistance de le configurer pour l'autologation. Il s'agit d'une solution largement utilisée et probablement bien testée et supportée. Vous devrez le configurer pour 1) l'authentification automatique et 2) l'utilisation de votre session préférée, mais les deux sont typiquement supportés par les gestionnaires d'affichage habituels supportés par votre linux (lightdm, xdm, etc ).
Sur ubuntu 16.04 (non-serveur), j'ai le résultat suivant dans /etc/lightdm/lightdm.conf
[Seat:*]
autologin-guest=false
autologin-user=xyz
autologin-user-timeout=0
Vous devez installer et éventuellement activer lightdm.
apt-get install lightdm
Lightdm est le gestionnaire d'affichage par défaut d'ubuntu. Il n'est pas installé par défaut sur l'édition serveur d'ubuntu et vous devrez installer plusieurs paquets, donc la méthode manuelle plus difficile sera nécessaire si vous souhaitez les éviter.
La façon de mettre en place une connexion graphique sur un serveur ubuntu est mieux décrite ici. https://askubuntu.com/questions/53822/how-do-you-run-ubuntu-server-with-a-gui#788193 après quoi vous pouvez configurer l'autologin si vous le souhaitez.
Vous pouvez sélectionner le type de session que vous préférez (openbox), en définissant les paramètres suivants /home/username/.dmrc
à quelque chose comme
[Desktop]
Session=openbox
Manuel (startx)
Je ne sais pas ce qui est exactement nécessaire pour lancer une session x startx au démarrage, mais je suggère de décomposer le problème en un processus étape par étape :
-
vous dites que votre startx fonctionne en tant que root. Ce serait bien de vérifier que vous pouvez vous connecter en tant que root sur une console et démarrer une session x avec :
root@xyz # startx
-
Assurez-vous que vous pouvez démarrer une session X lorsque vous êtes connecté en tant qu'utilisateur privilégié.
myuser@xyz $ startx
-
Assurez-vous que vous pouvez démarrer une session X en tant qu'utilisateur préféré, mais en étant connecté en tant que root, en vous basant sur la commande précédente :
a) Utilisez quelque chose comme :
root@xyz # su -l myuser -c startx
citez la commande si vous avez besoin de plusieurs arguments :
root@xyz # su -l myuser -c "startx arg1 arg2 .."
b) Vous pouvez sauter cette étape si vous définissez l'utilisateur dans l'unité systemd.
-
Faites-le démarrer automatiquement.
a) Ajouter la commande (3a) à /etc/rc.local
et redémarrer.
b) Utiliser une unité systemd comme vous l'avez décrit, avec le jeu de commandes selon 2/3. Pour tester, vous pouvez utiliser quelque chose comme
root@xyz # systemctl stop autologin # make sure to reset service
root@xyz # systemctl daemon-reload # don't know if needed
root@xyz # systemctl start autologin
Une fois que cela fonctionne, vous devrez peut-être l'activer pour un démarrage automatique ou tout ce dont systemd a besoin (je ne suis pas un expert).
root@xyz # systemctl enable autologin