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