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).

Table des matières

1 Copyright 2

2 Introduction 2 2.1 Étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Préliminaires 2 3.1 Le terminal X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.2 Connexion physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.3 Logiciel serveur X de NCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4 Configuration de la machine hôte UNIX 3 4.1 TFTP et BootP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

5 Configurer la procédure de démarrage du terminal X 5 5.1 Syntaxe des commandes du Boot Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.2 Menu de configuration “setup” du moniteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.3 Fichiers de configuration du terminal X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5.4 Connexion sur une machine du réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6 Le terminal X et les polices 7 6.1 Le serveur de polices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

7 Divers 8 7.1 Terminaux supportés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7.2 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7.3 Matériel utilisé pour la préparation de ce document . . . . . . . . . . . . . . . . . . . . . . . . 9 7.4 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 7.5 Problèmes restants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 7.6 Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

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 :

– Relier physiquement le terminal X au réseau.

– Configurer la machine hôte UNIX qui servira au boot (démarrage) du terminal X.

– Paramétrer la procédure de boot du terminal X.

– Démarrer le terminal X.

– Se connecter sur le réseau.

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 deuxpoints “ :”. 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 deuxpoints. 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 :

– Le fichier de configuration (par exemple ncd.conf) qui contient les paramètres du terminal X.

– Le fichier des couleurs (par exemple rgb.txt).

– La base de données des symboles des touches (par exemple XKeysymDB).

– Les fichiers catalogues des polices (exemple font.dir, font.alias).

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 <ftp://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”.

7. Divers 8

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

– Pages de manuel UNIX : bootpd(8), tftpd(8), bootptab(5), xdm(1x), xfs(1), fsinfo(1), xset(1), inetd(8),

– HOWTOs : Linux Ethernet HOWTO, Linux Net-3 (Networking) HOWTO,

– NCD Techtips Archive <ftp://ftp.ncd.com/pub/ncd/Archive/NCD-Articles/index.html>,
– NCD Techtips Archive Mirror at CERN <http://wsspinfo.cern.ch/file/NCD-Articles/>,

– Depuis la sortie de la première version de ce mini HOWTO, j’ai découvert un document de NCD qui rend le mien presque inutile. Le NCDware Reference Manual <http://www.ncd.com/doc/ncdware50ref/ front.htm> couvre en détail presque tous les points de la configuration.

– NCDware System Administrator’s Guide for UNIX Systems,

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

– Terminal X : NCD modèle NCD19r avec écran monochrome 19 pouces 1280x1024, 8Mo de RAM.

– Logiciel serveur X : NCDware V3.2.CV 19r_s

– Machines-hôtes : IBM Cyrix 686 P150+ distribution Slackware (noyau Linux version 2.0.31), IBM Cyrix M2 200 MMX distribution Red Hat 5.0 (noyau version 2.0.32).

– Carte réseau : carte Ethernet 10 base T (clone NE 2000) et répèteur multiport 8 voies.

– Serveur de polices version 2, release 6300.

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

– Est il possible (et raisonnable) de démarrer le serveur de polices par inetd ?

– Si la machine sur laquelle tourne le serveur de polices est arrêtée, puis redémarrée et le serveur de polices réactivé, il arrive que le terminal X n’arrive pas à accéder aux polices. Il faut redonner la liste des chemins d’accès des polices avec les menus de la console ou par xset. Pourquoi ?

– Les procédures sont-elles les mêmes pour d’autres modèles de terminaux X ?

– Quelle est la procédure pour démarrer le terminal X en utilisant NFS (Nework File System) ou RARP (Reverse Address Resolution Protocol) ?

– Les messages suivants apparaissent dans la fenêtre console du terminal X. Je suspecte qu’ils sont causés par des extensions XFree86 qui ne font pas partie du serveur X. Quelqu’un peut-il infirmer ou confirmer ?

       %XSERVER-I-NEWCLIENT, host "localhost" connected with blank authorization
       %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "BIG-REQUESTS"
       %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "XKEYBOARD"
       %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "XFree86-Misc"

– Verrons-nous un portage de Linux sur les terminaux X ? Cela semble improbable, mais Linux existe déjà sur d’autres plateformes improbables.

7.6 Contact

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