
                           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 hte 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 diffuss 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 hte fonctionnant sous UNIX,
   en utilisant le protocole _BootP_ (_Boot Protocol_). De nombreux
   terminaux peuvent galement dmarrrer par RARP, NFS, ou depuis une
   carte PCMCIA ou une liaison srie (directe ou par modem).

   Bien que le matriau de ce document soit bas sur l'exprience d'un
   seul type de terminal X, une grande partie des informations qui y
   figurent s'appliquent galement  d'autres modles. Il existe
   galement un _Linux X Terminal mini HOWTO_ (qui est actuellement
   dclar obsolte 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 rseau Unix se rsume aux tapes
   suivantes :

     * Relier physiquement le terminal X au rseau.
     * Configurer la _machine hte_ UNIX qui servira au _boot_
       (dmarrage) du terminal X.
     * Paramtrer la procdure de boot du terminal X.
     * Dmarrer le terminal X.
     * Se connecter sur le rseau.

3. Prliminaires

3.1 Le terminal X

   Un terminal X est un appareil capable d'afficher et de communiquer sur
   un rseau, en utilisant le systme de fentrage pour rseaux
   distribus connu sous le nom de X. Typiquement, le logiciel du
   terminal X (ce qu'on appelle le _serveur X_) est charg depuis le
   rseau au dmarrage du terminal. Les programmes autres que le serveur
   X (programmes _clients X_) ne sont pas excuts localement ( part
   quelques exceptions) par le terminal X, qui affiche des programmes qui
   tournent sur d'autres machines du rseau. Le terminal X est donc un
   genre de _network computer_ qui utilise le protocole X pour accder
   aux ressources du rseau.

3.2 Connexion physique

   Le terminal X NCD (nous avons utilis le modle _Xncd19r_ pour la
   prparation de ce document) possde une prise RJ-45 (paire torsade)
   pour Ethernet 10 Base T. Il faut un rpteur multiport (_hub_) pour
   relier plus de deux appareils en paire torsade. Si le terminal X et
   la machine hte sont les seules machines de votre rseau, vous pouvez
   les connecter par un cble crois qui est dcrit dans le _Linux
   Ethernet HOWTO_.

3.3 Logiciel serveur X de NCD

   Le fichier qui contient le logiciel serveur X du terminal est
   disponible auprs du constructeur, qui le fournit en principe avec le
   terminal. Ce fichier va rsider sur la machine hte, d'o il sera
   tlcharg au dmarrage du terminal X. Il est spcifique du modle du
   terminal, mais indpendant du type de la machine hte. Le terminal
   peut dmarrer 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 fentres, qui s'excuteront localement sur le terminal
   X.

4. Configuration de la machine hte UNIX

   Au dmarrage, le terminal X va chercher ses fichiers (y compris le
   serveur X) sur une machine du rseau. Une fois dmarr, le serveur X
   contrlera les entres (clavier, souris), l'affichage, les clients
   locaux et la communication par le protocole X. Le serveur X s'excute
   sur le terminal X, et n'a donc besoin d'aucune compatibilit
   logicielle avec la machine hte.

4.1 TFTP et BootP

   Les protocoles TFTP (_Trivial File Transfer Protocol_, protocole
   lmentaire de transfert de fichiers) et BootP (_boot protocol_,
   protocole d'amorage) sont utiliss ensemble sur la machine hte pour
   permettre au terminal X de rcuprer le serveur X et les fichiers de
   configuration  travers le rseau. Ces deux services sont
   habituellement dmarrs par _inetd_ (Internet Daemon).

   Lorsque le terminal X est mis sous tension, si il est configur pour
   un dmarrage par le rseau, il met un appel gnral (_broadcast_) sur
   le rseau en utilisant le protocole _BootP_ (protocole d'amorage
   TCP/IP). Ce message d'appel contient l'adresse matrielle (Ethernet)
   du terminal X, adresse qui sera utilise par la machine hte pour
   rpondre  la "demande de boot".

   Lorsque la machine hte reoit une demande de boot, _inetd_ (qui
   surveille un port dsign dans /etc/services) dmarre le dmon _BootP_
   spcifi 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
   paramtre de la ligne de TFTP indique le rpertoire qui contient les
   fichiers pour le terminal X. Bien que les noms de rpertoires ne
   soient pas obligatoires, pour des raisons de scurit il faut toujours
   les mettre, de faon  restreindre l'accs TFTP  ces seuls
   rpertoires.

   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/n
cd/
bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd

   Lors de son activation, le dmon du serveur BootP lit son fichier de
   donnes /etc/bootptab. Une description de ce terminal X doit s'y
   trouver. Chaque description contient un ensemble d'lments spars
   par des deux-points ":". Le premier lment est le nom du terminal.

   lments utiles du fichier bootptab :

   _hd_
          (_home directory_) Rpertoire 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-rseau (ici 255.0.0.0). Pour comprendre l'usage
          des masques de sous-rseau et autres principes des rseaux IP,
          consultez le _Linux NET-3 HOWTO_.

   _gw(gateway)_
          adresse IP de la passerelle (ici 10.0.0.1).

   _ht(hardware type) _
          Type de matriel. C'est ethernet dans cet exemple.

   _ha(hardware address)_
          Adresse matrielle du terminal X (adresse Ethernet sur 6
          octets). D'aprs la page _bootptab_ du manuel UNIX, l'lment
          "_ht_" doit prcder le "_ha_". L'adresse Ethernet s'affiche 
          la mise sous tension du terminal X, sous forme d'une srie de 6
          nombres  deux chiffres hexadcimaux, spars 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 rsolution 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 modle du terminal X, ici
          Xncd19r).

   Ce qui suit est un exemple de fichier /etc/bootptab. Le caractre "\"
   sert  neutraliser les fins de ligne.
       ______________________________________________________________

# Ceci est une description, appele 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'lment
# ``tc'' qui fait rfrence  la description ``default''.

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

   Lorsque le dmon bootpd trouve (dans le fichier bootptab) une
   description qui correspond  l'adresse matrielle contenue dans une
   requte de boot, il envoie une rponse  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 hte. 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 hte (serveur de boot)
10.0.0.2        myxterm         # terminal X

5. Configurer la procdure de dmarrage 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 mmoire et de
   l'excuter. Si le terminal X ne peut pas booter, la chane d'invite
   ">" du moniteur (_Boot Monitor_) apparat. Le Boot Monitor est un
   programme enregistr dans les mmoires 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 hte au dmarrage. Utilisez "?" pour avoir la liste des
   commandes du moniteur.

   Les paramtres de configuration que vous modifiez grce au moniteur
   sont stocks dans une mmoire non volatile (NVRAM = non-volatile
   random access memory), et sont conservs lorsque le terminal est mis
   hors-tension.

   Pour booter le terminal depuis le moniteur, on a le choix entre la
   commande "bt" et un systme de menus. Les deux mthodes permettent en
   gros de faire la mme chose, mais les menus donnent accs  davantage
   de paramtres.

5.1 Syntaxe des commandes du _Boot Monitor_

> bt fichier IP_terminal IP_hte IP_passerelle masque_sous-rseau

   _fichier_
          Le nom du fichier, sur la machine hte, qui contient le
          logiciel du serveur X pour le terminal (dans notre exemple
          "Xncd19r"). Vrifiez que c'est le mme nom que celui indiqu
          dans le fichier bootptab (expliqu dans la section prcdente)
          pour ce terminal X.

   _IP_terminal_
          L'adresse IP affecte au terminal X (ici 10.0.0.2).
          Pareillement, cette adresse doit tre celle indique dans
          bootptab.

   _IP_hte_
          L'adresse IP de la machine hte (10.0.0.1).

   _IP_passerelle_
          L'adresse IP de la passerelle du sous-rseau (par exemple
          10.0.0.1).

   _masque_sous-rseau_
          Le masque de sous-rseau, en notation IP dcimale ou
          hexadcimale (par exemple 255.0.0.0 ou ff000000).

5.2 Menu de configuration "setup" du moniteur

   Les menus de configuration sont appels par la touche "Setup" ou en
   tapant la commande "se" aprs l'invite '>' du moniteur.

   _Get IP Addresses From_
          Normalement, l'adresse IP du terminal devrait tre obtenue
          depuis la configuration stocke dans la NVRAM. Ne selectionnez
          'Network' que si vous utilisez RARP (_reverse ARP_) pour
          dterminer l'adresse IP du terminal X depuis la machine hte.

   _Terminal IP Address_
          L'adresse IP affecte au terminal X (par exemple 10.0.0.2).
          C'est la mme chose que le paramtre 'IP_terminal' vu
          prcdemment.

   _First Boot Host IP Address_
          L'adresse IP de la machine hte (ici 10.0.0.1). Mme chose que
          le paramtre 'IP_hte'.

   _Gateway IP Address_
          L'adresse IP de la passerelle de sous-rseau. Correspond 
          "IP_passerelle".

   _Subnet Mask_
          Le masque de sous-rseau, en notation IP dcimale (voir
          variable "masque_sous-rseau" plus haut).

   _Broadcast IP Address_
          L'adresse IP pour la diffusion vers le sous-rseau (par exemple
          10.255.255.255).

   _Boot File_
          Le nom du fichier qui, sur la machine hte, contient le
          logiciel serveur X du terminal (exemple "Xncd19r"). Mme chose
          que le paramtre "fichier" dcrit plus haut.

   _TFTP Boot Directory_
          Le nom du rpertoire, sur la machine hte, 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
          hte (voir plus loin).

   _UNIX Config Directory_
          Le nom du rpertoire qui contient le fichier de configuration
          (exemple "/usr/X11/lib/X11/ncd/").

   _TFTP Order, NFS Order, Local Order_
          Mettez "1" pour la mthode de dmarrage que vous prfrez,
          c'est--dire TFTP si vous dmarrez par BootP depuis une machine
          hte.

