Mini HOTO terminal X NCD Ian Hodge, ihodge@nortel.ca v1.01, 9 Août 1998 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. Introduction 2.1 Étapes 3. Préliminaires 3.1 Le terminal X 3.2 Connexion physique 3.3 Logiciel serveur X de NCD 4. Configuration de la machine hôte UNIX 4.1 TFTP et BootP 5. Configurer la procédure de démarrage du terminal X 5.1 Syntaxe des commandes du Boot Monitor 5.2 Menu de configuration ``setup'' du moniteur 5.3 Fichiers de configuration du terminal X 5.4 Connexion sur une machine du réseau 6. Le terminal X et les polices 6.1 Le serveur de polices 7. Divers 7.1 Références 7.2 Matériel utilisé pour la préparation de ce document 7.3 Remerciements 7.4 Problèmes restants 7.5 Contact ______________________________________________________________________ 11.. CCooppyyrriigghhtt Le _N_C_D _X _t_e_r_m_i_n_a_l _m_i_n_i _H_O_W_T_O est copyright (C) 1998 par Ian Hodge. Les documents _H_O_W_T_O 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. 22.. IInnttrroodduuccttiioonn 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 _B_o_o_t_P (Boot protocol). Il est également possible de démarrer De nombreux terminaux 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 _L_i_n_u_x _X _T_e_r_m_i_n_a_l _m_i_n_i _H_O_W_T_O (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. 22..11.. ÉÉttaappeess 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 _m_a_c_h_i_n_e _h_ô_t_e 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. 33.. PPrréélliimmiinnaaiirreess 33..11.. LLee tteerrmmiinnaall XX 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 (à part le serveur X et quelques exceptions) ne sont pas exécutés localement 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 _n_e_t_w_o_r_k _c_o_m_p_u_t_e_r qui utilise le protocole X pour accéder aux ressources du réseau. 33..22.. CCoonnnneexxiioonn pphhyyssiiqquuee 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 (_h_u_b) 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 _L_i_n_u_x _E_t_h_e_r_n_e_t _H_O_W_T_O. 33..33.. LLooggiicciieell sseerrvveeuurr XX ddee NNCCDD 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 pourront s'exécuter localement sur le terminal X. 44.. CCoonnffiigguurraattiioonn ddee llaa mmaacchhiinnee hhôôttee UUNNIIXX 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. 44..11.. TTFFTTPP eett BBoooottPP Les protocoles TFTP (_T_r_i_v_i_a_l _F_i_l_e _T_r_a_n_s_f_e_r _P_r_o_t_o_c_o_l, protocole élémentaire de transfert de fichiers) et BootP (_b_o_o_t _p_r_o_t_o_c_o_l, 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 _i_n_e_t_d (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 (_b_r_o_a_d_c_a_s_t) 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 _/_e_t_c_/_b_o_o_t_p_t_a_b. Une description de ce terminal X soit s'y trouver. Chaque entrée 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 : iipp Addresse IP du terminal X (dans notre exemple 10.0.0.1). ssmm (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 _L_i_n_u_x _N_E_T_-_3 _H_O_W_T_O. ggww (gateway) adresse IP de la passerelle (ici 10.0.0.1). hhtt (hardware type) Type de matériel. Ethernet dans cet exemple. hhaa (hardware address) Adresse matérielle du terminal X (adresse Ethernet sur 6 octets). D'après la page _b_o_o_t_p_t_a_b du manuel UNIX, l'élément ``hhtt'' doit précéder le ``hhaa''. 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. ttcc (table continuation) Suite d'une autre entrée dans la bootptab. Voir l'exemple ci-dessous. ddss (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). hhdd (home directory) Répertoire contenant le fichier de boot du terminal X (ici /usr/X11/lib/X11/ncd/). bbff (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 entree generale, appelee 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'element # ``tc'' qui fait reference à l'entree ``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 entrée 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 entrée 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 hote (serveur de boot) 10.0.0.2 myxterm # terminal X 55.. CCoonnffiigguurreerr llaa pprrooccéédduurree ddee ddéémmaarrrraaggee dduu tteerrmmiinnaall XX Lorsqu'il est mis sous tension, le terminal X tente de _b_o_o_t_e_r, 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 (_B_o_o_t _M_o_n_i_t_o_r) 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. 55..11.. SSyynnttaaxxee ddeess ccoommmmaannddeess dduu BBoooott MMoonniittoorr > bt fichier IP_terminal IP_hôte IP_passerelle masque_sous-réseau ffiicchhiieerr 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. IIPP__tteerrmmiinnaall L'adresse IP affectée au terminal X (ici 10.0.0.2). Pareillement, cette adresse doit être que celle indiquée dans bootptab. IIPP__hhôôttee L'adresse IP de la machine hôte (10.0.0.1). IIPP__ppaasssseerreellllee L'adresse IP de la passerelle du sous-réseau (par exemple 10.0.0.1). mmaassqquuee__ssoouuss--rréésseeaauu Le masque de sous-réseau, en notation IP décimale ou hexadécimale (exemple 255.0.0.0 ou ff000000). 55..22.. MMeennuu ddee ccoonnffiigguurraattiioonn ````sseettuupp'''' dduu mmoonniitteeuurr Les menus de configuration sont appelés par la touche ``Setup'' ou en tapant la commande ``se'' après l'invite '>' du moniteur. GGeett IIPP AAddddrreesssseess FFrroomm 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. TTeerrmmiinnaall IIPP AAddddrreessss 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. FFiirrsstt BBoooott HHoosstt IIPP AAddddrreessss L'adresse IP de la machine hôte (ici 10.0.0.1). Même chose que le paramètre 'IP_hôte'. GGaatteewwaayy IIPP AAddddrreessss L'adresse IP de la passerelle de sous-réseau. Correspond à ``IP_passerelle''. SSuubbnneett MMaasskk Le masque de sous-réseau, en notation IP décimale (voir variable ``masque_sous-réseau'' plus haut). BBrrooaaddccaasstt IIPP AAddddrreessss L'adresse IP pour la diffusion vers le sous-réseau (par exemple 10.255.255.255). BBoooott FFiillee 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. TTFFTTPP BBoooott DDiirreeccttoorryy Le nom du répertoire, sur la machine hôte, qui contient le logiciel serveur (par exemple ``/usr/X11/lib/X11/ncd/'' ou ``/tftpboot/''). CCoonnffiigg ffiillee Le nom du fichier de configuration du terminal X sur la machine hôte (voir plus loin). UUNNIIXX CCoonnffiigg DDiirreeccttoorryy Le nom du répertoire qui contient le fichier de configuration (exemple ``/usr/X11/lib/X11/ncd/''). TTFFTTPP OOrrddeerr,, NNFFSS OOrrddeerr,, LLooccaall OOrrddeerr 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. 55..33.. FFiicchhiieerrss ddee ccoonnffiigguurraattiioonn dduu tteerrmmiinnaall XX 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 sera permis que dans des répertoires déterminés. 55..44.. CCoonnnneexxiioonn ssuurr uunnee mmaacchhiinnee dduu rréésseeaauu 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. 66.. LLee tteerrmmiinnaall XX eett lleess ppoolliicceess 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 Pour enlever des chemins d'accès : xset -fp 66..11.. LLee sseerrvveeuurr ddee ppoolliicceess 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. Le serveur de polices améliore le temps d'accès, et permet d'utiliser davantage de polices que par TFTP. Le serveur de polices fait partie 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/: 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 -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 fichier de configuration du serveur de polices : # fichier de configuration du serveur de polices # $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $ clone-self = on use-syslog = on catalog = /usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Spee do/,/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,/u sr/X11R6/lib/X11/fonts/100dpi/ error-file = /usr/X11R6/lib/X11/fs/fs-errors # in decipoints default-point-size = 120 default-resolutions = 75,75,100,100 Note du traducteur : des contraintes de mise en page font apparaître l'option ``catalog'' sur trois lignes, en réalité cette option s'écrit en une seule ligne. 77.. DDiivveerrss 77..11.. RRééfféérreenncceess 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 NCDware System Administrator's Guide for UNIX Systems 77..22.. MMaattéérriieell uuttiilliisséé ppoouurr llaa pprrééppaarraattiioonn ddee ccee ddooccuummeenntt 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. 77..33.. RReemmeerrcciieemmeennttss 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. 77..44.. PPrroobbllèèmmeess rreessttaannttss · 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 ? · La date du fichier d'erreurs désigné dans le fichier de configuration du serveur de fichiers est modifiée quand xfs est utilisé, mais le fichier est toujours vide. · Est-il possible de vérifier le fonctionnement du serveur de polices depuis la machine hôte ? · Les procédures sont-elles les mêmes pour d'autres modèles de terminaux X ? · Et XDM ? · 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" 77..55.. CCoonnttaacctt Vous pouvez m'écrire à ihodge@nortel.ca pour tous commentaires, suggestions ou contributions. .