GAZETTE N°27: Terminaux X 486

Terminaux X 486

Par Rich Kaszeta

Adaptation Française : Éric Jacoboni


Précédent Suivant Table des Matières

3. Terminaux X 486

Une nouvelle jeunesse pour les vieux PCs

3.1 Présentation

Cet article décrit la façon de convertir des PC 386/486 de bas de gamme en terminaux X Window sous Linux.

3.2 Introduction

Au département de Génie Mécanique de l'Université du Minnesota, nous avons hérité de vieux 486 IBM PS/Valuepoint (16 Mo de mémoire, disque dur de 200 Mo) avec claviers et écrans et nous avons essayé de leur trouver une utilisation intéressante.

Au départ, on parlait d'installer Linux dessus (notre département a déjà des dizaines de Pentium sous Linux qui sont très prisés), mais étant données leurs faibles capacités disque et mémoire, nous avons décidé qu'ils ne fonctionneraient pas assez vite pour répondre aux besoins courants de nos utilisateurs et qu'il n'était pas rentable financièrement de les mettre à jour.

Notre solution a consisté a installer un système Debian Linux léger sur ces machines (installation minimale plus réseau de base, X et quelques utilitaires), et de les configurer pour qu'elles fonctionnent comme terminaux X afin de disposer de terminaux entièrement graphiques très peu coûteux, utilisables dans les bureaux des thésards et comme interfaces X pour nos serveurs Unix.

3.3 XDM : Concept de base

xdm est un « gestionnaire d'écran », offrant des fenêtres X de login aux utilisateurs. L'utilisation classique d'xdm est de présenter un login graphique sur l'écran local d'une station de travail X11, afin que l'utilisateur n'ait pas besoin de lancer X « à la main ».

Cependant, xdm offre aussi des logins X11 graphiques aux machines distantes, comme on le voit souvent sur les terminaux X (par exemple NCD). Il faut simplement que la machine distante parle X.

Nous décrirons ici la configuration d'un PC de bas de gamme pour qu'il fonctionne exactement comme ces terminaux X.

3.4 Configurer les terminaux X

Configurer les 486 en terminaux graphiques X est relativement facile et ne nécessite que quelques étapes :

  1. Installation d'un système Debian Linux minimal sur chaque PC.
  2. Configuration de chaque PC pour lancer X et interroger un serveur xdm pour obtenir une liste des hôtes auxquels se connecter.
  3. Configuration d'un ou plusieurs serveurs xdm pour offrir les services « chooser » aux terminaux X.
  4. Configuration d'xdm et du chooser pour qu'il soit plus esthétique et plus pratique.

J'évoquerai chacune de ces étapes tour à tour.

3.5 Installation d'un système Linux minimal

Comme nos systèmes Linux existants utilisent Debian Linux, nous l'avons aussi choisi pour ces PCs.

