Installation d’un réseau client/serveur LTSP
vers un réseau tout Linux

Introduction

LTSP (Linux Terminal Server Project) est une application permettant de réaliser un réseau à base de terminaux en mode console ou graphique, connectés à un serveur central. Un terminal est un PC minimaliste constitué : Le tout sans disque dur, système et applications étant exécutés sur le serveur... Il faut aussi un système Linux, relativement récent, dont la puissance et la quantité de RAM seront dépendants du nombre de clients que vous comptez connecter au serveur. L'avantage d'une telle solution est que tout est centralisé sur le serveur. Les mises à jour ne se font qu'une seule fois, elles sont valables pour tous les clients. Un client ne coûte pas cher et il est facile à démarrer ou arrêter: il suffit d'agir sur le bouton marche/arrêt sans aucune précaution

Remarque

L’installation d’un tel serveur et de ses clients nécessite une bonne connaissance de la théorie des réseaux et une assez bonne maîtrise de Linux en particulier :

Installation du serveur

Les fichiers et les exemples de ce document sont basés sur un réseau test composé  de : Remarque importante
Il faut noter que l'installation de LTSP crée des trous de sécurité sur votre serveur s'il est connecté à internet.

  1. Installation étape 1
  2. Installé sur votre serveur distribution Mandrake 9.1 configuré avec KDE comme serveur graphique. Il faut vérifier que les paquetages (et leurs dépendances) suivants sont bien installés sur le serveur :

  3. Installation étape 2
  4. Quatre paquetages seront nécessaires, à télécharger depuis le site LTSP (http://ltsp.org/) :

    Lancer Mandrake Control Center et installer les quatre paquetages LTSP, dans l'ordre présenté plus haut.

  5. Services à activer au démarrage
  6. Les services suivants doivent être activés au démarrage :

  7. Configuration des cartes réseau

Configuration du serveur

La configuration du serveur s'effectue alors en lançant un petit script situé dans le répertoire /opt/ltsp/templates/
Pour ce faire taper : ./ltsp_initialize (point slash ltsp_initialize)
Ce script installe les fichiers suivants dans les répertoires spécifiés :

fichier de configuration répertoire
default /etc/X11/gdm/init/
dhcpd.conf.example /etc/
exports /etc/
gdm.conf /etc/X11/gdm/
hosts.allow /etc/
inittab /etc/
kdmrc /usr/share/config/kdm/
ltsp.gif /etc/X11/Xdm/
syslog /etc/sysconfig/
Xaccess /etc/X11/Xdm/
xdm-config /etc/X11/Xdm/
Xservers /etc/X11/Xdm/
Xsetup_workstation /etc/X11/Xdm/

  1. Le fichier dhcpd.conf
  2. Le serveur DHCP (Dynamic Host Configuration protocol) est configuré par l'intermédiaire du fichier /etc/dhcpd.conf. C'est ce serveur qui va notamment attribuer l'adresse IP et le nom du client, le chemin du noyau à charger, l'adresse du serveur et le chemin dans lequel sera monté le système de fichier du client. Il faut renommer le fichier /etc/dhcpd.conf.example en dhcpd.conf, puis l'éditer pour modifier les paramètres pour avoir un fichier ressemblant à :
    # Sample configuration file for ISCD dhcpd
    #
    # Don't forget to set run_dhcpd=1 in /etc/init.d/dhcpd
    # once you adjusted this file and copied it to /etc/dhcpd.conf.
    #
    ddns-update-style	none;
    default-lease-time	21600;
    max-lease-time		21600
    
    option		subnet-mask            255.255.255.0;
    option		broadcast-address      172.16.0.255;
    option		routers                172.16.0.150;
    option		domain-name-servers    172.16.0.150;
    option		domain-name            "ltsp-serveur.local";
    option		root-path              "172.16.0.150:/opt/ltsp/i386";
    
    option		option-128 code 128 = string;
    option		option-129 code 129 = text;
    
    shared-network	WORKSTATIONS {
       subnet 172.16.0.0 netmask 255.255.255.0 {
       }
    }
    
    group	{
       use-host-decl-names       on;
       option log-servers        172.16.0.150;
       host ws000 {
           hardware ethernet     00:50:BA:E2:F6:7E;
           fixed-address         172.16.0.160;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws001 {
           hardware ethernet     00:50:BA:E2:FD:E8;
           fixed-address         172.16.0.161;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws002 {
           hardware ethernet     00:50:BA:0A:02:D1;
           fixed-address         172.16.0.162;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws003 {
           hardware ethernet     00:50:BA:E2:FD:E7;
           fixed-address         172.16.0.163;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws004 {
           hardware ethernet     00:50:BA:0A:03:14;
           fixed-address         172.16.0.164;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws005 {
           hardware ethernet     00:50:BA:E2:FF:BE;
           fixed-address         172.16.0.165;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws006 {
           hardware ethernet     00:50:BA:0A:03:15;
           fixed-address         172.16.0.166;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws007 {
           hardware ethernet     00:50:BA:E2:FD:E6;
           fixed-address         172.16.0.167;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       host ws008 {
           hardware ethernet     00:50:BA:E2:E4:35;
           fixed-address         172.16.0.168;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
       }
    
       # poste "Pentium 90"
       host ws023 {
           hardware ethernet     00:50:BA:23:DA:57;
           fixed-address         172.16.0.183;
           filename              "/lts/vmlinuz-2.4.22-ltsp-1";
           option   option-128	 e4:45:74:68:00:00;  # ce n'est pas une adresse MAC !
           option   option-129	 "NIC=3D3c509";
       }
    }
    
    Dans notre exemple ce fichier correspond à

    Cas particulier des cartes réseau ISA
  3. Le fichier hosts (etc/ hosts)

    Il faut également assurer la correspondance de chaque client entre adresse IP et hostname. En l'absence de serveur DNS, c'est le rôle du fichier /etc/hosts, auquel il faut rajouter les lignes suivantes :
    127.0.0.1			localhost
    172.16.0.161		ws001
    172.16.0.162		ws002
    172.16.0.163		ws003
    172.16.0.164		ws004
    172.16.0.165		ws005
    172.16.0.166		ws006
    172.16.0.167		ws007
    172.16.0.168		ws008
    172.16.0.183		ws023
    
  4. Le fichier ltsp.conf

    Il faut configurer le fichier /opt/ltsp/i386/etc/lts.conf qui indique certains paramètres de connexion (serveur graphique à utiliser, runlevel...) pour chaque client.
    #
    # Config file for the Linux Terminal Server Project (www.ltsp.org)
    #
    
    [Default]
        SERVER             = 172.16.0.150
        XSERVER            = auto
    	X_MOUSE_PROTOCOL   = "PS/2"
    	XKBLAYOUT          = "fr"
    	X_MOUSE_DEVICE     = "/dev/psaux"
    	X_MOUSE_RESOLUTION = 400
    	X_MOUSE_BUTTONS    = 3
    	USE_XFS            = N
    	LOCAL_APPS         = N
        RUNLEVEL           = 5
    	SOUND              = N
    	#    SOUND_DAEMON       = nasd
    	#    SMODULE_01         = sb io=0x220 irq=5 dma=1
    
    #------------------------------------------------------------------------------
    #
    # Example of specifying X settings for a workstation
    #
    [ws001]
           XSERVER            = auto
           LOCAL_APPS         = N
           USE_NFS_SWAP       = N
           SWAPFILE_SIZE      = 48m
           RUNLEVEL           = 5
    
    [ws023]
           XSERVER            = auto
           X_MODE_0           = 800x600
           LOCAL_APPS         = N
           USE_NFS_SWAP       = N
           SWAPFILE_SIZE      = 64m
           RUNLEVEL           = 5
    
    [ws021]
           XSERVER            = XF86_S3
           LOCAL_APPS         = N
           USE_NFS_SWAP       = N
           SWAPFILE_SIZE      = 64m
           RUNLEVEL           = 5
    
    #
    # ws004 is my virtual workstation running in a VMware session
    #
    #[ws004]
    #      DNS_SERVER         = 172.16.0.150
    #      XSERVER            = auto
    #      X4_BUSID           = "PCI:0:15:0"
    #      X_MODE_0           = 800x600
    #      LOCAL_APPS         = N
    #      USE_NFS_SWAP       = N
    #      SWAPFILE_SIZE      = 64m
    #      RUNLEVEL           = 5
    
    #------------------------------------------------------------------------------
    #
    # Example of a workstation configured to load some modules
    #
    #[ws001]
    #  MODULE_01       = agpgart.o		# This is for i810 video
    #  MODULE_02       = uart401.o
    #  MODULE_03       = sb.o io=0x220 irq=5 dma=1
    #  MODULE_04       = opl3.o
    
    #------------------------------------------------------------------------------
    #
    # Example of ws001 configured for local apps
    #
    #[ws001]
    #   LOCAL_APPS      = Y
    #   LOCAL_WM        = Y
    #   NIS_DOMAIN      = ltsp
    #   NIS_SERVER      = 172.16.0.150
    
    #------------------------------------------------------------------------------
    #
    # Example of a serial printer attached to /dev/ttyS1 on workstation
    ws001
    #
    # [ws001]
    #   PRINTER_0_DEVICE   = /dev/ttyS1
    #   PRINTER_0_TYPE     = S		# P-Parallel, S-Serial
    #   PRINTER_0_PORT     = 9100		# tcp/ip port: defaults to 9100
    #   PRINTER_0_SPEED    = 9600		# baud rate: defaults to 9600
    #   PRINTER_0_FLOWCTRL = S		# Flow control: S-Software (XON/XOFF),
    #			H-Hardware (CTS/RTS)
    #   PRINTER_0_PARITY   = N		# Parity: N-None, E-Even, O-Odd
    #			(defaults to 'N')
    #   PRINTER_0_DATABITS = 8		# Databits: 5,6,7,8 (defaults to 8)
    
    Remarques

  5. Le fichier hosts.allow (/etc/hosts.allow)

    #
    # hosts.allow	This file describes the names of the hosts which are
    #		allowed to use the local INET services, as decided
    #		by the '/usr/sbin/tcpd' server.
    #
    
    ## LTS-begin ##
    
    #
    # The lines between the 'LTS-begin' and the 'LTS-end' were added
    # on: mar mai 25 15:53:34 CEST 2004 by the ltsp installation script.
    # For more information, visit the ltsp homepage
    # at http://www.ltsp.org
    #
    
    bootpd:      0.0.0.0
    in.tftpd:    172.16.0.
    portmap:     172.16.0.
    
    ## LTS-end ##
    
  6. Le fichier exports (etc/exports)

    #
    ## LTS-begin ##
    
    #
    # The lines between the 'LTS-begin' and the 'LTS-end' were added
    # on: mar mai 25 15:53:34 CEST 2004 by the ltsp installation script.
    # For more information, visit the ltsp homepage
    # at http://www.ltsp.org
    #
    
    /opt/ltsp/i386                 172.16.0.0/255.255.255.0(ro,no_root_squash)
    /var/opt/ltsp/swapfiles        172.16.0.0/255.255.255.0(rw,no_root_squash)
    /tftpboot/lts                  172.16.0.0/255.255.255.0(ro,no_root_squash)
    
    #
    # The following entries need to be uncommented if you want
    # Local App support in ltsp
    #
    #/home                         172.16.0.0/255.255.255.0(rw,no_root_squash)
    
    ## LTS-end ##
    

Configuration des services

Il faut vérifier que les différents services nécessaires sont bien actifs 
L’état actuel des services s’obtient par la commande : service -s

Installation du client

Configurer le client revient à créer une disquette de démarrage, adaptée à votre carte réseau. Pour cela, il faut vous rendre sur le site Rom-o-matic (http://www.rom-o-matic.net/) et télécharger le fichier correspondant à votre carte réseau. Un formulaire vous permet d'obtenir l’utilitaire (fichier .zdsk) correspondant à votre carte réseau client. En cliquant sur "Get ROM', le téléchargement s'effectuera.
Il faut alors copier ce fichier sur une disquette vierge formatée, soit avec l'utilitaire rawrite ou rawritewin (disponible sur le CD1 de la plupart des distributions Linux), .soit en tapant sous une console Linux : cat nom_du_fichier.zdsk > /dev/fd0

Votre poste client doit booter sur la disquette (modification éventuelle du bios). Il suffit ensuite d’insérer votre disquette et de démarrer votre client.
Le microprogramme présent sur la disquette va contacter le serveur dhcp qui va attribuer une adresse IP à la carte réseau, puis il lancera la procédure de démarrage du client.

Remarque

Vous pouvez ne pas utiliser de disquette, si vous disposez d'une carte réseau possédant une mémoire flashable dans laquelle il est possible de charger le micrologiciel d'amorçage (PXE : Pre-boot eXecution Environment)...

En cas de problèmes

Il est intéressant de visualiser le contenu des fichiers de log: /var/log/messages et /var/log/mdkkdm.log
C'est dans le premier fichier, notamment, que vous verrez apparaître l'adresse MAC de la carte réseau du client, si vous n'avez trouvé aucun autre moyen de la déterminer.
Ensuite, si vos problèmes persistent, il existe une documentation conséquente (en Anglais) et une mailing-list très active, accessible à partir du site LTSP...

 

Pierre Hannoun
Reginald Chevillon

FCTICE77 Melun