Odys"> Odys"> Debian"> Debian « like »"> ]>
Terminaux X11 pour &Distrib; HOWTO <subtitle>Solution basée sur le projet TX <author>Benoît NICQ <benoit.nicq@odys-solutions.net> <inst>pour <sf>Odys</sf> <date>$Date: 2003/06/26 07:50:59 $ <abstract> Ce document détaille la procédure d'installation d'un système de terminaux X11 <bf>TX</bf> sur un serveur fonctionnant avec une distribution &Distrib; (Knoppix, Freeduc, ...). La procédure décrite devrait toutefois fonctionner d'autres distributions GNU/Linux.</abstract> <toc> <!-- <sect>Introduction <p>La fréquence élevée du renouvellement des parcs informatiques dans les entreprises ou les collectivités fait qu'il est de plus en plus facile de trouver des anciens PC (3 à 4 ans d'âge) à bas prix voire même gratuits. Ces PC « obsolètes » ne répondent plus aux exigences des utilisateurs. Il est en effet in-envisageable de faire fonctioner par exemple Openoffice sur un Pentium 90 équipé de 16 Mo de RAM. <P>Or il est possible de transformer ces « vieux » PC en terminaux graphiques capables de satisfaire à nouveau les attentes des utilisateurs, sans trop de compromis et à partir du parc informatique existant ou de matériel récupéré. <P>Parce que ce système permet de réaliser de grosses économies de moyens, de préserver l'environnement et le milieu de l'éducation semble sensible à ces problématiques il nous a semblé pertinent de rédiger ce document à destination des utilisateurs de la distribution &Distrib;. --> <sect>Introduction au terminaux X <p> Les Terminaux sont des clients légers (<em>thin clients</em>) qui ne servent qu'à l'affichage (et la saisie). Les applications sont exécutées sur une autre machine que l'on nommera « serveur d'application » ou plus simplement « serveur ». Ce dernier sera à priori une machine neuve disposant suffisamment de ressources pour faire fonctionner les applications récentes. <P> Les stations sont reliées au serveur par un réseau Ethernet. Si elles sont équipées d'une carte réseau munie d'un <em>bootrom</em> elles pourront être dépourvues de disque dur ; ce sont des machines <em>diskless</em>. <p>Le client démarre directement sur le réseau et récupère son système de fichiers via NFS. Dans la station de travail nous n'avons pas besoin de mémoire de masse. Il y a donc absence de : <itemize> <item>disque dur ; <item>lecteur de disquette ; <item>lecteur de CD-ROM. </itemize> <p>Il n'y a que le serveur à administrer. Chaque utilisateur fait fonctionner, depuis son terminal X, les applications installées sur le disque dur du serveur, et mobilise essentiellement le microprocesseur et la mémoire vive de ce dernier. <sect1>Des terminaux X pour quels usages? <p>Les terminaux X sont utilisables principalement pour un accès à l'Internet, la messagerie, la bureautique, la retouche d'image... <p>Ils ne conviendront pas pour les applications utilisant l'OpenGL, la lecture de vidéos, ou tout autre programme ayant besoin d'un accès performant à la carte vidéo, comme par exemple les applications de jeux en trois dimensions dites « en immersion ». <sect>Introduction au projet TX <p>TX est un projet de terminaux X11 développé par &Odys; sous licence GPL. Sa particularité est d'utiliser le protocole DHCP pour « personnaliser » les différents Terminaux. On recourt bien-sûr à DHCP pour paramétrer l'interface réseau des terminaux, mais aussi pour configurer le serveur XFree en fonction du matériel spécifique, la carte son... La maintenance du parc se trouve grandement facilitée par le fait qu'il n'y a qu'un fichier à renseigner pour configurer l'ensemble des terminaux: <tt>dhcpd.conf</tt>. <p>TX est un projet destiné à être installé depuis une distribution &Debian;, mais pourra être facilement adapté pour tout autre distribution GNU/Linux. <sect>Pré-requis <p>Nous considérons que l'intallation préalable de la distribution &Distrib; s'est déroulée normalement et que les paramètres réseau sont configurés comme indiqué ci-dessous. <p>Pour l'exemple, le réseau est <tt>192.168.0.0</tt>, le masque de sous-réseau <tt>255.255.255.0</tt>, l'adresse IP du serveur d'applications <tt>192.168.0.1</tt>, et le nom de domaine <tt>mondomaine.loc</tt>. <sect1>Installation sur disque dur des distributions basées sur la KNOPPIX <p>Toutes les informations nécéssaires à l'installation d'une distribution basée sur la <bf>KNOPPIX</bf> sont disponiblent sur le site <url url="http://knoppixfr.tuxfamily.org/" name="KnoppixFr"> à la page <url url="http://knoppixfr.tuxfamily.org/index.php?page=installhd" name="Installation de KNOPPIX sur le disque dur" > <sect>Installation <sect1>Récupérer et installer les paquets nécessaires <p>Il faut installer quelques paquets supplémentaires qui ne font pas partie de la &Distrib;. Pour cela il est nécessaire de disposer d'une connexion à l'Internet pour accéder aux référentiels (<em>repositories</em>) &Debian;. <!-- FIXME Installation depuis un cdrom est à venir. <p>Il faut installer quelques paquets supplémentaires qui ne font pas partie de la &Distrib;. Pour cela il est nécessaire de disposer des CD-ROM de la &Debian; Woody (le premier CD-ROM suffit), ou une d'une connexion à l'Internet pour accéder aux référentiels (<em>repositories</em>) &Debian;. <sect2>Installation depuis un lecteur de CD-ROM <p>Le plus simple est d'utiliser la commande <tt>apt-cdrom</tt>. Insérer le 1er CD-ROM dans le lecteur puis exécuter la commande <tscreen><verb> # apt-cdrom add </verb></tscreen> <p>Pour en savoir plus, <tt>man apt-cdrom</tt>. Tous les CD-ROM de la Woody ne sont pas indispensables, mais il semble judicieux d'en profiter pour référencer les sept CD-ROM qui la constituent. <p>Télécharger la dernière version du paquet TX à l'adresse suivante: <url url="http://debian.odys-solutions.net/debian/stable/" name="tx-debootstrap">. <p>Installer les paquets officiels de la Woody : <tscreen><verb> # apt-get -u install debootstrap dhcp3-common dhcp3-server nfs-kernel-server tftpd-hpa xfs syslinux </verb></tscreen> <p>Ensuite installer le paquet tx-debootstrap téléchargé depuis l'URI indiquée ci-dessus : <tscreen><verb> # dpkg -i tx-debootstrap_x-x-x_i386.deb </verb></tscreen> <sect2>Installation depuis l'Internet --> <p>Pour installer les paquets via l'Internet éditer « à la main » le fichier <tt>/etc/apt/sources.list</tt>, pour y ajouter la ligne : <tscreen><verb> # deb http://debian.odys-solutions.net/debian/ stable/ </verb></tscreen> <p>Le fichier <tt>/etc/apt/sources.list</tt> pourrait par exemple ressembler à : <tscreen><verb> # See sources.list(5) for more information, especialy # Remember that you can only use http, ftp or file URIs # CDROMs are managed through the apt-cdrom tool. # Miroir français deb ftp://ftp.fr.debian.org/debian/ woody main non-free contrib deb ftp://ftp.fr.debian.org/debian-non-US/ woody/non-US main contrib non-free # Mises à jour de sécurité deb ftp://security.debian.org/debian-security/ woody/updates main contrib non-free # Paquets TX n'existant sur la distribution standart. Accès http uniquement !!! deb http://debian.odys-solutions.net/debian/ stable/ </verb></tscreen> <p>Ensuite, installer les paquets avec les commandes : <tscreen><verb> # apt-get update # apt-get -u install debootstrap dhcp3-common dhcp3-server nfs-kernel-server tftpd-hpa xfs tx-bootstrap </verb></tscreen> <!-- On what network interfaces should the dhcp server listen? repondre eth0 --> <p>Une fois les paquets installés il ne reste plus qu'a créer le système de fichier pour le &tx;. Pour cela, il faut éxécuter sous le compte de <bf>root</bf>: <tscreen><verb> # mk-tx-root </verb></tscreen> <p>Une fois terminé, le dossier /var/lib/diskless/tx est créé et peuplé par le système des &tx;. <p>Si les cartes réseaux des clients ont un bootrom utilisant le protocol <bf>PXE</bf> il faut installer le « loader » <bf>pxelinux</bf> dans le dossier /var/tftp. <tscreen><verb> # cp /usr/lib/syslinux/pxelinux.0 /var/tftp/ # cp -r /usr/share/doc/tx-bootstrap/examples/pxelinux.cfg /var/tftp/ </verb></tscreen> <sect1>Renseigner le fichier /etc/hosts <p>Afin que les terminaux soient connus du serveur il faut ajouter une ligne pour chaque terminal X dans le fichier <tt>/etc/hosts</tt>. Ex: <tscreen><verb> # /etc/hosts 127.0.0.1 localhost 192.168.0.1 serveur.mondomaine.loc serveur # adresses IP, FQDN et aliases des terminaux X 192.168.0.101 tx1.mondomaine.loc tx1 192.168.0.102 tx2.mondomaine.loc tx2 192.168.0.103 tx3.mondomaine.loc tx3 192.168.0.104 tx4.mondomaine.loc tx4 192.168.0.105 tx5.mondomaine.loc tx5 192.168.0.106 tx6.mondomaine.loc tx6 </verb></tscreen> <sect1>Configuration du serveur NFS <p>Les terminaux accèdent à leur système de fichiers par le réseau via NFS. Pour autoriser les machines à accéder à leur système de fichiers vous devez en autoriser l'exportation. Pour cela vous devez créer le fichier <tt>/etc/exports</tt> et ajouter la ligne: <tscreen><verb> # /etc/exports /var/lib/diskless/tx *.mondomaine.loc(ro,no_root_squash) </verb></tscreen> <!-- parfois nécéssaire, avoir! /var/lib/diskless/tx 192.168.0.*/24(ro,no_root_squash,no_subtree_check) --> <p>Quelques explications. <p><tt>/var/lib/diskless/tx</tt> correspond au système de fichier utilisé par les terminaux. Il est commun à tous les terminaux. Il ne faut pas que l'on puisse modifier ce système de fichiers depuis un poste et c'est pour cela que l'on précise <tt>ro</tt> (<em>read only</em>). <p>L'option <tt>no_root_squash</tt>, est indispensable pour autoriser la machine qui utilise ce dossier comme son système de fichier à y accéder en tant que <tt>root</tt>. <p>Une fois le fichier <tt>/etc/exports renseigné</tt>, il faut réexporter l'ensemble des dossiers avec la commande : <tscreen><verb> # exportfs -r </verb></tscreen> <p> ou, plus radicalement : <tscreen><verb> # /etc/init.d/nfs-kernel-server restart </verb></tscreen> <sect1>Configuration du serveur TFTP <p>Le serveur <tt>tftpd</tt> est lancé par <tt>inetd</tt>. Le fichier <tt>/etc/inetd.conf</tt> devrait contenir une ligne du genre : <tscreen><verb> tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftp </verb></tscreen> <p>Si ce n'est pas <tt>tftpd-hpa</tt> qui est utilisé mais <tt>atftpd</tt> ou <tt>tftpd</tt> il faut veiller à ce que le dossier des fichiers à partager (ici uniquement les noyaux) soit bien <tt>/var/tftp</tt>. Attention : le protocole TFTP est par définition peu sécurisé, et c'est pourquoi il convient de limiter le plus strictement possible l'arborescence qu'il rend accessible via le réseau ; c'est à dire ne pas autoriser l'accès à <tt>/var</tt> ou encore moins à la racine du système de fichiers du serveur, et ne pas placer de fichier ou données confidentielles dans ce répertoire. <p>Une fois le fichier <tt>inetd.conf</tt> modifié, il ne faut pas oublier de prendre en compte les changements par la commande : <tscreen><verb> # killall -HUP inetd </verb></tscreen> <p> ou, plus radicalement : <tscreen><verb> # /etc/init.d/inetd restart </verb></tscreen> <sect1>Configuration du serveur de fontes <p>À priori, il n'y a pas grand chose à faire. Simplement, par défaut XFS ne répond pas aux requêtes distantes, c'est à dire qu'il n'écoute pas sur un port TCP. Il faut l'autoriser à écouter le port TCP en commentant la ligne <tt>"no-listen = tcp"</tt> du fichier <tt>/etc/X11/fs/config</tt>, comme dans l'exemple ci-dessous : <tscreen><verb> # turn off TCP port listening (Unix domain connections are still permitted) #no-listen = tcp </verb></tscreen> <p>Si c'est le serveur <tt>xfs-xtt</tt> qui est utilisé, il faut retenir que par défaut il répond sur le port <bf><tt>7110</tt></bf> et non pas <bf><tt>7100</tt></bf> comme <tt>xfs</tt>. Il faudra soit indiquer aux terminaux X que le port du serveur de fontes est <bf><tt>7110</tt></bf> ou remplacer la valeur dans <bf>/etc/init.d/xfs-xtt</bf> par <bf><tt>7100</tt></bf>. Il faut en outre autoriser <tt>xfs-xtt</tt> à écouter sur le port TCP de la même manière que <tt>xfs</tt>. <p>Une fois les fichiers modifiés, faire prendre en ccompte les changements par la commande : <tscreen><verb> # /etc/init.d/xfs restart </verb></tscreen> <sect1>Configuration du gestionnaire graphique de session <em>X Display Manager</em> <p>Pour pouvoir se connecter au serveur d'applications, il est nécessaire de configurer le gestionnaire graphique de session (<em>display manager</em>) pour faire en sorte qu'il accepte les connexions distantes. <p>Par défaut, c'est <tt>kdm</tt> qui est installé sur la &Distrib;, mais il est possible d'utiliser d'autres <em>display manager</em> pour s'identifier depuis un terminal. <sect2><tt>kdm</tt> <p>Pour autoriser <tt>kdm</tt> à répondre aux demandes de connexion distante il faut éditer <tt>/etc/kde2/kdm/kdmrc</tt> et remplacer : <tscreen><verb> [Xdmcp] Enable=false </verb></tscreen> par <tscreen><verb> [Xdmcp] Enable=true </verb></tscreen> <p>Puis éditer le fichier <tt>/etc/kde2/kdm/Xaccess</tt> et ajouter la ligne : <tscreen><verb> *.mondomaine.loc </verb></tscreen> <!-- Voir pourquoi la syntaxe suivante ne marche pas <tscreen><verb> 192.168.100.* </verb></tscreen> AL: essayer 192.168.100.0/24 ou 192.168.100.0/255.255.255.0 comme « pattern » --> <p>Une fois les fichiers modifiés exécuter : <tscreen><verb> # /etc/init.d/kdm restart </verb></tscreen> <sect2><tt>gdm</tt> <p>Pour pouvoir se connecter sous X au serveur d'application, il faut autoriser <tt>gdm</tt> à repondre aux requêtes distantes. Editer <bf>/etc/gdm/gdm.conf</bf> et remplacer <tscreen><verb> [Xdmcp] enable=false </verb></tscreen> <p>par <tscreen><verb> [Xdmcp] Enable=true </verb></tscreen> <p>Une fois les fichiers modifiés, exécuter : <tscreen><verb> # /etc/init.d/gdm restart </verb></tscreen> <sect2><tt>xdm</tt> <p>Editer <tt>/etc/X11/xdm/xdm-config</tt>. Commenter la ligne ci-dessous en ajoutant un « <bf><tt>!</tt></bf> ». <tscreen><verb> DisplayManager.requestPort: 0 </verb></tscreen> <p>devient <tscreen><verb> !DisplayManager.requestPort: 0 </verb></tscreen> <p>Puis éditer le fichier <tt>/etc/xdm/Xaccess</tt> et ajouter la ligne : <tscreen><verb> *.mondomaine.loc </verb></tscreen> <p>Une fois les fichiers modifiés exécuter : <tscreen><verb> # /etc/init.d/xdm restart </verb></tscreen> <sect1>Configurer le serveur DHCP <!-- FIXME: Ajouter une doc sur les adresse MAC, notamment sur la façon de les récupérer --> <p>Il n'y a qu'un seul fichier à éditer : <tt>/etc/dhcp3/dhcpd.conf</tt>. Un exemple se trouve dans le dossier <bf>/usr/share/doc/tx-bootstrap/examples/dhcpd.conf.V3</bf> <p>L'idée générique du projet TX est d'utiliser le protocole DHCP pour personnaliser chaque terminal. Puisqu'il faudra configurer le serveur DHCP pour la configuration réseau des terminaux, autant s'en servir pour configurer les autres paramètres. De cette façon, il n'y a qu'un seul fichier à éditer pour configurer l'ensemble des postes. <p>Il est de cette façon possible de transmettre au client n'importe quels autres paramètres comme par exemple : ses propres paramètres d'affichage (dépendant de la carte vidéo et de l'écran connecté), le serveur de polices, le module à utiliser pour la carte son, le type de souris connectée... <sect2>Boot via DHCP <p>Au démarrage de la machine, la carte réseau du terminal X adresse une première requête (mode <em>broadcast</em>) à destination du serveur DHCP. Ce dernier répond en indiquant l'adresse de la machine et le nom de fichier où télécharger et exécuter le programme <em>loader</em>) afin d'amorcer un noyau Linux. Le paquetage proposé par Odys utilise par défaut PXELinux pour les cartes conformes au standard <bf>PXE</bf> et <tt>etherboot+mknbi</tt> pour les autres cartes réseau. <!-- FIXME: détailler les options et différents noyaux --> <sect3>Carte réseau PXE <p>Il n'est pas question ici d'étudier en détail le fonctionnement de PXElinux, mais simplement d'en comprendre les principes. <p>Au démarrage de la machine, le client charge le binaire <tt>pxelinux.0</tt> puis l'exécute. Ce programme est en fait un <em>bootloader</em> proche de <tt>lilo</tt> mais destiné aux machines <em>diskless</em>. Une fois en mémoire, ce programme va lire son fichier de configuration dans le dossier <tt>pxelinux.cfg</tt> pour connaître l'adresse du noyau. <p>Ici il n'y a rien à configurer, tout est déjà prévu. Tous les fichiers se trouvent dans <tt>/var/tftp/</tt>. Il convient seulement d'indiquer l'adresse Mac adéquate de la carte Ethernet dans le fichier <tt>/etc/dhcp3/dhcpd.conf</tt> <p>Exemple : <tscreen><verb> host tx1 { hardware ethernet 00:50:8b:8e:F6:d6; #Adresse Mac de la carte ethernet fixed-address tx1.mondomaine.loc; # Le nom du client ou de son adresse IP filename "/var/tftp/pxelinux.0"; } </verb></tscreen> <sect3>Carte réseaux + <em>bootrom</em> Etherboot ou Netboot <p>Pour ces cartes, il faut indiquer le nom du noyau à et le chemin de la racine du système <em>diskless</em>. <p>Le noyau ici est un peu spécial. Il est patché avec l'utilitaire <em>mknbi-linux</em>. Ce programme vient greffer un <em>loader</em> au noyau pour que ce dernier soit exploitable par <tt>etherboot</tt> ou <tt>netboot</tt>. Le noyau kernel_tx.nbi adéquat se trouve dans <tt>/var/tftp/</tt> <sect3>Carte réseau sans <em>bootrom</em> <p>Le plus simple, pour faire les essais, consiste à télécharger depuis le site <url url="http://rom-o-matic.net/" name="Rom-o-Matic"> la version « disquette » du programme d'amorçage via le réseau correspondant à la carte réseau installée sur le client. <p>En effet, ce <em>bootrom</em> permet d'utiliser une disquette pour booter le terminal X. Une fois que tout est opérationnel, il est temps d'envisager la fabrication d'un programmeur d'EEPROM ou son achat au magasin électronique du coin, afin de brûler l'EEPROM de la carte réseau et se dispenser ainsi du lecteur de disquette ou du disque dur. <!-- Penser à rajouter à l'archive les bootrom bootfloppy pour l'exemple --> <!-- Rajouter une doc pour l'usage de imggen et les cartes 3com qui ont leur propre bootrom propriétaire --> <p>Pour créer, par exemple, la disquette avec un <em>bootrom</em> adapté à une carte réseau basée sur le <em>chipset</em> <tt>rtl8139</tt>, le plus simple est de se rendre sur le site <url url="http://www.rom-o-matic.net" name="rom-o-matic"> puis générer et télécharger le <em>bootrom</em> correspondant à la carte et ayant l'extension <tt>.lzdsk</tt>. Il ne reste plus qu'a le copier sur une disquette formatée avec la commande : <tscreen><verb> $ cat eb-5.0.7-rtl8139.lzdsk > /dev/fd0 </verb></tscreen> <sect2>Exemple de fichier dhcpd.conf <p> <tscreen><verb> # dhcpd.conf # option domain-name "mondomaine.loc"; option domain-name-servers dns.mondomaine.loc, 192.168.0.154; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0 { option broadcast-address 192.168.0.255; host tx1 { hardware ethernet 00:50:8b:8e:F6:d6; #Adresse Mac de la carte ethernet fixed-address tx2.mondomaine.loc; # Le nom du client ou de son adresse IP filename "pxelinux.0"; } host tx2 { hardware ethernet 00:50:8b:8e:60:2d; #Adresse Mac de la carte ethernet fixed-address tx1.mondomaine.loc; # Le nom du client ou de son adresse IP filename "vmlinuz-2.4.20-386-diskless.nbi"; option root-path "/var/lib/diskless/tx"; } } </verb></tscreen> <sect2>Cartes supportées <p>Une liste des cartes réseaux supportées par l'utilitaire <tt>etherboot</tt> est accessible à l'adresse suivante : <url url="http://www.etherboot.org/db/" name="www.etherboot.org/db/">. Elles sont très nombreuses et, si la marque du fabriquant ne correspond pas, il y a fort à parier que le <em>chipset</em> de la carte se trouve déjà supporté sous un autre nom. <sect2>Personnaliser chaque terminal <p>Pour personnaliser les terminaux il faut utiliser les options <em>vendor</em> de DHCP. Le protocole DHCP autorise 256 options. Les 128 premières font partie intégrante du standard du protocole DHCP. On peut naturellement s'en servir, mais pas en modifie la destination. Par contre les options supérieures à 128, sont libres pour une utilisation locale. <p>Les options 220 à 250 sont ici mises à profit pour la configuration les clients. Toutes ne sont pas utilisées pour le moment. <p>L'exemple du fichier <tt>dhcpd.conf</tt> proposé ci-dessous correspond à la syntaxe de la version 3 du protocole DHCP. Le répertoire <tt>/usr/share/doc/tx-bootstrap/examples</tt> contient un fichier d'exemple <tt>dhcpd.conf.v2</tt> qui, comme son nom l'indique, est adapté à un serveur DHCP v2. <p>Une fois le fichier <tt>/etc/dhcp3/dhcpd.conf</tt> édité, il faut relancer le serveur DHCP par la commande : <tscreen><verb> # /etc/init.d/dhcp3-server restart </verb></tscreen> <sect2>Exemple complet du fichier <bf>/etc/dhcp3/dhcpd.conf</bf> <p>une copie de ce fichier se trouve dans /usr/share/doc/tx-bootstrap/example/dhcpd.conf.v3 <tscreen><verb> # /etc/dhcp3/dhcpd.conf # option domain-name "mondomaine.loc"; option domain-name-servers dns.mondomaine.loc, 192.168.0.154; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; ddns-update-style none; ### Descriptions des nouvelles options option LpServerEnable code 222 = string; option LpServerDevice code 223 = string; option LpServerPort code 224 = string; option EsdEnable code 225 = string; option SoundModule code 226 = string; option SoundDevice code 227 = string; option SoundVolum code 228 = string; option XMouseDevice code 229 = string; option XMouseProtocol code 230 = string; option XkbLayout code 231 = string; option XkbModel code 232 = string; option XkbVariant code 233 = string; option XkbOptions code 234 = string; option DefaultDepth code 235 = string; option XfsEnable code 236 = string; option XfsServer code 237 = string; option XfsPort code 238 = string; option HorizSync code 239 = string; option VertRefresh code 240 = string; option XMode code 241 = string; option Modeline code 242 = string; option XVersion code 243 = string; option XDriver code 244 = string; option XdmMode code 245 = string; option AppServer code 246 = string; option SwapEnable code 247 = string; option SwapSize code 248 = string; option SwapServer code 249 = string; subnet 192.168.0.0 netmask 255.255.255.0 { option broadcast-address 192.168.0.255; # if this option is not set, it is necessary to set # option host-name "an_hostname"; # on any host declaration use-host-decl-names on; ### Options "Vendor" valable pour tous les terminaux X ## Tous les terminaux ont un clavier AZERTY Français de 101 touches option XkbLayout "fr"; option XkbModel "pc101"; ## Tous les terminaux utilise le serveur de polices option XfsEnable "1"; ## Adresse Ip du serveur de polices si il est diffèrent du serveur nfs # option XfsServer "192.168.0.x"; ## Tous les Terminaux font une requête directe au serveur d'applications. option XdmMode "query"; ## ## Adresse IP du serveur d'application si il est diffèrent du serveur nfs. # option AppServer "192.168.0.x"; ### Options DHCP valables pour tous les terminaux X option root-path "/var/lib/diskless/tx"; host tx1 { hardware ethernet 00:50:8b:8e:F6:d6; #Adresse Mac de la carte ethernet fixed-address tx1.mondomaine.loc; # Le nom du client ou de son adresse IP filename "pxelinux.0"; ## Indiquer le chemin absolu si le serveur tftpd ne fonctionne ## pas en mode "chrooté" ## filename "/var/tftp/pxelinux.0"; option LpServerEnable "1"; ## Ce terminal X fait aussi serveur d'impression (/dev/lp0 port 9100) ## Cette station possède une carte son SoundBlaster Vibra16C. ## Le démon Esound (esd) est nécessaire pour utiliser la carte son a travers le réseau. ## Cette carte a une dma 16 bits non standard qu'il faut préciser au module. ## On souhaite que le volume de sortie (Master) soit a 60%. option EsdEnable "1"; option SoundModule "sb dma=1 dma16=0"; option SoundVolum "60" ; ## La carte graphique est une ati Rage Pro sur laquelle est connecté ## un écran Compaq V500. L'affichage de 1024x768 à 85 Hz. ## Les caractéristiques de l'écran données par le constructeur sont: ## Fréquence horizontal 30 à 70 Khz ## Fréquence verticale 50 à 160 Hz ## ## C'est le driver ati de Xfree 4.1.0 qui est utilisé option HorizSync "30-70"; option VertRefresh "50-160"; option XMode "1024x768"; option XVersion "4.1.0"; option XDriver "ati"; } host tx2 { hardware ethernet 00:50:8b:8e:60:2d; #Adresse Mac de la carte ethernet fixed-address tx2.mondomaine.loc; # Le nom du client ou de son adresse IP filename "vmlinuz-2.4.20-386-diskless.nbi"; ## Pour avoir le "Splatch screen" : ## filename "vmlinuz-2.4.20-386-diskless-lpp.nbi"; ## Indiquer le chemin absolu si le serveur tftpd ne fonctionne ## pas en mode "chrooté" ## filename "/var/tftp/vmlinuz-2.4.20-386-diskless.nbi"; option root-path "/var/lib/diskless/tx"; ## La carte graphique de cette station est une S3 trio/64 2 Mo ## l'écran est Hp 1024 ref D2813 14'' ## Les caractéristiques de l'écran données par le constructeur sont: ## Affichage 1024x768 60Hz ## Fréquence horizontal 30.9 à 49.0 ## Fréquence verticale 50.0 à 100.0 ## C'est le serveur XF86_S3 version 3.3.6 qui est utilisé option HorizSync "30.9-49.0"; option VertRefresh "50.0-100.0"; option XMode "1024x768"; option XVersion "3.3.6"; option XDriver "XF86_S3"; } } </verb></tscreen> <sect3>Détail des options envoyées au Terminal X11 via le protocole DHCP <p> <descrip> <tag>option-222 - LpServerEnable <p>Valeur par défaut: <bf>0</bf> <p>Si la valeur est 1 le terminal fait office de serveur d'impression. Il émule un boîtier HP Jetdirect. Par défaut c'est le port imprimante <tt>lp0</tt> qui est utilisé sur la station. <tag>option-223 - LpServerDevice <p>Valeur par défaut: <bf>/dev/lp0</bf> <p>Périphérique sur lequel sera connecté l'imprimante. <tag>option-224 - LpServerPort <p>Valeur par défaut: <bf>9100</bf> <p>9100 correspond au port standard des boîtiers HP Jetdirect. À priori il n'y a pas de raison d'en changer. <tag>option-225 - EsdEnable <p>Valeur par défaut: <bf>0</bf> <p>Si le terminal X dispose d'une carte son supportée par le noyau, il est possible d'utiliser les applications sonores supportant le système <sf>esound</sf> en mettant la valeur à <bf>1</bf>. <tag>option-226 - SoundModule <p>Module du noyau à charger pour la carte son du terminal plus les options. Exemple pour une carte son SoundBlaster vibra16c: <bf>sb irq=5 io=0x220 dma=1 dma16=0 </bf> ou pour une SB 128 Pci <bf>es1371</bf> <tag>option-227 - SoundDevice <p>Valeur par défaut: <bf>/dev/dsp</bf> <p>Périphérique utilisé par la carte son. Comme à priori il n'y a qu'une carte son dans un terminal X, il est peu probable qu'il soit nécessaire de changer cette valeur. <tag>option-228 - SoundVolume <p>Valeur par défaut: <bf>50</bf> <p>Pourcentage du volume audio en sortie de la carte son. <tag>option-229 - XMouseDevice <p>Valeur par défaut: <bf>/dev/psaux</bf> <p>Périphérique sur lequel est connectée la souris. Si vous disposez d'une souris branchée sur un port COM il faudra indiquer <tt>/dev/ttyS0</tt> ou <tt>/dev/ttyS1</tt> selon que votre souris est branchée sur le port COM1 ou le COM2 de votre terminal. <tag>option-230 - XMouseProtocol <p>Valeur par défaut: <bf>PS/2</bf> <p>Cf. la documentation de Xfree. Identique à la valeur "Option Protocole" que vous mettriez dans XF86Config à la section correspondante à la souris. Ex: PS/2, ImPS/2 <p>Par défaut le terminal émule le troisième bouton (clic gauche+droit simultané), tandis que la molette est opérationnelle si le protocole ImPS/2 a été précisé. <tag>option-231 - XkbLayout <p>Valeur par défaut: <bf>fr</bf> <p>Cf. la documentation de Xfree. Identique à la valeur "Option XkbLayout" de la section correspondant au clavier dans un fichier de configuration <tt>XF86Config</tt> (ou <tt>XF86Config-4</tt>) standard. <tag>option-232 - XkbModel <p>Valeur par défaut: <bf>pc101</bf> <p>Cf. la documentation de Xfree. Identique à la valeur "Option XkbModel" de la section correspondant au clavier dans un fichier de configuration <tt>XF86Config</tt> (ou <tt>XF86Config-4</tt>) standard. <tag>option-233 - XkbVariant <p>Cf. la documentation de Xfree. Identique à la valeur "Option XkbLayout" de la section correspondant au clavier dans un fichier de configuration <tt>XF86Config</tt> (ou <tt>XF86Config-4</tt>) standard. <tag>option-234 - XkbOptions <p>Cf. la documentation de Xfree. Identique à la valeur "Option XkbLayout" de la section correspondant au clavier dans un fichier de configuration <tt>XF86Config</tt> (ou <tt>XF86Config-4</tt>) standard. <tag>option-235 - DefaultDepth <p>Valeur par défaut: <bf>8</bf> <p>Valeur possibles: 1 4 8 15 16 24 32 <p>Cela correspond au nombre de couleurs affichables. Pour les terminaux X11 nous recommandons, dans la mesure du possible, de mettre cette valeur à 16. Cela correspond à un affichage de 64000 couleurs et représente un bon compromis entre la qualité d'affichage et la charge du réseau et de la mémoire coté client. Cf. la documentation de Xfree. <tag>option-236 - XfsEnable <p>Valeur par défaut: <bf>1</bf> <p>Si la valeur est à 1, le terminal X cherchera à utiliser un serveur de fontes disponible sur le réseau, dont l'adrese est par défaut celle du serveur NFS, mais peut être aussi renseignée par l'option <tt>XfsServer</tt>. <tag>option-237 - XfsServer <p>Valeur par défaut: <bf>IP du serveur NFS</bf> <p>Si l'usage d'un serveur de fontes est validé, on indiquera ici l'adresse IP de ce dernier. Si aucune adresse n'est spécifiée, le client utilisera par défaut l'adresse IP du serveur NFS. <tag>option-238 - XfsPort <p>Valeur par défaut: <bf>7100</bf> <p>En général, les serveurs de fontes écoutent sur le port 7100. La valeur par défaut devrait convenir dans la plupart des cas. <tag>option-239 - HorizSync <p>Valeur par défaut: <bf>30-50</bf> <p>Fréquence de syncro Horizontale supportée par le moniteur du TX. La valeur par défaut correspond aux fréquences d'un écran SVGA 800x600 à 60Hz. <p>Pour connaître les valeurs il faut se référer au manuel du moniteur ou consulter la base de donnée du projet <sf>xconfigurator</sf> <url url="http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/~checkout~/soft/ldetect-lst/lst/MonitorsDB?rev=1.20&content-type=text/plain&only_with_tag=MAIN" name="MonitorsDB"> <tag>option-240 - VertRefresh <p>Valeur par défaut: <bf>50-100</bf> <p>Fréquence verticale supportée par le moniteur du TX. La valeur par défaut correspond aux fréquences d'un écran SVGA 800x600 à 60Hz. <tag>option-241 - XMode <p>Valeur par défaut: <bf>800x600</bf> <p>Résolution verticale et horizontale de l'affichage exprimée en nombre de pixels. <tag>option-242 - XModeline <p>Permet d'utiliser un <em>modeline</em> particulier. Ce paramètre peut se révéler indispensable pour certains moniteurs à fréquence fixe ou améliorer la qualité de l'affichage. <p>Syntaxe : <tscreen><verb> option Modeline "\"1152x864\" 137.65 1152 1184 1312 1536 864 866 885 902 -hsync -vsync"; </verb></tscreen> <tag>option-243 - XVersion <p>Valeur par défaut: <bf>3.3.6</bf> <p>Valeurs possible: 3.3.6 4.1.0 <p>Permet de choisir la version de X que l'on veut utiliser en fonction de la carte graphique. Deux versions sont disponibles: 3.3.6 et 4.1.0. <!-- FIXME Pour connaître quelles version de X utiliser --> <tag>option-244 - XDriver <p>Valeur par défaut: <bf>XF86_VGA16</bf> <p> Serveur disponible pour la version de Xfree 3.3.6 : XF86_VGA16, XF86_SVGA, XF86_S3 et XF86_S3V. <p> Serveur disponible pour la version de Xfree 4.1.0 : ati, cirrus, cyrix, i128, i740, i810, mga, nv, r128, radeon, s3virge, savage, sis, tdfx, tga, trident, tseng,i vesa, vga <tag>option-245 - XdmMode <p>Valeur par défaut: <bf>broadcast</bf> <p>Valeurs possibles : broadcast, query, indirect <p>Il s'agit du mode de connexion X. <!-- FIXME: beuh ouais mais coment on indique le nom du serveur pour un query, par ex. ? --> <tag>option-246 - AppServer <p>Valeur par défaut: <bf>IP du serveur NFS</bf> <p>Cette option permet de préciser l'adresse IP du serveur d'applications. S'il s'agit de la même machine que le serveur NFS, il n'est pas nécessaire de renseigner ce paramètre. <tag>option-247 - SwapEnable <p>Valeur par défaut: <bf>0</bf> <p>Si la valeur est égale à 1, le terminal X disposera d'un fichier de <em>swap</em> accessible par NFS. La taille de ce fichier doit être indiquée via l'option <tt>SwapSize</tt>. Il n'est pas recommandé d'utiliser le <em>swap</em> via NFS (pour des raisons de performance et, parfois, de stabilité). Il ne doit être utilisé que si la station ne dispose pas de suffisamment de mémoire pour fonctionner en <em>diskless</em>. Par exemple, il faudra un <em>swap</em> d'environ 16 Mo si l'on utilise un affichage de 1024x768 16 bits sur une machine dotée de 32Mo de RAM. Si la machine dispose de 48 Mo et plus, pas besoin de <em>swap</em>. <tag>option-248 - SwapSize <p>Taille du fichier de <em>swap</em> en Mo. <tag>option-249 - SwapServer <p>Valeur par défaut: <bf>IP du serveur NFS</bf> <p>Cette option permet de préciser l'adresse IP du serveur de <em>swap</em>. S'il s'agit de la même machine que le serveur NFS, il n'est pas nécessaire de renseigner ce paramètre. </descrip> <sect>Liens <p>Voici quelques liens relatifs à la la configuration ou l'amorçage de terminaux X oux clients légers via un réseau IP : <descrip> <tag><url url="http://www.etherboot.org/" name="Etherboot"> <!--Etherboot is a software package for creating ROM images that can download code over an Ethernet network to be executed on an x86 computer.--> <p>Etherboot est un paquetage logiciel destiné à la création d'images ROM capables de télécharger du code via un réseau Ethernet, pour être exécuté sur un ordinateur x86. <tag><url url="http://netboot.sourceforge.net/" name="Netboot"> <!-- Netboot is a packet to boot a computer with an Intel processor over an IP network without access to a hard disk or a diskette. --> <p>Projet similaire à Etherboot, qui supporte notamment les <em>paquet driver</em> (binaires fournis avec de nombreuses cartes réseau). <tag><url url="http://syslinux.zytor.com/pxe.php" name="PxeLinux"> <!-- PXELINUX is a SYSLINUX derivative, for booting Linux off a network server, using a network ROM conforming to the Intel PXE (Pre-Execution Environment) specification.--> <p>PXELinux est dérivé de SysLinux ; il permet de booter Linux depuis un serveur accessible en réseau en utilisant une ROM compatible avec les spécifications Intel PXE (<em>Pre-Execution Environment</em>). <tag><url url="http://rom-o-matic.net/" name="Rom-o-matic"> <!-- ROM-o-matic dynamically generates Etherboot ROM images. --> <p>Le site ROM-o-matic propose la génération d'images ROM Etherboot (disquettes, EEPROM...) en ligne. <tag><url url="http://www.faqs.org/rfcs/rfc2132.html" name="DHCP Options and BOOTP Vendor Extensions"> <p>La RFC (<em>Request For Comment</em>) relative aux options -- et en particulier les options non normalisées -- dans le protocole DHCP. <!-- <url url="http://www.logilab.org/netboot-howto/" name="Network-boot-HOWTO"> --> <tag><url url="http://www.tldp.org/HOWTO/Network-boot-HOWTO/index.html" name="Network Boot and Exotic Root HOWTO"> <!-- This document explains how to quickly setup a linux server to provide what diskless linux clients require to get up and running, using an IP network. It includes data and partly rewritten text from the Diskless-HOWTO, the Diskless-root-NFS-HOWTO, the linux kernel documentation, the Linux Terminal Server Project's homepage, and the author's personnal experience, acquired when working for Logilab. Eventually this document may end up deprecating the Diskless-HOWTO and Diskless-root-NFS-HOWTO. Please note that you'll also find useful information in the From-PowerUp-to-bash-prompt-HOWTO and the Thin-Client-HOWTO. --> <p>Ce document, qui reprend pour partie les Diskless-HOWTO et Diskless-root-NFS-HOWTO, explique comment configurer rapidement un serveur GNU/Linux permettant l'amorçage et le fonctionnement de clients <em>diskless</em> sur un réseau IP. <tag><url url="http://www.menet.umn.edu/~kaszeta/unix/xterminal/index.html" name="Converting Old PCs into standalone X Terminals"> <p>Un document publié initialement dans la <em>Linux Gazette</em> expliquant comment convertir des PC de type 386 ou 486 en fin de vie en terminaux graphiques. <tag><url url="http://www.busybox.net/" name="BusyBox"> <!-- BusyBox combines tiny versions of many common UNIX utilities into a single small executable --> <p>Le couteau suisse de GNU/Linux embarqué. BusyBox rassemble des versions allégées de nombreux utilitaires Unix en un seul (petit) exécutable. </descrip> <sect1>Autres projets de Terminaux X11 <p> <descrip> <tag><url url="http://www.ltsp.org" name="ltsp"> <p>Linux Terminal Server Project. <tag><url url="http://www.solucorp.qc.ca/xterminals/" name="xtermkit"> <p>Une solution de terminaux X basée sur une distribution Red Hat. <tag><url url="http://netstation.sourceforge.net/" name="netstation"> <!-- NetStation is a linux distribution for diskless thin clients terminals using standard x86 hardware--> <p>NetStation est une distribution Linux pour des clients léger dépourvus de disque dur et utilisant l'architecture x86 standard. <tag><url url="http://sourceforge.net/projects/diet-pc/" name="Diet-PC"> <p>Boîte à outil destinée à la création de clients légers. <tag><url url="http://k12ltsp.org/" name="K12ltsp"> <p>Linux Terminal software for classroom workstations. <tag><url url="http://freshmeat.net/redir/plume/35092/url_homepage/plume.sourceforge.net" name="Plume"> <!-- Plume is a complete set of packages to create and administer a network of diskless computers used as X terminals. --> <p>Plume est un ensemble de paquetages complet pour créer et administrer un réseau de stations sans disque dur utilisées comme terminaux X. <tag><url url="http://www.disklessworkstations.com/" name="disklessworkstations"> <p>Distributeur de matériels et prériphériques adaptés aux clients légers. <tag><url url="http://pxes.sourceforge.net/" name="PXES linux thin client"> <!-- PXES is the micro Linux distribution allowing you to build thin clients or diskless workstations--> <p>PXES est une micro distribution GNU/Linux destinée à la mise en oeuvre de clients légers. </descrip> </article> <!-- vim:tw=130:sw=4:ts=4: -->