Configurer un serveur d'application et un terminal X

Nicolas LS

Qu'est ce qu'un terminal X ?

Un terminal X est un dispositif se chargeant juste d'afficher les applications exécutées sur un serveur (généralement une machine assez puissante). L'interêt d'un tel fonctionnement est qu'on peut ainsi mettre à jour tout en mettant à niveau uniquement le serveur X. Un vrai terminal X coutant assez cher, ce document explique comment en faire un a partir d'un simple PC (486) par exemple.

En effet, cela peut etre une application aux terminaux X: permettre de réutiliser de vieux PC qui allaient partir à la poubelle pour en faire un terminal X. Unix étant multiutilisateur, un meme PC peut supporter plusieurs utilisateurs (via telnet, ssh , ou encore des terminaux X).

On peut par ailleur mettre 15 terminaux X sans qu'un reseau 10 Mb soit saturé, pourvu que les terminaux X ne servent pas à jouer à Quake. X passe même si ce n'est pas extrèmement rapide par une ligne téléphonique, le débit d'un réseau local est donc largement suffisant.

Donc, si vous voulez reconvertir votre vieux 486, voilà la solution, vous aurez alors toute la puissance du serveur d'applications pour travailler, ce dernier ne servant qu'à l'affichage.

Ce document décrit aussi comment configurer un PC pour afficher des telnet sur un sytème distant, toujours en bootant diskless. Cela peut servir par exemple si vous avez un PC qui ne dispose que de très peu de RAM, et que le lancement de Xfree s'avère donc impossible. (Il faut 8 Mo ou 16 Mo de RAM pour lancer Xfree.)

Introduction

Le but de ce document est d'expliquer comment créer facilement un serveur d'application et un terminal X a partir d'un OS (unix) déja installé, dans mon cas, il s'agit de FreeBSD. Il faut noter que j'utilise 2 Pc pour cela, le serveur: shiva (192.168.0.1) et le terminal X: vishnu (192.168.0.2) .

Pour configurer tout cela, il faut uniquement 2 logiciels en plus de ce dont vous disposez déja: isc-dhcpd et etherboot. Ils sont dans les ports, et on peut les trouver sur http://www.freshmeat.net.

Je n'ai pas particulièrement pris en compte l'aspect sécurité en écrivant ce document, il faudra donc sécurisé cela si le réseau est peu sur (via internet par exemple).

Chapitre 1   Configurer le terminal X

1.1   Etherboot

1.1.1   Création de la disquette

Nous allons commencer par "configurer" le terminal X, en effet, il nous faut quelques infos avant de poursuivre la configuration.

Pour cela, il vous suffit de vous placer dans le répertoire des sources de etherboot. Sous FreeBSD, placez vous dans /usr/ports/net/etherboot, lancez un make, puis passez dans work/etherboot-version. Vous pouvez alors créer une disquette de boot via le réseau. Pour une carte Realtek 8029, la commande est gmake bin32/rtl8029.fd0 ou make bin32/rtl8029.fd0 si make est le GNU Make, et remplacez rtl8029 par le driver qui convient. Cette commande doit etre lancée sous root, et vous devez avoir introduit une disquette formatée dans le lecteur.

Sous linux, vous pourrez trouver ce logiciel sur http://www.freshmeat.net

1.1.2   Liste des drivers

