Retrouvez cet article dans : Linux Magazine Hors série 21

Xnest permet de lancer un pseudo-serveur X dans une fenêtre. Très pratique sur bien des points
Jouons un peu avec X11
Imaginons deux utilisateurs, Alice et Bernard. Alice a lancé X11 et est en train d’utiliser le système. Pour une raison personnelle, elle doit utiliser le compte de Bernard. De ce fait, dans un xterm elle fait :
$ su bernard Password: $ echo $DISPLAY :0.0 $ xclock Xlib: connection to „:0.0“ refused by server Xlib: No protocol specified Error: Can’t open display: :0.0Sous l’identité de Bernard, Alice ne semble pas pouvoir lancer l’application X. La variable d’environnement
$ xauth list morgane/unix:0 MIT-MAGIC-COOKIE-1 116c0c35226f6b112b293071002c3d4bCette seule entrée suffit à autoriser Alice à lancer des applications graphiques. Elle possède un seul cookie aussi bien pour l’aspect client que serveur. Bernard, quant à lui, ne possède pas de cookies. C’est un compte utilisé exclusivement en mode console et aucune session X n’a jamais été ouverte. La syntaxe d’une entrée
nom_hôte:D.Squi est très proche de ma syntaxe précédente mais où l’on précise explicitement l’hôte concerné.hôte/unix:D.Scorrespond à l’utili-sation d’un socket placé dans/tmp/.X11-unix/. C’est une source fréquente de confusion et de problèmes car, en toute logique, le socket n’est accessible que depuis l’hôte lui même.
$ su bernard Password: $ xauth add morgane/unix:0 \ MIT-MAGIC-COOKIE-1 \ 116c0c35226f6b112b293071002c3d4b xauth: creating new authority file /home/bernard/.Xauthority $ xclock ...La clef de 128 bits a simplement été copiée/collée. Notez cependant que vous pouvez générer vos propres clefs à l’aide de la commande
$ xauth add morgane:0 \ MIT-MAGIC-COOKIE-1 \ 116c0c35226f6b112b293071002c3d4bPuis à préciser le contenu de la variable d’environnement
$ export DISPLAY=morgane:0Ou en version Shell C :
$ setenv DISPLAY morgane:Vous l’aurez compris, ces infor-mations nous sont déjà utiles. En effet, une machine un peu "vieille" ne possèdera peut-être pas un adaptateur graphique ou un écran de qualité (contrairement aux machines elles-mêmes, les moniteurs restent des périphériques invariablement coûteux et fragiles). Cependant, en profitant des capacités client/serveur du système X Window, nous pourrions parfaitement y copier nos photos de vacances et installer des applications graphiques. Nous pourrons ensuite utiliser les ressources et les données de la machine recyclée tout en profitant de l’interface graphique de la machine de travail courante. Il ne s’agit là que d’un exemple ; on peut également imaginer l’utilisation d’applications graphiques plus "sérieuses" pour faire de la surveillance ou de la supervision. Notez enfin, mais je reviendrai sur ce point en détail plus loin, qu’il existe plusieurs systèmes X Window pour MS Windows (95/98/NT/XP). Ceux-ci fonctionnent en surcouche de l’interface graphique Microsoft et permettent l’utilisation d’applications X locales ou distantes.