5.3 Fichiers de configuration du terminal X

   Pendant la procdure de boot, le terminal X va essayer d'aller
   chercher des fichiers depuis la machine hte. Si un fichier manque, le
   terminal utilisera des options par dfaut.

   Voici les fichiers transfrs pendant le dmarrage du terminal X :

     * Le fichier de configuration (par exemple ncd.conf) qui contient
       les paramtres du terminal X.
     * Le fichier des couleurs (par exemple rgb.txt).
     * La base de donnes des symboles des touches (par exemple
       XKeysymDB).
     * Les fichiers catalogues des polices (exemple font.dir,
       font.alias).

   Aprs un dmarrage russi, la fentre console du terminal X doit
   apparatre avec une barre de menus. La touche "Setup" du clavier fait
   apparatre/disparatre cette fentre. Le menu droulant "setup" permet
   de voir et changer les paramtres du terminal X, et de les sauver sur
   la machine hte, dans un fichier de configuration qui pourra tre
   rutilis plus tard.

   Si le transfert de fichiers se fait par TFTP, le fichier doit tre
   accessible en lecture pour tous. De la mme faon, pour pouvoir sauver
   un fichier de configuration sur la machine hte, le fichier doit
   exister pralablement et tre accessible en criture pour tout le
   monde. Si vous utilisez TFTP scuris (ce qui est recommand pour des
   raisons de scurit), l'accs aux fichiers ne pourra se faire que dans
   des rpertoires dtermins.

   _Note :_ le terminal peut rater son dmarrage si il tait configur
   pour fonctionner avec d'autres htes ou avec des paramtres
   diffrents. Le problme peut tre rsolu en rinitialisant la NVRAM
   pour supprimer les paramtres mmoriss.

   Pour rinitialiser la NVRAM depuis le _boot monitor_, tapez la
   commande "nv". Depuis ce sous-menu choisissez "l" pour charger les
   valeurs par dfaut, "s" pour sauver et enfin "q" pour quitter.
   Relancez la procdure de dmarrage dcrite plus haut.