La liste des drivers disponible dans etherboot est:
3c503         3c905b-fx     cs89x0        fa311         otulip
3c507         3c905b-t4     davicom9009   fa312         pcnetfastiii
3c509         3c905b-tpb2   davicom9102   id1029        rl100tx
3c529         3c905b-tpo    dc21040       id1030        rtl8029
3c590         3c905b-tpo100 dc21041       intel21145    rtl8139
3c595         3c905c-tpo    depca         kne110tx      sis7016
3c595-1       3c980         dfe530tx+     ktiet32p2     sis900
3c595-2       3c9805        dlink-530tx   lancepci      sk_g16
3c900-t4      3csoho100-tx  dlink-530tx-o lc82c115      smc1211
3c900-tpo     82559er       dm9100        mx98713       smc9000
3c900b-combo  82562em       dm9102        mx98715       tiara
3c900b-fl     82c168        dp83815       mx98725       tulip
3c900b-tpb2   amdhomepna    ds21140       mxic-98715    via-rhine
3c900b-tpo    an981         ds21140a      natsemi       via-rhine-old
3c905-combo   ax88140       ds21142       ne            wd
3c905-t4      ax88141       ds21143       ne2100        winbond840
3c905-tpo     centaur-c     eepro         ni5010        winbond940
3c905-tpo100  centaur-p     eepro100      ni5210        xircomtulip
3c905b-combo  compexrl100at epic100       ni6510
3c905b-fl     compexrl2000  exos205       nv5000sc

1.2   Récupération de l'adresse MAC

Vous devez ensuite booter le terminal X avec la disquette, il va booter, chercher la carte reseau, afficher quelques informations (qui nous interessent) et commencer à chercher un serveur DHCP.

Vous allez donc avoir un affichage ressemblant à:
Searching for adapter..
 WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66 
Ce qui nous interesse est l'adresse 00:40:01:43:26:66, notez la, elle servira à configurer le serveur dhcpd.

1.3   Compilation du noyau pour le Terminal X

Si vous ne connaissez pas le matériel présent dans le Terminal X, regardez au moins s'il est supporté et s'il demande des options spéciales pour le noyau, ajoutez les.

Les options de configuration du noyau sont la recherche du serveur NFS par DHCP et la racine via NFS.

1.3.1   Sous FreeBSD

Cette partie est ensuite spécifique à FreeBSD . Afin de compiler le noyau (installez les sources si besoin), et placez vous dans /usr/src/sys/i386/conf, copiez GENERIC en DISKLESS, éditez ce dernier en fonction de vos besoins, et ajoutez les options suivantes

options BOOTP              # Use BOOTP to obtain IP address/hostname
options BOOTP_NFSROOT      # NFS mount root filesystem using BOOTP info
options BOOTP_NFSV3        # Use NFS v3 to NFS mount root
options BOOTP_COMPAT       # Workaround for broken bootp daemons.
options BOOTP_WIRED_TO=ed0 # Use interface ed0 for BOOTP
                           # Adaptez cette dernière ligne a votre carte 
                           # réseau !!!
Vérifiez aussi que l'option suivante est bien présente: options NFS\_ROOT \#NFS usable as root device, NFS require .

Vous pouvez alors lancez la compilation par:
# config DISKLESS
# cd ../../compile/DISKLESS
# make depend && make
Votre noyau est prêt.

1.3.2   Sous linux

Vous prenez un fichier de config qui marche et avec make menuconfig vous ajoutez les options: Et compilez par le classique make dep && make bzImage , votre kernel se trouvera alors dans /usr/src/linux/arch/i386/vmlinuz

Chapitre 2   Configurer le serveur

Vous pouvez placer /diskless ailleurs, mais alors , veillez à changer l'emplacement dans tous les fichiers y faisant référence.

2.1   Configurer le serveur DHCPD

Vous devez avant tout ajouter le nom d'hôte et l'IP à votre DNS ou à votre fichier /etc/hosts.

Vous devez installer le serveur isc-dhcpd (il est dans les ports sous FreeBSD), activez son lancement en renommant le script dans /usr/local/etc/rc.d . Il s'agit ici de la version 2.

La configuration nécéssaire se résume au strict minium: attribuer une IP et un nom au PC portant l'adresse MAC (que vous avez noté plus haut) et lui donner l'adresse (NFS) du kernel à booter.

Le fichier de config est le suivant:

default-lease-time 600;
max-lease-time 7200;
authoritative;
deny unknown-clients;

