Pas d'écran, pas de chocolat
Niveau :
Résumé : Xvnc
Supposons une machine sur laquelle vous n’avez pas d’écran. Vous voudriez tout de même pouvoir y accéder en mode graphique. Pour ma part, il s’agit de mettre en place une machine autonome, qui servirait à diffuser la musique sur mon ampli. Pas de place pour l’écran, le problème, il faut bien la commander un peu de temps en temps.
Pour cela il y a plusieurs solutions
Solution A
Dans le cas de diffusion de musique, il est possible de trouver un système purement serveur permettant d’être commandé par une interface web ou un client en ligne de commande. Je pense à des plugins spécifiques à des client habituels ou à des serveurs comme mpd sans interface graphique.
Inconvénient, l’interface est assez peu intuitive et nécessite une certaine bidouille pour être accessible par tous. De plus on passe du temps pour finalement ne faire que de la musique (si on veut que la machine fasse aussi alarme, il faut repartir dans la bidouille.
Solution B
Un solution très unixienne avec interface graphique serait de mettre en place XDMCP sur le service de connexion (gdm, kdm …). Bonne solution, même pour les clients windows puisque xming permet de faire serveur X sous windows.
Cette solution nous permettrait de disposer de tous les avantages d’un bureau intégré, par exemple, régler le son, configurer une radio … Par contre, cette solution a l’inconvénient de rendre la machine concernée non autonome. A la moindre déconnexion, pof, plus de musique. Mais expliquons quand même la solution brièvement.
- Activez XDMCP sur votre *dm
- gdm : dans /etc/gdm/gdm.conf
- kdm : dans /etc/kde*/kdm/kdmrc
- Connectez vous avec votre serveur X
- X86 ou Xorg :
** Xming : xlaunch / “One WIndow” / “Open session via XDMCP” / “Connect to Host”
Solution C
Pour pouvoir survivre aux déconnexions, il existe un protocole vnc. On peut utiliser vnc de deux façons :
- sur un serveur X existant auquel on est connecté
- sur un serveur X virtuel qui ne fait aucun affichage réel, juste serveur X et serveur vnc
Dans le premier cas on utilisera x11vnc, qu’il est possible de lancer une fois connecté en tant qu’utilisateur. Mais cela ne correspond pas trop à notre cas d’usage.
Dans le Deuxième cas, il suffit de dire à notre *dm de ne pas lancer de serveur X normal, mais un serveur vnc. Pour gdm, il suffit de modifier gdm.conf :
[daemon] # pour éviter les paramètre incompris de Xvnc VTAllocation=false [servers] # liste des serveur à lancer 0=vnc device=/dev/console [server-vnc] # définition d'un serveur X utilisant directement vnc name=vnc server command=/usr/bin/Xvnc -PasswordFile=/root/.vnc/passwd -audit 0 flexible=true
Notez que rien ne vous empêche de laisser gdm lancer un serveur X habituel en plus d’un serveur Xvnc (mettre un 1 à la place du 0).
Pour kdm, (attention, pas testé) :
[X-:*-Core] ServerCmd=/usr/bin/Xvnc ServerArgsLocal="-PasswordFile=/root/.vnc/passwd"
Notez le stockage du mot de passe dans /root/.vnc/passwd, vous le mettez où vous voulez, mais c’est la qu’il est créé par la commande servant à créer le fichier :
$ vncpasswd
Très bien, mais le serveur ne servant pas à plusieurs personnes et sachant qu’il n’est accessible que sur le réseau local, on voudrais ne pas avoir à passer l’étape de connexion.
Solution D
Le système D consiste donc à se passer du dm. Ma solution (spécifique à mon cas musical, mais simple à répéter) est de me faire un script qui lancera tout ça au démarrage (j’éteins gdm plutôt que de le configurer pour se connecter automatiquement).
Au passage, j’ai créé un utilisateur music, mais vous vous en foutez.
Chez mon nouvel utilisateur, j’ai créé le script suivant :
#!/bin/sh # -geometry : un serveur X avec des dimensions satisfaisantes pour la plupart des utilisateurs # -AlwaysShared : forcer le partage du serveur lorsque plusieurs utilisateur se connectent # -PasswordFile=/home/music/.vnc/passwd : à remplacer par "-SecurityTypes None" # pour les fous qui ne veulent aucun mot de passe Xvnc -geometry 1000x700 -AlwaysShared -SecurityTypes None -audit 0 :0 & sleep 1 export DISPLAY=:0 # environnement de bureau à lancer startxfce4 & sleep 1 # on avertit le quidam dans la pièce qu'on est prêt (30ms, 600hz) beep -l 300 -f 600
Pour trouver comment lancer l’environnement de bureau qui vous intéresse, il suffit de lire les répertoires /usr/share/xsessions et /etc/dm/Sessions, ils contiennent la liste des bureaux connus des *dm. Une fois le bon fichier trouvén repérez la ligne Exec= et vous aurez la commande.
Et astuce pour le polish, on met ce script dans un cron de l’utilisateur concerné pour qu’il se lance automatiquement au démarrage de la machine :
$ crontab -e # m h dom mon dow command # Notez le @reboot magique @reboot /home/music/script.sh
Voila, il suffit de se connecter avec un client vnc. On peut trouver vncviewer sous linux et sous windows. On peut avoir plusieurs utilisateurs, et on peut avoir une utilisation simple du système.