Mini HOWTO terminal X NCD

Ian Hodge, ian@permedia.ca

v1.07, 30 Novembre 1999
Ce document explique comment connecter un terminal X NCD à une machine hôte UNIX (traduction : Michel Billaud, billaud@labri.u-bordeaux.fr).

1. Copyright

Le NCD X terminal mini HOWTO est copyright (C) 1998 par Ian Hodge. Les documents HOWTO de Linux peuvent être reproduits et diffusés en tout ou partie, par tout moyen physique ou électronique, du moment que cette notice de copyright figure sur toutes les copies.

2. Introduction

Ce document explique comment connecter un terminal X fabriqué par NCD (Network Computing Devices) à une machine hôte fonctionnant sous UNIX, en utilisant le protocole BootP (Boot Protocol). De nombreux terminaux peuvent également démarrrer par RARP, NFS, ou depuis une carte PCMCIA ou une liaison série (directe ou par modem).

Bien que le matériau de ce document soit basé sur l'expérience d'un seul type de terminal X, une grande partie des informations qui y figurent s'appliquent également à d'autres modèles. Il existe également un Linux X Terminal mini HOWTO (qui est actuellement déclaré obsolète par les responsables des HOWTO, et n'est donc peut-être pas disponible avec toutes les distributions de Linux) qui recoupe en partie ce document. Celui-ci contient davantage d'informations sur les terminaux X.

2.1 Étapes

La connexion d'un terminal X à un réseau Unix se résume aux étapes suivantes :

3. Préliminaires

3.1 Le terminal X

Un terminal X est un appareil capable d'afficher et de communiquer sur un réseau, en utilisant le système de fenêtrage pour réseaux distribués connu sous le nom de X. Typiquement, le logiciel du terminal X (ce qu'on appelle le serveur X) est chargé depuis le réseau au démarrage du terminal. Les programmes autres que le serveur X (programmes clients X) ne sont pas exécutés localement (à part quelques exceptions) par le terminal X, qui affiche des programmes qui tournent sur d'autres machines du réseau. Le terminal X est donc un genre de network computer qui utilise le protocole X pour accéder aux ressources du réseau.

3.2 Connexion physique

Le terminal X NCD (nous avons utilisé le modèle Xncd19r pour la préparation de ce document) possède une prise RJ-45 (paire torsadée) pour Ethernet 10 Base T. Il faut un répèteur multiport (hub) pour relier plus de deux appareils en paire torsadée. Si le terminal X et la machine hôte sont les seules machines de votre réseau, vous pouvez les connecter par un câble croisé qui est décrit dans le Linux Ethernet HOWTO.

3.3 Logiciel serveur X de NCD

Le fichier qui contient le logiciel serveur X du terminal est disponible auprès du constructeur, qui le fournit en principe avec le terminal. Ce fichier va résider sur la machine hôte, d'où il sera téléchargé au démarrage du terminal X. Il est spécifique du modèle du terminal, mais indépendant du type de la machine hôte. Le terminal peut démarrer depuis n'importe quelle machine qui supporte le protocole de communication BootP (expliqué plus loin). En plus du serveur, le logiciel X peut contenir des applications, comme un gestionnaire de fenêtres, qui s'exécuteront localement sur le terminal X.

4. Configuration de la machine hôte UNIX

Au démarrage, le terminal X va chercher ses fichiers (y compris le serveur X) sur une machine du réseau. Une fois démarré, le serveur X contrôlera les entrées (clavier, souris), l'affichage, les clients locaux et la communication par le protocole X. Le serveur X s'exécute sur le terminal X, et n'a donc besoin d'aucune compatibilité logicielle avec la machine hôte.

4.1 TFTP et BootP