5.4 Connexion sur une machine du rseau

   Depuis la barre de menu de la console X, selectionnez le menu
   droulant "Terminals" et choisissez l'option "New Telnet...". Lorsque
   la fentre telnet apparat, tapez l'adresse d'une machine du rseau
   dans le champ "service" et cliquez sur "OK". La bannire du site
   choisi devrait apparatre alors. Une fois connect, on peut lancer des
   programmes X, y compris un gestionnaire de fentres, depuis la fentre
   telnet.

6. Le terminal X et les polices

   Le terminal X possde quelques polices internes, appeles "built-ins"
   dans les menus et fichiers de configuration. Le terminal peut
   fonctionner avec ces seules polices, mais, en gnral, on prfre en
   avoir davantage. On peut ajouter des polices en indiquant des chemins
   d'accs 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'excute sur le terminal, cette
   commande xset permet de modifier ou consulter la liste de chemins
   d'accs des polices.

   Pour interroger le serveur X : xset -q

   Pour ajouter des chemins d'accs : xset +fp _chemin_

   Pour enlever des chemins d'accs : xset -fp _chemin_

6.1 Le serveur de polices

   Le serveur de polices (xfs : _X Font Server_) tourne sur une des
   machines du rseau, et fournit des polices au terminal X et aux autres
   clients du rseau. L'emploi d'un serveur de polices permet d'utiliser
   une grande varit 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 dcompresser, 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 rseau. 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
   rfrence  un service TCP  la place d'un chemin d'accs dans les
   menus ou fichiers de configuration du terminal X.

   Format des rfrences  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'accs :

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 prdfinies "built-ins". Ceci est en contradiction avec la
   documentation NCD "System Administrator's Guide for UNIX Systems".

   Faites des essais, et vrifiez le rsultat avec la commande "xset q".

   Sur la machine hte, le serveur de polices xfs est lanc au dmarrage
   par le script rc.local, par la commande suivante :