Sur chaque système, nous n'avons installé que le système Debian de base à partir d'une disquette, ce qui donne un système Linux réduit à sa plus simple expression avec une gestion réseau. Aucun compte utilisateur n'a été créé car il n'y en a pas besoin (puisqu'aucun utilisateur ne se logge sur la machine elle-même).

Puis les paquetages Debian de XFree86 3.3 on été chargés sur chaque système. Nous avons chargé les bibliothèques X11 de base, les extensions X, le serveur X S3 (car les PS/Valuepoints ont une carte vidéo de 2 Mo basée sur le circuit S3), et toutes les fontes X11R6.

Enfin, nous avons installé quelques paquetages supplémentaires, dont les utilitaires de base pour le réseau (netbase), ssh (pour permettre un login distant via un canal sécurisé), et nvi car notre équipe système n'aime pas l'éditeur de texte par défaut de Debian.

3.6 Configuration de chaque PC pour lancer X

La première étape fut de configurer X pour qu'il tourne localement sur chaque PC. Un fichier XF86Config fut créé pour les machines à l'aide de l'utilitaire standard xf86config, avec quelques considérations techniques ::

  • L'option Emulate3Buttons a été validée car les souris des machines n'avaient que deux boutons ;
  • Bien que la carte S3 2 Mo des Valuepoints puisse aller jusqu'à une résolution de 1152x900x16 bits, nous avons choisi de fonctionner en 1024x768x8 bits, car cela fonctionne à une fréquence de rafraîchissement plus confortable, et offre une meilleure visibilité sur les écrans 15 pouces IBM ainsi qu'une meilleure compatibilité avec les applications locales que la couleur 16 bits.
  • Pour ajouter de la sécurité, DontZap est précisé pour que les utilisateurs ne puissent pas tuer par accident le serveur X.
  • Nous avons ajouté des couleurs SGI à /usr/lib/X11/rgb.txt pour que les stations X puissent parler sans problème à nos SGI.
  • Vous pouvez vouloir installer un serveur de fontes quelque part.

Lorsque nous avons été satisfaits de la configuration du serveur X, nous avons testé si nous pouvions nous connecter à une station de travail exécutant xdm (rayleigh dans cet exemple) :

X -quiet -query weber

qui nous donne la fenêtre de login xdm standard pour weber :

fenêtre de login xdm standard

Maintenant, nous savons que tout fonctionne. Si nous voulons simplement que le PC parle à une seule station de travail, alors c'est quasiment fini. La seule étape restante est de s'assurer que X est lancé au démarrage. Nous pouvons faire ça avec un script /etc/init.d/xterm.

#! /bin/sh
# skeleton      example file to build /etc/init.d/ scripts.
#               This file should be used to construct scripts for /etc/init.d.
#
#               Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#               Modified for Debian GNU/Linux
#               by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:      @(#)skeleton  1.6  11-Nov-1996  miquels@cistron.nl
#
set -e

case "$1" in
  start)
    start-stop-daemon --start --verbose --pidfile /var/run/xterm.pid \ 
    --exec /usr/bin/X11/X -- -quiet -indirect weber &
    ;;
  stop)
    start-stop-daemon --stop --verbose --pidfile /var/run/xterm.pid \
    --exec /usr/bin/X11/X
    ;;
  reload)
    # echo "Reloading $NAME configuration files"
    # start-stop-daemon --stop --signal 1 --quiet \
      --pidfile /var/run/$NAME.pid --exec $DAEMON
    ;;
  *)
    # echo "Usage: /etc/init.d/$NAME {start|stop|reload}"
    echo "Usage: /etc/init.d/xterm {start|stop}"
    exit 1
    ;;
esac

exit 0

Sur un système Debian, nous l'installons avec update-rc.d xterm defaults 99 (la procédure pour Redhat, Slackware, etc., est similaire). Puis nous relançons la machine pour nous assurer que X démarre au démarrage.

3.7 Configuration du serveur xdm pour offrir un « chooser »

