Pas d'écran, pas de chocolat

Niveau : Star Star Star Empty Empty
Résumé : Xvnc

Sup­po­sons une machine sur laquelle vous n’avez pas d’écran. Vous vou­driez tout de même pou­voir y accé­der en mode gra­phi­que. Pour ma part, il s’agit de met­tre en place une machine auto­nome, qui ser­vi­rait à dif­fu­ser la musi­que sur mon ampli. Pas de place pour l’écran, le pro­blème, il faut bien la com­man­der un peu de temps en temps.

Pour cela il y a plu­sieurs solu­tions

Solu­tion A

Dans le cas de dif­fu­sion de musi­que, il est pos­si­ble de trou­ver un sys­tème pure­ment ser­veur per­met­tant d’être com­mandé par une inter­face web ou un client en ligne de com­mande. Je pense à des plu­gins spé­ci­fi­ques à des client habi­tuels ou à des ser­veurs comme mpd sans inter­face gra­phi­que.

Incon­vé­nient, l’inter­face est assez peu intui­tive et néces­site une cer­taine bidouille pour être acces­si­ble par tous. De plus on passe du temps pour fina­le­ment ne faire que de la musi­que (si on veut que la machine fasse aussi alarme, il faut repar­tir dans la bidouille.

Solu­tion B

Un solu­tion très unixienne avec inter­face gra­phi­que serait de met­tre en place XDMCP sur le ser­vice de con­nexion (gdm, kdm …). Bonne solu­tion, même pour les clients win­dows puis­que xming per­met de faire ser­veur X sous win­dows.

Cette solu­tion nous per­met­trait de dis­po­ser de tous les avan­ta­ges d’un bureau inté­gré, par exem­ple, régler le son, con­fi­gu­rer une radio … Par con­tre, cette solu­tion a l’incon­vé­nient de ren­dre la machine con­cer­née non auto­nome. A la moin­dre décon­nexion, pof, plus de musi­que. Mais expli­quons quand même la solu­tion briè­ve­ment.

  • Acti­vez XDMCP sur votre *dm
    • gdm : dans /etc/gdm/gdm.conf
    • kdm : dans /etc/kde*/kdm/kdmrc
##########­MA­CRO#0#
  • Con­nec­tez vous avec votre ser­veur X
    • X86 ou Xorg :
##########­MA­CRO#1#


** Xming : xlaunch / “One WIn­dow” / “Open ses­sion via XDMCP” / “Con­nect to Host”

Solu­tion C

Pour pou­voir sur­vi­vre aux décon­nexions, il existe un pro­to­cole vnc. On peut uti­li­ser vnc de deux façons :

  • sur un ser­veur X exis­tant auquel on est con­necté
  • sur un ser­veur X vir­tuel qui ne fait aucun affi­chage réel, juste ser­veur X et ser­veur vnc

Dans le pre­mier cas on uti­li­sera x11vnc, qu’il est pos­si­ble de lan­cer une fois con­necté en tant qu’uti­li­sa­teur. Mais cela ne cor­res­pond pas trop à notre cas d’usage.

Dans le Deuxième cas, il suf­fit de dire à notre *dm de ne pas lan­cer de ser­veur X nor­mal, mais un ser­veur vnc. Pour gdm, il suf­fit de modi­fier 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 lais­ser gdm lan­cer un ser­veur X habi­tuel en plus d’un ser­veur Xvnc (met­tre un 1 à la place du 0).

Pour kdm, (atten­tion, pas testé) :

[X-:*-Core]
ServerCmd=/usr/bin/Xvnc
ServerArgsLocal="-PasswordFile=/root/.vnc/passwd"

Notez le sto­ckage du mot de passe dans /root/.vnc/passwd, vous le met­tez où vous vou­lez, mais c’est la qu’il est créé par la com­mande ser­vant à créer le fichier :

$ vncpasswd

Très bien, mais le ser­veur ne ser­vant pas à plu­sieurs per­son­nes et sachant qu’il n’est acces­si­ble que sur le réseau local, on vou­drais ne pas avoir à pas­ser l’étape de con­nexion.

Solu­tion D

Le sys­tème D con­siste donc à se pas­ser du dm. Ma solu­tion (spé­ci­fi­que à mon cas musi­cal, mais sim­ple à répé­ter) est de me faire un script qui lan­cera tout ça au démar­rage (j’éteins gdm plu­tôt que de le con­fi­gu­rer pour se con­nec­ter auto­ma­ti­que­ment).

Au pas­sage, j’ai créé un uti­li­sa­teur music, mais vous vous en fou­tez.

Chez mon nou­vel uti­li­sa­teur, j’ai créé le script sui­vant :

#!/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 trou­ver com­ment lan­cer l’envi­ron­ne­ment de bureau qui vous inté­resse, il suf­fit de lire les réper­toi­res /usr/share/xses­sions et /etc/dm/Ses­sions, ils con­tien­nent la liste des bureaux con­nus des *dm. Une fois le bon fichier trou­vén repé­rez la ligne Exec= et vous aurez la com­mande.

Et astuce pour le polish, on met ce script dans un cron de l’uti­li­sa­teur con­cerné pour qu’il se lance auto­ma­ti­que­ment au démar­rage de la machine :

$ crontab -e
# m h  dom mon dow   command
# Notez le @reboot magique
@reboot /home/music/script.sh

Voila, il suf­fit de se con­nec­ter avec un client vnc. On peut trou­ver vnc­vie­wer sous linux et sous win­dows. On peut avoir plu­sieurs uti­li­sa­teurs, et on peut avoir une uti­li­sa­tion sim­ple du sys­tème.

Vus : 242
Publié par Peck : 100