xfs -config <fichier de configuration> -port <numro de port>

   Le numro 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 dmarre un autre.
clone-self = on

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

# liste des rpertoires 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 supports

   On m'a dit que les procdures dcrites dans ce document fonctionnaient
   (plus ou moins) pour les terminaux suivants : _NCD 19r, NCD 19c, NCD
   15b_ et _NCD MCX_.

7.2 Rfrences

     * 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,
     * NCD Techtips Archive Mirror at CERN,
     * Depuis la sortie de la premire version de ce _mini HOWTO_, j'ai
       dcouvert un document de NCD qui rend le mien presque inutile. Le
       NCDware Reference Manual couvre en dtail presque tous les points
       de la configuration.
     * _NCDware System Administrator's Guide for UNIX Systems_,

7.3 Matriel utilis pour la prparation de ce document

     * Terminal X : NCD modle NCD19r avec cran monochrome 19 pouces
       1280x1024, 8Mo de RAM.
     * Logiciel serveur X : NCDware V3.2.CV 19r_s
     * Machines-htes : 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 rseau : carte Ethernet 10 base T (clone NE 2000) et
       rpteur 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 apporte pour la prparation de
   ce document.

7.5 Problmes restants

     * Est il possible (et raisonnable) de dmarrer le serveur de polices
       par _inetd_ ?
     * Si la machine sur laquelle tourne le serveur de polices est
       arrte, puis redmarre et le serveur de polices ractiv, il
       arrive que le terminal X n'arrive pas  accder aux polices. Il
       faut redonner la liste des chemins d'accs des polices avec les
       menus de la console ou par xset. Pourquoi ?
     * Les procdures sont-elles les mmes pour d'autres modles de
       terminaux X ?
     * Quelle est la procdure pour dmarrer le terminal X en utilisant
       NFS (Nework File System) ou RARP (Reverse Address Resolution
       Protocol)?
     * Les messages suivants apparaissent dans la fentre console du
       terminal X. Je suspecte qu'ils sont causs 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-REQ
UESTS"
%XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "XKEYBOA
RD"
%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 dj sur d'autres plateformes
       improbables.

7.6 Contact

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