Nous avons déjà mis en place un terminal X de base. Cependant, il ne peut parler qu'à une seule machine. Si nous voulons pouvoir nous connecter à d'autres machines, nous devons avoir au moins une machine de notre réseau configurée pour offrir un hôte « chooser » à nos terminaux X. Dans cet article, la machine fournissant les services « chooser » d'xdm s'appelle weber (remarquez, qu'ici, weber est une machine Linux mais cela pourrait être toute station de travail disposant de xdm).

Configurer tout d'abord weber pour offrir le chooser aux hôtes qui se connectent par une connexion xdm « indirecte ». Ceci est contrôlé par le fichier Xaccess (situé dans /etc/X11/xdm sur les machines Debian, et sous /usr/lib/X11 ou un autre endroit pour les autres machines). Typiquement, le fichier Xaccess par défaut de la plupart des systèmes est très bien commenté et contient des exemples simples, il est donc facile à comprendre.

Vous devez ajouter à ce fichier une ligne de la forme :

machine CHOOSER hote-a hote-b

machine est le nom de l'hôte qui offre le chooser (cela peut être un motif comme « * » ou « *.domaine.nom »), CHOOSER indique à xdm d'offrir un chooser à ces hôtes et le reste de la ligne est une liste de noms de machines à lister dans le chooser. Si vous utilisez machine BROADCAST, cela listera toutes les machines disposant d'xdm sur le réseau local.

Donc, si nous voulons qu'il soit donné à toutes les machines un chooser leur permettant de choisir n'importe quelle machine du réseau local, il faut nous assurer d'avoir la ligne suivante dans Xaccess :

* CHOOSER BROADCAST

Cependant, dans notre système, nous avons des machines dans différents sous-réseaux et nous ne pouvons nous fier à une diffusion pour toutes les trouver. Nous utilisons donc :

* CHOOSER liste-de-machines ...

à la place.

De plus, on peut spécifier différentes listes pour différentes machines. Comme nous l'avons déjà précisé auparavant, nous voulions utiliser l'un des PCs comme terminal graphique pour notre station SGI (qui exécute wdm) ; nous devons donc donner à cette machine -- console -- une liste ne contenant que les machines faisant office de serveurs :

console.me.umn.edu CHOOSER serveur1 serveur2 ...

L'étape suivante consiste à modifier la configuration du terminal X pour qu'il se connecte au serveur xdm en utilisant une requête « indirecte ». Nous testons cela en nous loggant sur le terminal PC et en lançant X avec

X -indirect weber

et nous devrions voir le chooser apparaître :

chooser standard

Cela fonctionne, mais ce n'est pas très beau.

Maintenant que vous savons que cela fonctionne, changeons notre script /etc/init.d/xterm en remplaçant -query rayleigh par -indirect weber.

3.8 Configuration du chooser par les ressources X et les scripts

Tout fonctionne à peu près correctement et tout ce qui nous reste à faire est de mettre de l'ordre dans la configuration du chooser pour qu'il soit un peu plus pratique et agréable.

Le chooser peut être configuré à l'aide des ressources X. En les modifiant, on peut changer les fontes du chooser, l'aspect de la liste et les couleurs. Ces ressources se trouvent dans /etc/X11/xdm/Xresources (ou un endroit similaire sur des machines non Debian).

Sur nos systèmes, nous voulions ce qui suit :

  • changer l'en-tête pour qu'il affiche « Available MEnet Hosts » ;
  • changer les fontes pour que tout soit plus lisible ;
  • mettre la liste sur deux colonnes triées, avec un intervalle entre les colonnes ;
  • mettre la barre de défilement à droite ;
  • agrandir légèrement la fenêtre.

Pour faire tout cela, nous avons modifié le fichier /etc/X11/xdm/Xresources pour y ajouter les lignes suivantes :

Chooser*geometry:               810x500+300+225
Chooser*allowShellResize:       false
Chooser*ShapeStyle:             Oval
Chooser*viewport.forceBars:     true
Chooser*label.font:             *-new century schoolbook-bold-i-normal-*-240-*
Chooser*label.label:            Available MEnet Hosts
!Chooser*list.font:             -*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
!Chooser*Command.font:          *-new century schoolbook-bold-r-normal-*-180-*
#ifdef COLOR
Chooser*label.foreground:       white
Chooser*label.background:       midnightblue
Chooser*Command.background:     gray80
Chooser*list.columnSpacing:     25
Chooser*list.defaultColumns:    2
Chooser*list.forceColumns:      true
Chooser*list.verticalList:      true
Chooser*internalBorderColor:    black
Chooser*Command.font:           -adobe-helvetica-bold-r-*-*-12-*
Chooser*viewport.useRight:      true
#endif

Enfin, nous voulions nous débarrasser du fond d'écran X par défaut car il donne un horrible effet moiré sur les petits écrans. Pour ce faire, on indique à xdm qu'il doit utiliser un script shell, nommé chooser.script, au lieu du chooser normal. Ce script configure le fond en « skyblue4 » et lance le chooser normal. On configure cela dans /etc/X11/xdm/xdm-config, en ajoutant la ligne :

DisplayManager*chooser:         /usr/lib/X11/xdm/chooser.script

chooser.script est :

#!/bin/sh
xsetroot -solid skyblue4
/usr/lib/X11/xdm/chooser $*

Le résultat final ressemble à ceci :

chooser personnalisé

C'est bien plus beau, non ?

Beaucoup d'autres personnalisations sont possibles à l'aide des ressources X et des scripts de configuration xdm. Consultez la page man de xdm pour d'autres détails.

3.9 Conclusion

Avec relativement peu de travail, et très peu d'administration par la suite (les terminaux X se plantent rarement et nécessitent peu de mises à jour logicielles), nous avons transformé un lot de PCs « destinés à la casse » en terminaux X très pratiques (je l'ai même fait pour un 386, et il fonctionne sans problème).

Comme remarque finale, il est important de noter que tout ce que je viens de décrire à propos de PC sous Debian Linux s'applique aussi à la résurrection d'autres machines capables de supporter X11, comme les vieilles Sun (Sparc ELC), HP et SGI...


Précédent Suivant Table des Matières

Copyright © 1998, Rich Kaszeta - Publié dans le n°27 de la Linux Gazette

Adaptation Française : Éric Jacoboni