Le chooser par défaut de XDM. Graphiquement pas très moderne mais parfaitement fonctionnel
Xnest, un X dans X
Xnest est un élément important lorsque l’on met en place une configuration client/serveur autour de X Window. Il s’agit d’un serveur X fonctionnant comme une application cliente. Il s’agit d’un serveur car il crée un nouveau display et il s’agit d’une application cliente car l’affichage utilise un display X existant. Rien de tel qu’un exemple pour mettre les idées en place. Assurez-vous d’avoir$ Xnest -kb :1En fonction des paramètres par défaut, vous obtenez une fenêtre d’une taille plus ou moins importante contenant le tramage caractéristique d’un serveur X. Vous pouvez ensuite lancer des applications utilisant le nouveau display, comme, par exemple un
$ xclock -display :1L’utilisation de l’option
- De laisser faire
Xnesten autorisant, viaxhost, les connexions locales uniquement ; - De désactiver le contrôle en autorisant tous les hôtes à utiliser le nouveau display via une option
–ac; - De spécifier un fichier de type
~/.Xauthorityvia l’option-authet ainsi gérer pleinement et finement les authentifications. Notez que xauth permet également la manipulation d’un fichier autre que le classique~/.Xauthorityen utilisant uneoption -f.
XMDCP
Vous connaissez sans doute XDM, le X Display Manager ou l’une de ses évolutions comme GDM (Gnome), KDM (KDE), WDM ou encore Login.app. XDM permet le plus couramment d’obtenir un login graphique local. En d’autres termes, lorsque le système démarre, il lancera automatiquement le Display Manager qui lancera le serveur X et l’utilisera pour présenter une fenêtre spécifique. Ce dernier procèdera à l’authentification de l’utilisateur et ouvrira une session en son nom en utilisant le gestionnaire de fenêtres de son choix.
Le Terminal Server Client de Gnome permet un accès simplifié aux serveurs RDP, VNC, mais aussi XDMCP
Dans ce cas, le Display Manager lance et gère le serveur X local mais il peut faire bien mieux. XDM, ou équivalent, peut gérer un serveur X distant. Comprenez bien que le Display Manager est en attente de connexion sur le port 177, c’est donc un serveur. Cependant, pour pouvoir afficher des pixels, il doit accéder à un serveur X et donc se comporter en client. Dans ce dernier cas de figure, le protocole utilisé est XDMCP ou X Display Manager Control Protocol. Lorsque vous installez ou configurez un Display Manager, un certain nombre d’éléments de configuration sont définis par défaut. Parmi tous ces éléments nous trouvons le fait que XDM lance automatiquement un serveur X local au démarrage. Ceci est certes pratique puisque l’objectif le plus souvent poursuivi est d’obtenir un login graphique, mais ce n’est pas obligatoire. XDM et WDM partagent un schéma de configuration identique. GDM, quant à lui, sort un peu du lot avec un fichier de configuration totalement différent.XDM et WDM
XDM est le plus ancien Display Managers dont WDM découle. Le modèle de configuration est le même pour les deux programmes. On préfèrera cependant WDM, qui est un peu plus moderne en termes d’aspect et offre plus de souplesse pour l’utilisateur en proposant le choix du gestionnaire de fenêtres par exemple. Peu de fichiers sont concernés pour la configuration d’une machine en serveur XDM/WDM. J’utiliserai ici comme configuration de référence celle de WDM. Pour l’adapter à XDM, vous n’aurez qu’à remplacer une lettre dans toutes les occurrences de wdm dans les chemins et noms de fichiers. Les fichiers de configuration de WDM sont placés dansXserverqui contient les informations pour le lancement du ou des serveurs X locaux. Avec le système utilisé pour cet article, le fichier contenait d’origine la ligne :
:0 local /usr/bin/X11/X -nolisten TCPCelle-ci est destinée à lancer le binaire X avec une option interdisant l’acceptation de connexions clientes. On remarquera que les différences d’options passées au binaire X sont souvent sources de confusion. Je pense naturellement à l’option
molly:0 foreign pao:0 foreignLa syntaxe est simple. On reconnaît le couple hôte/display suivi de la directive
Xaccesspermet, comme son nom l’indique, de contrôler les connexions entrantes. On peut utiliser un motif représentant les hôtes dont on accepte les connexions. Inutile de vous dire que le plus souvent, ce motif est * autorisant les connexions de n’importe quelle provenance. Selon l’architecture réseau et la politique de sécurité utilisée cela peut être acceptable ou complètement stupide.
wdm-configest tout simplement le fichier de configuration du Display Manager. Il regroupe un nombre important d’options. Fort heureusement, la plupart d’entre elles sont déjà renseignées de manière à garantir un fonctionnement minimal par défaut. On notera toutefois, dans le cas de la distribution Debian (et peut-être d’autres), la présence de la ligne :
DisplayManager.requestPort: 0Cette directive permet de spécifier le port d’écoute. Si la valeur 0 est définie, l’utilisation du protocole XDMCP est tout simplement désactivée. Assurez-vous donc de commenter cette ligne afin d’autoriser les connexions au port UDP 177 utilisé par défaut. Vous pouvez également jeter un œil à la page de manuel de WDM (ou XDM) pour obtenir une liste complète des directives pour le fichier de configuration et une description précise de leur utilité.
Le chooser et les connexions indirectes
Lorsqu’on dispose de plusieurs machines faisant fonctionner des Display Managers en attente de connexions, il devient vite lassant de devoir spécifier l’hôte cible à chaque connexion. Ceci est d’autant plus vrai lorsqu’on parle de terminaux X puisque dans ce cas la simplicité doit prévaloir. Pour ce type de situation (un ou plusieurs terminaux, et plusieurs serveurs *DM) une solution a été prévue. Ainsi, plutôt que d’accéder directement (et je pèse mes mots) à un hôte spécifique, nous pouvons faire appel à un chooser. Il ne s’agit ni plus ni moins qu’une boîte de dialogue présentant les différents serveurs *DM en présence sur le réseau et permettant d’en choisir un. La sélection faite, on accède alors à l’hôte comme nous l’aurions fait manuellement. Le chooser est exécuté sur l’un des hôtes *DM. Ceci implique que le client doit, de toutes façons, accéder à un serveur cible. Ce dernier le réorientera éventuellement vers un autre serveur en lui proposant une liste de serveur *DM. Le chooser peut être configuré de plusieurs manières. Soit nous définissons manuellement une liste de serveurs *DM connus avec (dans le fichier%lalist molly morgane * CHOOSER %lalistLe symbole
* CHOOSER BROADCASTPetite remarque concernant WDM. Le chooser associé avec ce Display Manager n’existe pas ou est encore considéré comme étant "loin d’être terminé" (dixit un post de la liste officielle).

Le chooser livré avec GDM. Personnalisable à souhait et simple à configurer
Il faut donc utiliser le chooser de XDM qui est loin d’être un modèle d’esthétisme (mais on peut toujours améliorer la chose en jouant avec les ressources). Par défaut, la configuration ne précise pas l’emplacement et le nom du binaire correspondant. Vous devrez donc, sans doute, le préciser vous-même dans votreDisplayManager*chooser: /usr/X11R6/bin/chooserEn l’absence de cette ligne et si WDM ne trouve pas le chooser, vous risquez d’avoir un certain nombre de problèmes (tentative de connexion en boucle en l’absence de l’option -once sur le client).
GDM
GDM est le GNOME Display Manager. Il est moderne, configurable à souhait, d’aspect moins rébarbatif que XDM, possède des possibilités de configuration plus poussées et il offre la possibilité d’utiliser des thèmes. En dehors de tous ces aspects positifs, il faut également prendre en considération le fait que GDM utilise une syntaxe de configuration très différente et qu’il possède de fortes dépendances vis-à -vis de GNOME (ce qui est normal me direz-vous). La configuration de GDM peut se faire via son fichier de configuration
La fenêtre du chooser GDM dans un Windows avec un serveur X en mode rootless
Cas pratique et connexion cliente
Nous savons à présent comment configurer un Display Manager de manière à ce qu’il accepte les connexions externes, qu’il pro-pose une liste de serveurs qui lui sont semblables, et qu’il puisse authentifier un utilisateur et lui ouvrir une session. Nous sommes donc prêts pour la partie cliente. Le client ou terminal X ne doit savoir faire qu’une seule chose : démarrer un système (quel qu’il soit) et un serveur X fonctionnel et configuré. Dans le cadre de ce numéro hors série, la machine en question sera une configuration relativement légère. Il n’en reste pas moins cependant qu’elle devra répondre à un certain nombre d’impératifs :
- Un système GNU/Linux doit pouvoir y démarrer et fonctionner normalement. Ceci implique la présence de mémoire vive (64 Mo) et d’un disque dur d’une taille raisonnable (300 Mo) ;
- Elle doit disposer d’un adaptateur graphique capable d’afficher une résolution et un nombre de couleurs rendant l’ensemble utilisable (800x600 ou 1024x768 en 65k couleurs). Inutile de préciser que le moniteur doit " suivre " ;
- Divers périphériques propres à un terminal X (clavier, souris, adaptateur réseau).
Il ne s’agit donc pas d’une machine totalement en fin de vie de type 486/16 Mo avec adaptateur EGA/VGA ISA ou VLB. La puissance CPU et la mémoire vive ne sont pas un élément clef. En effet, le processeur n’aura à sa charge qu’un serveur X fonctionnant au-dessus d’un système réduit au minimum. Même constatation côté mémoire : les applications qui seront utilisées occuperont des ressources sur le serveur *DM où sera ouvert la session, et non sur le terminal lui-même qui se bornera presque à un travail d’affichage. Installez la machine avec une distribution capable d’occuper le moins d’espace disque et le moins de ressources possibles. J’aurais tendance à vous conseiller naturellement une distribution Debian mais d’autres feront tout aussi bien l’affaire. N’hésitez pas, éventuellement, à ressortir des tiroirs de vieilles distributions (type RedHat 6.2). En effet, le terminal étant composé, normalement, de vieux éléments, vous ne devriez pas rencontrer de problèmes de compatibilité.

Des fenêtres WindowMaker avec des applications X dans un Windows 98. De quoi surprendre le pauvre l’utilisateur Windows qui passe :)
Configurez la distribution de manière à obtenir un démarrage en mode console. Nous lancerons, dans un premier temps, le serveur X manuellement. Vous pourrez toujours, par la suite automatiser ce lancement dans le démarrage du système. Assurez-vous que le serveur X est correctement configuré puis tentez votre première connexion :
$ X -query morganeNous lançons directement le serveur X sans passer par le classique
- Le serveur XDM/WDM est-il lancé (c’est idiot mais en phase de test cela arrive) ?
- Le serveur accepte-t-il les connexions (ligne
DisplayManager.requestPortduwdm-config) ? - Autorisez-vous les connexions depuis ce client (fichier
Xaccess) ?
Inversion des rôles
Nous avons pour l’instant toujours envisagé l’utilisation d’une machine aux ressources graphiques viables mais disposant d’une configuration CPU/Mémoire/Disque trop légère. La situation inverse peut également se présenter. En effet, assembler une machine autour d’un Celeron/PIII/Athlon avec 512 Mo ne reviendra pas très cher pour peu que l’on choisisse un disque de moins de 40 Go et une carte mère d’entrée de gamme. Des unités centrales de ce type se trouvent, neuves, pour un peu moins de 180 euros sur n’importe quelle boutique en ligne, le tout avec un boîtier qui ne fera pas "tache" dans le bureau :) Ici, le point sensible n’est plus la configuration mais les périphériques, et en particulier l’écran. Pourquoi donc ne pas faire de cette machine un poste de travail, de test, de développement... en utilisant le serveur X à votre disposition sur votre machine principale ? Certes, vous pouvez déjà le faire de manière ponctuelle en exécutant les applications graphiques à distance, mais l’utilisation d’un Display Manager vous permettra d’ouvrir une session complète et ce, dans un environnement particulier. Le principe de configuration reste, bien sûr, le même, à la simple différence que le serveur *DM est installé sur la machine secondaire (ex-terminal X) et que le serveur X utilisé sera celui de la machine principale. Comme précédemment, vous pouvez démarrer en mode console et lancer le serveur manuellement :$ X -query molly :1On utilisera toutefois un paramètre supplémentaire :1 en fin de ligne pour préciser le display supplémentaire à créer. Par défaut, celui-ci est 0. Or, si un serveur X est déjà en route sur la machine, ce display est déjà occupé. Lancer un second serveur n’est pas toujours une bonne idée. Cela consomme des ressources et le fait de basculer de la machine locale à celle distante devient très vite lassant. Pourquoi ne pas lancer un serveur X dans le serveur X déjà en cours d’utilisation ? Je parle, bien sûr, de Xnest. Ce serveur "niché" prendra en argument quasiment les mêmes options que le vrai serveur X :
$ Xnest -geometry 1024x768 -query molly -kb :1L’option
XWin.exe -query 192.168.0.10 -rootlessSur plateforme Mac OS X, celle-ci intégrant un serveur X, la meilleure solution consiste à utiliser Xnest tout comme on le ferait sous GNU/Linux. On obtient ainsi une fenêtre parfaitement intégrée au reste du système. Il doit également être possible de lancer le serveur X natif en utilisant l’option -query ou -indirect mais ceci n’a pas été expérimenté dans le cadre de cet article.
Conclusion
Nous venons de voir qu’un grand nombre de combinaisons client/serveur sont utilisables à peu de frais. Faire ainsi revivre une machine à l’abandon offre des perspectives intéressantes que je vous laisse deviner. Bien au-delà des possibilités qu’offrent des solutions comme VNC, les fonctionnalités incluses de base dans tout système UNIX/X sont celles qui permettent la plus grande souplesse de personnalisation et de configuration. A vous maintenant de tirer parti au mieux de tout cela.Retrouvez cet article dans : Linux Magazine Hors série 21





Bonjour,
J’ai un souci concernant l’utilisation de la commande Xnest.
Je voudrais utiliser dans la fenêtre déportée un clavier azerty et le pavé numérique
- L’option +kb me permet d’avoir le pavé numérique directement mais le clavier est qwerty.
- L’option -kb donne un clavier azerty mais pour utiliser le pavé numérique (à droite), il faut appuyer sur la touche « shift » (ce que je voudrais éviter) et en plus certaines touches (« 4″ et « 7″ ) ne fonctionne pas correctement dans les formulaires (« 4″ remplace le caractère précédent par « 4″ et « 7″ remplace toute la ligne par « 7″…)
Sauriez-vous me dire comment avoir le résultat attendu ?
Merci,