option domain-name "india.ath.cx";
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
   use-host-decl-names on;
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.0.255;
   
   host vishnu {
      hardware ethernet 52:54:05:DF:5A:A1;
      fixed-address vishnu.india.ath.cx;
      next-server 192.168.0.1;
      option root-path "192.168.0.1:/diskless";
      filename "/diskless/kernel";
     }
}
Vous devez remplacer les noms d'hotes, les IP et l'adresse MAC (hardware ethernet) par celles qui correspondent à votre reseau. Vous pouvez ensuite démarrer isc-dhcpd. Sous FreeBSD, c'est la commande /usr/local/etc/rc.d/isc-dhcpd.sh start , assurez vous qu'il est lancé et en cas de besoin consultez vos logs pour repérer une eventuelle faute de frappe (oubli d'un ; par exemple). Il faut noter que dhcpd a besoin que FreeBSD soit compilé avec options bpf pour fonctionner.

Une fois toute cette phase effectuée, booter votre terminal X a l'aide de la disquette et normalement, il devrait se bloquer à la procédure du chargement du noyau après avoir obtenu son IP et l'adresse du noyau qui sera chargé par NFS.

2.2   Créer la racine du système pour le terminal x

Il existe un script pour créer automatiquement ce dossier (même s'il est plus adapté à une station sans disque plutôt qu'à un simple terminal X), vous le trouverez dans /usr/share/examples/diskless sur FreeBSD.

Pour ma part, je ne l'ai pas utilisé, car , pour un simple terminal X, c'est plus simple de le faire à la main. La racine se trouve dans /diskless, vous pouvez la déplacer, mais vous devrez alors modifier tous les fichiers de config en fonction du nouveau chemin d'accès.

2.2.1   Copie des fichiers

Ici, bin est relatif à /diskless et désigne donc /diskless/bin. Vous avez besoin d'une racine minimale. bin, dev, sbin et modules étant identiques à ceux sur le serveur, un cp -R devrait donc suffire.

Sous linux, il faut bien sur copier aussi les mêmes dossier, en y ajoutant lib

# mkdir /diskless
# cd /
# cp -R /bin /sbin /modules /dev /diskless

2.2.2   Dossiers spécifiques a la racine du terminal X

Créez un dossier root vide et des dossiers: var/log, var/db et var/tmp; le dossier tmp est un lien symboliquevers var/tmp. Créez ensuite les points de montage nécessaire (juste usr par un simple mkdir). Tous ces fichiers doivent appartenir a root.

# cd /diskless
# mkdir var var/log var/tmp var/db usr root etc
# chmod 1777 var/tmp     # Défini les droits rwxrwxrwt

2.2.3   Copie du noyau

Enfin, pour permettre au Terminal X de booter, vous devez copier le noyau que vous venez de compiler dans /diskless, la commande pour le faire est: cp /usr/src/sys/compile/DISKLESS/kernel /diskless

Sous linux, récuperez le noyau que vous avez crée plus haut.

2.2.4   Création du dossier /etc

Ce dossier est extrèmement simple, la config du terminal X étant réduite au minimum, il contient 5 fichiers: hosts, rc, resolv.conf, ttys et XF86Config

master.passwd

Il doit aussi contenir les mots de passes (passwd et shadow sous linux, laissez juste les comptes de base). Sous FreeBSD, c'est le fichier master.passwd qui a ce rôle, copiez le dans le nouveau dossier etc, et générez les fichier spwd.db et passwd grâce a la commande pwd_mkdb

# Les commandes à exécuter sont les suivantes
cp /etc/master.passwd /diskless/etc; emacs /diskless/etc/master.passwd
# Supprimez alors les comptes utilisateurs qui ne sont pas lié au système
cd /diskless/etc
pwd_mkdb -d /diskless/etc
pwd_mkdb -p -d /diskless/etc

hosts

Voila donc le contenu de ses fichiers, le fichier hosts contient:
127.0.0.1       localhost
192.168.0.1     shiva        # Si vous n'avez pas de DNS qui se charge de la
192.168.0.2     vishnu       # résolution (seulement pour shiva et vishnu)

resolv.conf

Le fichier resolv.conf contient l'adresse des DNS (si vous en avez):
domain india.ath.cx
nameserver 192.168.0.1

ttys

Le fichier ttys est réduit a son strict minimum:
console none                            unknown off secure
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  off  secure
# Pseudo terminals
ttyp0   none                    network
ttyp1   none                    network
ttyp2   none                    network
[...]
ttySv   none                    network
Le fichier ttys est remplacé par inittab sous linux, vous devrez aussi le réduire a un minimum (voir la page de man correspondante) et faire en sorte qu'il finisse par exemple sur le niveau 3 et lance le script rc ci-dessous.

rc

Le fichier qui s'occupe de la procédure de boot est le script rc (qui doit etre executable), il contient:
 
#!/bin/sh
#
PATH=/bin:/:/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
export PATH

# configurer les interfaces reseaux # Corriger l'IP si besoin
# Ces commandes peuvent varier sous linux, voir les HOWTO
/sbin/ifconfig lo0 127.0.0.1
/sbin/ifconfig ed0 192.168.0.2 netmask 0xffffff00

# monter les système de fichiers via NFS # Modifier les noms au besoin
/sbin/mount shiva:/diskless /
/sbin/mount shiva:/usr /usr

# Chargement de la map fr pour le clavier
/usr/sbin/kbdcontrol -l /usr/share/syscons/keymaps/fr.iso.acc.kbd
#loadkeys french   #pour linux

# Lancer Xfree en mode -query pour contacter XDMCP sur shiva 
# Modifier les noms au besoin
/usr/X11R6/bin/X -query shiva -xf86config /etc/XF86Config.vishnu >/dev/null  2>&1
#
# Rédemarrer lorsque l'on quitte X
    /sbin/reboot   # Désactivé dans un premier temps , permet de voir les 
                   # erreurs et d'éviter les boots en boucle

# Voila, j'espère que ce script marche , il faudra que je vérifie completement.

XF86Config

Et enfin, le fichier de config de Xfree Vous le créez avec xf86config et vous répondez non aux demandes d'enregistrement du fichier, jusqu'a ce qu'il vous propose de spécifier un emplacement, et alors, vous pourrez choisir /diskless/etc/XF86Config.vishnu

Pour que le terminal X puisse acceder à ces fichiers, il faut configurer un serveur NFS.

2.3   Configurer le serveur NFS

2.3.1   Activer le serveur NFS

Il suffit pour cela de rajouter les lignes suivantes au rc.conf de votre serveur d'application.
portmap_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"
Vous pouvez alors soit le démarrer a la main (cf Handbook) ou alors rédemarrer, ou encore passer en init 1. Je ne connais pas la procédure pour un serveur sous linux, donc, si vous savez comment faire, écrivez moi.

2.3.2   Définir les fichiers a exporter

Cela ce résume à créer un fichier /etc/eports, ou vishnu est le nom du terminal X:
/usr -ro vishnu
/diskless  -maproot=0:0 vishnu  
Vous devez alors imposer la relecture du fichier a mountd par killall -1 mountd, les erreurs sont enregistrées dans les logs. On ne peut pas exporter /usr et /usr/diskless par exemple. Il faut que les dossiers ne soient pas imbriqués, comme: /usr/X11R6 et /usr/local.

2.4   Configurer le serveur XDMCP

2.4.1   Approche

A la fin du fichier rc , le Terminal X va lancer Xfree en mode query sur shiva. Xfree va donc tenter d'acceder a un serveur XDMCP sur Shiva. Le serveur XDMCP authentifiera alors l'utilisateur (par une fenetre XDM), et lancera ensuite le WindowManager défini dans  /.xsession .

Il faut bien sur que le démon XDM soit lancé sur votre machine (soit dans un script rc), soit dans ttys ou inittab suivant l'OS. Dans ce dernier cas, il faut faire attention à le lancer avec l'option -nodaemon, ce qui donne une ligne de ce type sous FreeBSD
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm  on   secure

2.4.2   Configuration

Les fichiers de configurations se trouvent dans /usr/X11R6/lib/X11/xdm .

xdm-config

C'est le fichier de config principal de XDM, on va ajouter 3 lignes:

!
DisplayManager.vishnu_0.setup: /usr/X11R6/lib/X11/xdm/Xsetup_0
DisplayManager.vishnu_0.startup: /usr/X11R6/lib/X11/xdm/GiveConsole
DisplayManager.vishnu_0.reset: /usr/X11R6/lib/X11/xdm/TakeConsole
Il suffit de remplacer vishnu par le nom de votre Terminal X.

Et commenter la ligne: DisplayManager.requestPort: 0 afin de dire a XDM d'écouter les requêtes réseau

Xaccess

Xaccess est le fichier listant les clients authorisés à se connecter.

On va juste ajouter une simple ligne
vishnu                          # Authoriser Vishnu à se connecter
Vishnu est aussi aussi à changer en fonction de votre nom d'hôte.

2.4.3   Xservers

Si vous ne souhaitez pas voir de serveur X avec une fenetre de logon XDM apparaitre sur votre PC tout en faisant tourner XDM pour accepter les requêtes, commentez la ligne :0 local /usr/X11R6/bin/X. Il n'y a pas besoin d'ajouter une ligne pour votre Terminal X, puisque celui-ci est actif sachant qu'il est lancé avec l'option -query

2.4.4   Autres fichiers

2.4.5   Relancer XDM

Si xdm tourne déja, un killall -1 xdm le relancera, mais vous serez déloggé de force de votre session X en cours. Si vous venez de l'ajouter a inittab ou ttys, il suffit de relancer init: kill -1 1

Chapitre 3   Configurer un terminal servant des consoles "telnet"

Cette partie vise plutôt à récuperer des vieux PC ayant 4 Mo de RAM par exemple. Elle décrit donc comment mettre en place du Swap par NFS si vous souhaitez mettre en place cela pour votre Terminal X.

Pour le swap, on créer un fichier vide d'une certaine taille avec dd (dd if=/dev/zero of=swap/swap1 bs=1024k count=16 pour un fichier de swap de 16 Mo) dans un dossier exporté par NFS, et on utilise la commande ensuite la commande /usr/sbin/vnconfig -e /dev/vn0b /swap/swap1 swap pour l'activer (à placer dans etc/rc).

3.1   Configurer le serveur

On configurera DHCPd et NFS de la meme manière que pour un serveur dans le cas d'un terminal X.

3.2   Compiler un noyau

On cherche ici à configurer le noyau de manière a économiser la RAM, on peut donc utiliser un noyau épuré. Voici, ici le fichier DISKLESS que j'utilise (il ne permet pas de lancer X:

machine         i386
cpu             I386_CPU
ident           GANESH
maxusers        8

options         MATH_EMULATE            #Support for x87 emulation
options         INET                    #InterNETworking
options         NFS                     #Network Filesystem
options         NFS_ROOT                #NFS usable as root device, NFS required
options         COMPAT_43               #Compatible with BSD 4.3 [KEEP THIS!]
options         _KPOSIX_PRIORITY_SCHEDULING
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev

options         BOOTP           # Use BOOTP to obtain IP address/hostname
options         BOOTP_NFSROOT   # NFS mount root filesystem using BOOTP info
options         BOOTP_WIRED_TO=ed0 # Use interface ed0 for BOOTP
                                   # Remplacer ed0 si besoin
device          isa
device          eisa

# atkbdc0 controls the keyboard 
device          atkbdc0 at isa? port IO_KBD
device          atkbd0  at atkbdc? irq 1 flags 0x1

device          vga0    at isa?
device          sc0     at isa? flags 0x100

# Floating point support - do not disable.
device          npx0    at nexus? port IO_NPX irq 13

# Support réseau # NE 2000 Isa/PCI ici.
device          miibus          # MII bus support
device          ed0     at isa? port 0x300 irq 3

pseudo-device   vn              # Pour Le SWAP via NFS
pseudo-device   loop            # Network loopback
pseudo-device   ether           # Ethernet support


Recompiler donc votre noyau, et garder le pour la suite. Vous pouvez le "stripper" grace a la commande strip.

3.3   Créer la racine pour le client

On placera la racine dans un dossier (/diskless par exemple, et on l'exportera via NFS)

3.3.1   Copie des fichiers

Ici, bin est relatif à /diskless et désigne donc /diskless/bin. Vous avez besoin d'une racine minimale. bin, dev, sbin et modules étant identiques à ceux sur le serveur, un cp -R devrait donc suffire.

Sous linux, il faut bien sur copier aussi les mêmes dossier, en y ajoutant lib

# mkdir /diskless
# cd /
# cp -R /bin /sbin /modules /dev /diskless

3.3.2   Dossiers spécifiques a la racine du terminal telnet

Créez un dossier root vide et des dossiers: var/log, var/db et var/tmp; le dossier tmp est un lien symboliquevers var/tmp. Créez ensuite les points de montage nécessaire (juste usr par un simple mkdir). Tous ces fichiers doivent appartenir a root.

# cd /diskless
# mkdir var var/log var/tmp var/db usr root etc
# chmod 1777 var/tmp     # Défini les droits rwxrwxrwt

3.3.3   Copie du noyau

Enfin, pour permettre au Terminal X de booter, vous devez copier le noyau que vous venez de compiler dans /diskless, la commande pour le faire est: cp /usr/src/sys/compile/DISKLESS/kernel /diskless

Sous linux, récuperez le noyau que vous avez crée plus haut.

3.3.4   Création du dossier /etc

Ce dossier est extrèmement simple, la config du terminal étant réduite au minimum, il contient une dizaine fichiers: hosts, rc, resolv.conf, ttys, gettytab, master.passwd et les fichiers qui en découlent. Copiez aussi le fichier services présent dans le /etc de votre système.

master.passwd

Il doit aussi contenir les mots de passes (passwd et shadow sous linux, laissez juste les comptes de base). Sous FreeBSD, c'est le fichier master.passwd qui a ce rôle, copiez le dans le nouveau dossier etc, et générez les fichier spwd.db et passwd grâce a la commande pwd_mkdb. On doit ajouter un compte telnet au fichier master.passwd . La ligne correspondant à ce compte est telnet:*:666:65534::0:0:Telnet autologin:/:/bin/telnet-shiva .

# Les commandes à exécuter sont les suivantes
cp /etc/master.passwd /diskless/etc; emacs /diskless/etc/master.passwd
# Supprimez alors les comptes utilisateurs qui ne sont pas lié au système
# Et ajouter la ligne:  telnet:*:666:65534::0:0:Telnet autologin:/:/bin/telnet-shiva

cd /diskless/etc
pwd_mkdb -d /diskless/etc
pwd_mkdb -p -d /diskless/etc

hosts

Voila donc le contenu de ses fichiers, le fichier hosts contient:
127.0.0.1       localhost
192.168.0.1     shiva        # Si vous n'avez pas de DNS qui se charge de la
192.168.0.2     vishnu       # résolution (seulement pour shiva et vishnu)

resolv.conf

Le fichier resolv.conf contient l'adresse des DNS (si vous en avez):
domain india.ath.cx
nameserver 192.168.0.1

ttys

Le fichier ttys est réduit a son strict minimum:
console none                            unknown off secure
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty telnet"         cons25  on  secure
ttyv2   "/usr/libexec/getty telnet"         cons25  on  secure
ttyv3   "/usr/libexec/getty telnet"         cons25  on  secure
# Vous pouvez en activer plus grace au on/off
ttyv4   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv5   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv6   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv7   "/usr/libexec/getty telnet"         cons25  off  secure
# Pseudo terminals
ttyp0   none                    network
ttyp1   none                    network
ttyp2   none                    network
[...]
ttySv   none                    network
Le fichier ttys est remplacé par inittab sous linux, vous devrez aussi le réduire a un minimum (voir la page de man correspondante) et faire en sorte qu'il finisse par exemple sur le niveau 3 et lance le script rc ci-dessous. Il affichera ensuite, sur les consoles, des telnet redirigés en entrée et en sortie: telnet shiva </dev/tty2 >/dev/tty2 .

gettytab

Le programme getty fait appel au fichier etc/gettytab, que vous allez créer en recopiant le fichier présent dans /etc , et en y ajoutant une entrée telnet, qui lancera automatiquement un login sous le compte telnet:

[...]
P|Pc|Pc console:\
        :ht:np:sp#115200:

telnet|tto:\
        :al=telnet:ht:np:sp#115200:

#
[...]

Le script telnet-shiva

Le compte telnet dispose d'un script shell en tant que shell, il faut donc créer le script bin/telnet-shiva, et rendre se dernier éxécutable avec chmod x bin/telnet-shiva+ .

#!/bin/sh
# bin/telnet-shiva
clear
# Lance telnet sur shiva en mode 8bit (pour les accents)
exec /usr/bin/telnet -8 shiva

rc

Le fichier qui s'occupe de la procédure de boot est le script rc (qui doit etre executable), il contient:
 
#!/bin/sh
#
PATH=/bin:/:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin
export PATH

# configurer les interfaces reseaux # Corriger l'IP si besoin
# Ces commandes peuvent varier sous linux, voir les HOWTO
/sbin/ifconfig lo0 127.0.0.1
/sbin/ifconfig ed0 192.168.0.2 netmask 0xffffff00

# monter les système de fichiers via NFS # Modifier les noms au besoin
/sbin/mount shiva:/diskless /
/sbin/mount shiva:/usr /usr

# Chargement de la map fr pour le clavier
/usr/sbin/kbdcontrol -l /usr/share/syscons/keymaps/fr.iso.acc.kbd
#loadkeys french   #pour linux

# On met en place le Swap over NFS 
# On a créer un fichier vide de 16 Mo avec dd dans /diskless/swap/swap1:
#  #dd if=/dev/zero of=swap/swap1 bs=1024k count=16
/usr/sbin/vnconfig -e /dev/vn0b /swap/swap1 swap


# Il faut charger les polices pour les consoles:

for i in 0 1 2 3 4 5 6 7 8 9 a b 
do
vidcontrol < /dev/ttyv$i -f 8x14 iso-8x14
vidcontrol < /dev/ttyv$i -f 8x8  iso-8x8 
vidcontrol < /dev/ttyv$i -f 8x16 iso-8x16
done


# On passe le relai a init et au fichier ttys
exit 0

Voila, normalement, il ne vous reste plus qu'a booter votre terminal telnet et tout devrait bien se passer.

Chapitre 4   Quelques liens

Quelques liens qui vous permettrons d'en savoir plus et d'appronfondir le système.

4.1   Documents génériques

Ces documents sont disponibles sur http://www.freenix.org/linux/.

4.1.1   Application

4.1.2   A propos des boot diskless

4.1.3   A propos de NFS

4.1.4   A propos de XDM

4.2   Documents spécifiques à Linux

4.3   Documents spécifiques à FreeBSD

Fin

Ca y est, normalement, tout marche, autrement, relisez en vitesse le document et écrivez moi, j'ai peut-être oublié quelque chose. Et amusez vous bien en affichant les applis qui tournent sur votre nouvel Athlon XP1600+ sur votre vieux 486 qui allait partir à la casse.

Si cela ne marche pas, vérifiez que vous avez bien relancer tous les serveurs (pour qu'ils relisent leur config), consultez les logs , et assurez vous qu'il y a bien la correspondance nom d'hote / IP pour le serveur et pour le client dans les deux fichiers etc/hosts ou dans le DNS.

Si vous relevez des fautes, vous pouvez toujours m'écrire à l'adresse nlsn@free.fr. Si vous avez des informations interessantes a ajouter, vous pouvez aussi me les envoyer.

Je tiens à remercier les personnes du forum fr.comp.os.bsd qui m'ont indiqué des pistes pour configurer cela. Et aussi tous les développeurs des logiciels libres (Linux, FreeBSD, XFree) pour l'excellente qualité de ces OS et logiciels.

Si vous pouvez m'envoyez des recettes de cuisine, je vous en serait reconnaissant ;-)


Ce document a été traduit de LATEX par HEVEA.