ian@permedia.ca
billaud@labri.u-bordeaux.fr
).
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.
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.
La connexion d'un terminal X à un réseau Unix se résume aux étapes suivantes :
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.
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.
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.
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.
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
:
(home directory) Répertoire contenant
le fichier de boot du terminal X (ici /usr/X11/lib/X11/ncd/
).
Addresse IP du terminal X (dans notre exemple 10.0.0.1
).
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.
adresse IP de la passerelle
(ici 10.0.0.1
).
Type de
matériel. C'est ethernet
dans cet exemple.
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
Suite d'une autre description du fichier bootptab. Voir l'exemple ci-dessous.
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).
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
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.
> bt fichier IP_terminal IP_hôte IP_passerelle masque_sous-réseau
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.
L'adresse IP affectée au terminal X (ici 10.0.0.2
). Pareillement,
cette adresse doit être celle indiquée dans bootptab
.
L'adresse IP de la machine hôte (10.0.0.1
).
L'adresse IP de la passerelle du sous-réseau
(par exemple 10.0.0.1
).
Le masque de sous-réseau, en notation IP
décimale ou hexadécimale (par exemple 255.0.0.0
ou
ff000000
).
Les menus de configuration sont appelés par la touche "Setup" ou
en tapant la commande "se
" après l'invite '>' du moniteur.
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.
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.
L'adresse IP de la machine hôte
(ici 10.0.0.1
). Même chose que le paramètre 'IP_hôte'.
L'adresse IP de la passerelle de sous-réseau. Correspond à "IP_passerelle".
Le masque de sous-réseau, en notation IP décimale (voir variable "masque_sous-réseau" plus haut).
L'adresse IP pour la diffusion vers
le sous-réseau (par exemple 10.255.255.255
).
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.
Le nom du répertoire, sur la machine hôte, qui contient le logiciel serveur
(par exemple "/usr/X11/lib/X11/ncd/
" ou "/tftpboot/
").
Le nom du fichier de configuration du terminal X sur la machine hôte (voir plus loin).
Le nom du répertoire qui contient le fichier de configuration
(exemple "/usr/X11/lib/X11/ncd/
").
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.
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 :
ncd.conf
)
qui contient les paramètres du terminal X.rgb.txt
).XKeysymDB
).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.
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.
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
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
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.
NCD19r
avec écran monochrome 19
pouces 1280x1024, 8Mo de RAM.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.
xset
. Pourquoi ?
%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"
Vous pouvez m'écrire à ian@permedia.ca
pour tous commentaires,
suggestions ou contributions.