Installer un serveur de Terminaux X11 sur une machine sans écran
Article écrit par Christophe Nowicki et Wikisé par Arnaud Fontaine.
La version originale du document se trouve à cette adresse : http://etud.epita.fr/~nowick_c/publications/xheadless/index.html
Cet article explique comment mettre en place un serveur de Terminaux X sur une machine sans écran à l'aide d'un serveur X virtuel. Cela permet de faire l'économie d'un écran sur le serveur de terminaux. Dans notre cas, le serveur de terminaux va utiliser un serveur X virtuel (Xvfb) à la place du serveur X classique. Celui-ci n'a donc pas besoin d'un fichier de configuration XF86Config
ou XF86Config-4
.
Présentation
Vous vous demandez certainement quelle est l'utilité d'un serveur de terminaux. En fait cela permet de recycler de vieilles machines telles que des 486 qui serviront donc de clients. Le serveur de terminaux devra cependant être une machine un peu plus puissante car c'est sur cette machine que les clients vont lancer les applications graphiques. Cela permet donc un gain financier très appréciable pour de petites structures, telles que des écoles. De plus, mis à part l'installation d'une distribution Debian GNU/Linux qui peut paraître un peu difficile, cela n'est vraiment pas très difficile à installer.
Installation
Nous allons installer le serveur X virtuel et un gestionnaire de login. Il existe de nombreux gestionnaires de login pour XFree86 : xdm, gdm, kdm et wdm. Je vous propose d'utiliser xdm car c'est le plus répandu et le plus léger. Si vous avez la chance d'avoir une distribution Debian GNU/Linux il suffit d'installer les paquets suivants à l'aide de la commande suivante :
#apt-get install xvfb xdm xfonts-base
Il s'agit du minimum vital pour faire tourner un serveur X virtuel. La commande apt-get va s'occuper d'installer les dépendances suivantes : libxaw7, xbase-clients, xlibmesa3-gl et xlibs*. Pour que votre serveur de terminaux X soit utilisable, il faut installer quelques polices de caractères en plus, un gestionnaire de fenêtre et un émulateur de terminal.
#apt-get install twm "xfonts-100dpi*" xterm
Configuration
La configuration du serveur de terminaux X se trouve principalement au niveau du gestionnaire de login graphique. Voici comment procéder pour xdm.
Changer le serveur X de xdm
Tout d'abord il faut lui préciser d'utiliser un serveur X virtuel dans le fichier /etc/X11/xdm/Xservers
. Pour cela nous allons remplacer la ligne :
:0 local /usr/X11R6/bin/X vt7 -dpi 100 -nolisten tcp
Par celle-ci :
:0 local /usr/X11R6/bin/Xvfb -dpi 100 -screen 800x600x16
Vous pouvez changer la résolution du serveur virtuel à l'aide de l'option -screen. Pour les autres options je vous invite à consulter le manuel de Xvfb :
$ man xvfb $ man Xserver
Activer le protocole XDMCP
Le protocole XDMCP (X Display Manager Control Protocol) commun à tous les gestionnaires de login graphique est à la base des terminaux X. Il permet à un client X de trouver un serveur de terminaux et d'ouvrir une session. Celui-ci est désactivé par défaut pour des raisons de sécurité. Il est impossible d'encapsuler ce protocole dans un tunnel SSH sous peine d'avoir des performances désastreuses (UDP à travers TCP). Il ne faut surtout pas l'utiliser dans un environnement à risque. Pour activer le protocole XDMCP, il faut mettre en commentaire la dernière ligne du fichier /etc/X11/xdm/xdm-config
comme ceci :
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm ! DisplayManager.requestPort: 0
Contrôle d'accès
Il ne nous reste plus qu'à configurer les listes d'accès de xdm dans le fichier /etc/X11/xdm/Xaccess
. Celui-ci se base sur le nom de la machine pour savoir si elle a le droit ou non d'accéder au terminal X. Nous allons ajouter le nom de la machine de laquelle nous voulons nous connecter sur le serveur dans ce fichier.
# cat client_hostname >> /etc/X11/xdm/Xaccess
Tester
Avant de tester le fonctionnement du serveur de terminaux il faut relancer le gestionnaire de login graphique :
# /etc/init.d/xdm restart
A l'aide de Xnest
Le programme Xnest permet de lancer un serveur X dans une fenêtre. Pour tester notre serveur de terminaux X sans écran il suffit donc de se placer sur une autre machine et entrer la commande suivante :
$ Xnest :1 -query serveur
Si tout va bien vous devez voir le xdm du serveur dans la fenêtre Xnest. Vous pouvez vous connecter sur la machine sans écran et lancer des applications graphiques.
A l'aide d'un serveur X
Si nous voulez lancer l'affichage du serveur de Terminaux X sur un autre TTY ou bien en affichage principal vous pouvez le faire à l'aide du serveur X de la machine cliente :
# X :1 vt8 -dpi 100 -query serveur
Vous devez voir la fenêtre de login XDM sur la console virtuelle numéro 8. (Ctrl + Alt + F8).
Conclusion
Cet article sur l'installation d'un serveur de terminaux X est maintenant terminé, n'hésitez pas à poster des commentaires sur cet article si vous avez rencontré quelques problèmes en suivant cette documentation.