Les protocoles TFTP (Trivial File Transfer Protocol, protocole élémentaire de transfert de fichiers) et BootP (boot protocol, protocole d'amorçage) sont utilisés ensemble sur la machine hôte pour permettre au terminal X de récupérer le serveur X et les fichiers de configuration à travers le réseau. Ces deux services sont habituellement démarrés par inetd (Internet Daemon).

Lorsque le terminal X est mis sous tension, si il est configuré pour un démarrage par le réseau, il émet un appel général (broadcast) sur le réseau en utilisant le protocole BootP (protocole d'amorçage TCP/IP). Ce message d'appel contient l'adresse matérielle (Ethernet) du terminal X, adresse qui sera utilisée par la machine hôte pour répondre à la "demande de boot".

Lorsque la machine hôte reçoit une demande de boot, inetd (qui surveille un port désigné dans /etc/services) démarre le démon BootP spécifié dans /etc/inetd.conf.

Dans le fichier inetd.conf, ajoutez ou dé-commentez les lignes qui concernent TFTP ou BootP. Dans l'exemple qui suit, le dernier paramètre de la ligne de TFTP indique le répertoire qui contient les fichiers pour le terminal X. Bien que les noms de répertoires ne soient pas obligatoires, pour des raisons de sécurité il faut toujours les mettre, de façon à restreindre l'accès TFTP à ces seuls répertoires.

Exemple de fichier /etc/inetd.conf (extrait) :

# Le service TFTP sert principalement au boot. La plupart des sites
# ne font tourner ceci que sur les machines qui sont des "serveurs de boot".
tftp   dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd /usr/X11/lib/X11/ncd/
bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd

Lors de son activation, le démon du serveur BootP lit son fichier de données /etc/bootptab. Une description de ce terminal X doit s'y trouver. Chaque description contient un ensemble d'éléments séparés par des deux-points ":". Le premier élément est le nom du terminal.

Éléments utiles du fichier bootptab :

hd

(home directory) Répertoire contenant le fichier de boot du terminal X (ici /usr/X11/lib/X11/ncd/).

ip

Addresse IP du terminal X (dans notre exemple 10.0.0.1).

sm(subnet mask)

masque de sous-réseau (ici 255.0.0.0). Pour comprendre l'usage des masques de sous-réseau et autres principes des réseaux IP, consultez le Linux NET-3 HOWTO.

gw(gateway)

adresse IP de la passerelle (ici 10.0.0.1).

ht(hardware type)

Type de matériel. C'est ethernet dans cet exemple.

ha(hardware address)

Adresse matérielle du terminal X (adresse Ethernet sur 6 octets). D'après la page bootptab du manuel UNIX, l'élément "ht" doit précéder le "ha". L'adresse Ethernet s'affiche à la mise sous tension du terminal X, sous forme d'une série de 6 nombres à deux chiffres hexadécimaux, séparés par des deux-points. Par exemple

00:00:A7:12:26:19

tc(table continuation)

Suite d'une autre description du fichier bootptab. Voir l'exemple ci-dessous.

ds(domain name server)

Adresse IP du serveur de noms (par exemple 10.0.0.3). Inutile si la résolution d'adresse n'utilise pas de serveur de noms (DNS).

bf(boot file)

Nom du fichier contenant le serveur du terminal X (d'habitude le nom du fichier est celui du modèle du terminal X, ici Xncd19r).

Ce qui suit est un exemple de fichier /etc/bootptab. Le caractère "\" sert à neutraliser les fins de ligne.


# Ceci est une description, appelée ici ``default'', avec
# des informations communes à tous les clients BootP

default:hd=/usr/X11/lib/X11/ncd/:\
        ds=10.0.0.3:\
        sm=255.0.0.0:\
        gw=10.0.0.1:

# Le terminal X s'appelle ``myxterm''. Remarquez l'élément
# ``tc'' qui fait référence à la description ``default''.

myxterm:ht=ethernet:\
        ha=0x0000a7122619:\
        ip=10.0.0.2:\
        tc=default:\
        bf=Xncd19r:

Lorsque le démon bootpd trouve (dans le fichier bootptab) une description qui correspond à l'adresse matérielle contenue dans une requête de boot, il envoie une réponse à l'adresse IP correspondante. Le transfert de fichiers peut alors se faire par TFTP au dessus de IP.

On attribue un nom au terminal X en ajoutant une description dans le fichier /etc/hosts de la machine hôte. Ce fichier sert à établir une correspondance entre noms de machines et adresses IP. Dans l'exemple ci-dessous, le terminal X (d'adresse 10.0.0.2) est nommé "myxterm" :

10.0.0.1        linuxhost       # La machine hôte (serveur de boot)
10.0.0.2        myxterm         # terminal X

5. Configurer la procédure de démarrage du terminal X

Lorsqu'il est mis sous tension, le terminal X tente de booter, c'est-à-dire de charger le logiciel serveur X en mémoire et de l'exécuter. Si le terminal X ne peut pas booter, la chaîne d'invite ">" du moniteur (Boot Monitor) apparaît. Le Boot Monitor est un programme enregistré dans les mémoires mortes (PROM = programmable read-only memory) du terminal. À l'aide du moniteur, il est possible de configurer le terminal X pour qu'il aille chercher le serveur X sur la machine hôte au démarrage. Utilisez "?" pour avoir la liste des commandes du moniteur.

Les paramètres de configuration que vous modifiez grâce au moniteur sont stockés dans une mémoire non volatile (NVRAM = non-volatile random access memory), et sont conservés lorsque le terminal est mis hors-tension.

Pour booter le terminal depuis le moniteur, on a le choix entre la commande "bt" et un système de menus. Les deux méthodes permettent en gros de faire la même chose, mais les menus donnent accès à davantage de paramètres.

5.1 Syntaxe des commandes du Boot Monitor

> bt fichier IP_terminal IP_hôte IP_passerelle masque_sous-réseau

fichier

Le nom du fichier, sur la machine hôte, qui contient le logiciel du serveur X pour le terminal (dans notre exemple "Xncd19r"). Vérifiez que c'est le même nom que celui indiqué dans le fichier bootptab (expliqué dans la section précédente) pour ce terminal X.

IP_terminal

L'adresse IP affectée au terminal X (ici 10.0.0.2). Pareillement, cette adresse doit être celle indiquée dans bootptab.

IP_hôte

L'adresse IP de la machine hôte (10.0.0.1).

IP_passerelle

L'adresse IP de la passerelle du sous-réseau (par exemple 10.0.0.1).

masque_sous-réseau

Le masque de sous-réseau, en notation IP décimale ou hexadécimale (par exemple 255.0.0.0 ou ff000000).

5.2 Menu de configuration "setup" du moniteur

Les menus de configuration sont appelés par la touche "Setup" ou en tapant la commande "se" après l'invite '>' du moniteur.

Get IP Addresses From

Normalement, l'adresse IP du terminal devrait être obtenue depuis la configuration stockée dans la NVRAM. Ne selectionnez 'Network' que si vous utilisez RARP (reverse ARP) pour déterminer l'adresse IP du terminal X depuis la machine hôte.

Terminal IP Address

L'adresse IP affectée au terminal X (par exemple 10.0.0.2). C'est la même chose que le paramètre 'IP_terminal' vu précédemment.

First Boot Host IP Address

L'adresse IP de la machine hôte (ici 10.0.0.1). Même chose que le paramètre 'IP_hôte'.

Gateway IP Address

L'adresse IP de la passerelle de sous-réseau. Correspond à "IP_passerelle".

Subnet Mask

Le masque de sous-réseau, en notation IP décimale (voir variable "masque_sous-réseau" plus haut).

Broadcast IP Address

L'adresse IP pour la diffusion vers le sous-réseau (par exemple 10.255.255.255).

Boot File

Le nom du fichier qui, sur la machine hôte, contient le logiciel serveur X du terminal (exemple "Xncd19r"). Même chose que le paramètre "fichier" décrit plus haut.

TFTP Boot Directory

Le nom du répertoire, sur la machine hôte, qui contient le logiciel serveur (par exemple "/usr/X11/lib/X11/ncd/" ou "/tftpboot/").

Config file

Le nom du fichier de configuration du terminal X sur la machine hôte (voir plus loin).

UNIX Config Directory

Le nom du répertoire qui contient le fichier de configuration (exemple "/usr/X11/lib/X11/ncd/").

TFTP Order, NFS Order, Local Order

Mettez "1" pour la méthode de démarrage que vous préférez, c'est-à-dire TFTP si vous démarrez par BootP depuis une machine hôte.

5.3 Fichiers de configuration du terminal X

Pendant la procédure de boot, le terminal X va essayer d'aller chercher des fichiers depuis la machine hôte. Si un fichier manque, le terminal utilisera des options par défaut.

Voici les fichiers transférés pendant le démarrage du terminal X :

Après un démarrage réussi, la fenêtre console du terminal X doit apparaître avec une barre de menus. La touche "Setup" du clavier fait apparaître/disparaître cette fenêtre. Le menu déroulant "setup" permet de voir et changer les paramètres du terminal X, et de les sauver sur la machine hôte, dans un fichier de configuration qui pourra être réutilisé plus tard.

Si le transfert de fichiers se fait par TFTP, le fichier doit être accessible en lecture pour tous. De la même façon, pour pouvoir sauver un fichier de configuration sur la machine hôte, le fichier doit exister préalablement et être accessible en écriture pour tout le monde. Si vous utilisez TFTP sécurisé (ce qui est recommandé pour des raisons de sécurité), l'accès aux fichiers ne pourra se faire que dans des répertoires déterminés.

Note : le terminal peut rater son démarrage si il était configuré pour fonctionner avec d'autres hôtes ou avec des paramètres différents. Le problème peut être résolu en réinitialisant la NVRAM pour supprimer les paramètres mémorisés.

Pour réinitialiser la NVRAM depuis le boot monitor, tapez la commande "nv". Depuis ce sous-menu choisissez "l" pour charger les valeurs par défaut, "s" pour sauver et enfin "q" pour quitter. Relancez la procédure de démarrage décrite plus haut.

5.4 Connexion sur une machine du réseau

Depuis la barre de menu de la console X, selectionnez le menu déroulant "Terminals" et choisissez l'option "New Telnet...". Lorsque la fenêtre telnet apparaît, tapez l'adresse d'une machine du réseau dans le champ "service" et cliquez sur "OK". La bannière du site choisi devrait apparaître alors. Une fois connecté, on peut lancer des programmes X, y compris un gestionnaire de fenêtres, depuis la fenêtre telnet.

6. Le terminal X et les polices

Le terminal X possède quelques polices internes, appelées "built-ins" dans les menus et fichiers de configuration. Le terminal peut fonctionner avec ces seules polices, mais, en général, on préfère en avoir davantage. On peut ajouter des polices en indiquant des chemins d'accès dans les menus de configuration de la console X, dans les fichiers de configuration, ou par la commande xset.

Lorsque le logiciel serveur X s'exécute sur le terminal, cette commande xset permet de modifier ou consulter la liste de chemins d'accès des polices.

Pour interroger le serveur X : xset -q

Pour ajouter des chemins d'accès : xset +fp chemin

Pour enlever des chemins d'accès : xset -fp chemin

6.1 Le serveur de polices

Le serveur de polices (xfs : X Font Server) tourne sur une des machines du réseau, et fournit des polices au terminal X et aux autres clients du réseau. L'emploi d'un serveur de polices permet d'utiliser une grande variété de polices, parce que le logiciel du serveur X ne traite que des polices bitmap. Lors d'un chargement de police, le serveur de polices peut décompresser, ajuster et convertir des polices pour le serveur X, et peut aider à simplifier la gestion des polices pour des groupes de terminaux et de clients réseau. Le serveur de polices est fourni avec de nombreuses distributions Linux, et a également été incorporé dans le logiciel du consortium X disponible sur ftp.x.org.

Pour indiquer l'utilisation d'un serveur de polices, on met une référence à un service TCP à la place d'un chemin d'accès dans les menus ou fichiers de configuration du terminal X.

Format des références à des services TCP :

tcp/<adresse IP du serveur de polices>:<port utilisé>

Exemple:

tcp/10.0.0.1:7100

Voici un exemple extrait du fichier de configuration d'un terminal X :

xserver-default-font-path = {
        { "tcp/10.0.0.1:7100" }
        { "built-ins" }
}

La commande xset permet d'ajouter un serveur de polices dans la liste des chemins d'accès :

xset +fp tcp/10.0.0.1:7100

AVERTISSEMENT : Certaines versions de NCDWare (logiciel serveur) exigent que le serveur de polices soit indiqué en premier avant les polices prédéfinies "built-ins". Ceci est en contradiction avec la documentation NCD "System Administrator's Guide for UNIX Systems".

Faites des essais, et vérifiez le résultat avec la commande "xset q".

Sur la machine hôte, le serveur de polices xfs est lancé au démarrage par le script rc.local, par la commande suivante :

xfs -config <fichier de configuration> -port <numéro de port>

Le numéro de port standard pour le serveur de polices est 7100. Exemple:

xfs -config /usr/X11/lib/X11/fs/config -port 7100

Exemple de fichier de configuration du serveur de polices :


# Fichier de configuration du serveur de polices

# On autorise au plus 10 clients a se connecter à ce serveur de polices.
client-limit = 10

# lorsqu'un serveur de polices atteint le nombre maximum de client,
# on en démarre un autre.
clone-self = on

# On utilise le syslog d'UNIX pour noter les erreurs.
use-syslog = on

# liste des répertoires de polices
catalog = /usr/X11R6/lib/X11/fonts/misc/,
   /usr/X11R6/lib/X11/fonts/Speedo/,
   /usr/X11R6/lib/X11/fonts/Type1/,
   /usr/X11R6/lib/X11/fonts/75dpi/,
   /usr/X11R6/lib/X11/fonts/100dpi/

# fichier pour noter les erreurs si syslog n'est pas employé
error-file = /usr/X11R6/lib/X11/fs/fs-errors

# 12 points en  decipoints
default-point-size = 120

# 100 x 100 et 75 x 75
default-resolutions = 75,75,100,100

7. Divers

7.1 Terminaux supportés

On m'a dit que les procédures décrites dans ce document fonctionnaient (plus ou moins) pour les terminaux suivants : NCD 19r, NCD 19c, NCD 15b et NCD MCX.

7.2 Références

7.3 Matériel utilisé pour la préparation de ce document

7.4 Remerciements

Je voudrais remercier Michael de Lind van Wijngaarden, Jamal Hadi-Salim et Dwight Hodge pour l'aide apportée pour la préparation de ce document.

7.5 Problèmes restants

7.6 Contact

Vous pouvez m'écrire à ian@permedia.ca pour tous commentaires, suggestions ou contributions.