DenisG.net
  Réseaux & Linux 

  RecycLinux




 


 Retour à Réseaux & Linux

Réseau LTSP


(ou comment mettre en place un réseau de bornes internet verrouillées)

Cette page est obsolète, maintenant. Les versions de logiciels cités ici sont dépassées. LTSP aussi a beaucoup progressé depuis.
Je laisse cette page en ligne pour information, mais ne la suivez pas à la lettre, le site http://ltsp.org vous en dira beaucoup plus...

Sommaire de la page : Sur ce sujet, voir aussi le site de l'Association RecycLinux   RecycLinux

Introduction :

En tant qu'administrateur réseau dans un lycée, je passais souvent des journées entières à remettre en état les ordinateurs du C.D.I. (sous Windows 98), voire à tout réinstaller, suite à diverses dégradations plus ou moins volontaires :
  • Changement de fond d'écran et d'apparence des icônes
  • Installation de programmes
  • Effacement de fichiers ou de programmes
  • Destruction gratuite pour le plaisir du vandalisme
Les logiciels de protection pour Windows (WinProtector, WinLock, etc.) étaient évidemment les premiers désinstallés ! Les élèves savent très bien chercher le moyen de les désactiver sur Google...

Pour éviter d'y passer ma vie, j'ai décidé de mettre en place un serveur LTSP (Linux Terminal Server Project) et des terminaux (ou clients légers), c'est-à-dire des postes sans disque dur qui ne font qu'afficher ce qui se passe sur le serveur. Les élèves, n'ayant pas les droits suffisants, ne peuvent modifier la configuration du serveur, ni rien y installer ou désinstaller. De plus, toute modification à apporter au système n'est à faire qu'une seule fois, sur le serveur, et s'applique automatiquement à tous les terminaux.
Le système d'exploitation Linux nous met aussi à l'abri des virus.

Il faut bien comprendre que pour une utilisation bureautique, un PC passe 99% de son temps à attendre les ordres de l'utilisateur, il peut donc en gérer plusieurs en même temps. Dans le pire des cas, si tous les utilisateurs envoient des ordres au même instant, le léger retard dû à la file d'attente est à peine perceptible. On peut même avoir un gain car un programme déjà chargé en mémoire par un premier utilisateur est accessible plus rapidement pour les suivants.

C'est le serveur qui fait tout, c'est donc lui qu'il faut soigner ! Compter au minimum 512 Mo + 64 Mo par client pour la RAM. Les clients, eux, se contenteront de 32 Mo, d'un lecteur de disquettes (ou d'un petit disque dur) pour booter, d'une carte vidéo et d'une carte réseau. Préférez des cartes réseau classiques (3Com ou Realtek, par exemple), reconnues par tous les Linux. De même pour les cartes vidéo. Les claviers et souris PS/2 sont reconnus sans soucis. Attention aux souris USB qui nécessitent une manipulation particulière. (voir plus bas)

Mise en place du CDI :
  • Les terminaux, des vieux Pentium II obsolètes pour Windows XP, et l'imprimante laser (qui n'est plus réseau aujourd'hui mais sur port parallèle, contrairement à l'illustration ci-contre) sont dans le CDI, accessibles aux élèves.
  • Le serveur, un Celeron 2.6 GHz, 1 Go de RAM, tournant sous Ubuntu Linux, est dans le local de brassage réseau, fermé à clé.
  • L'accès à internet se fait par le réseau pédagogique du lycée (contenu filtré, certains ports bloqués).
Seuls l'accès à internet, grâce à une version bridée du navigateur Firefox (), et l'utilisation d'un logiciel de bureautique, OpenOffice.org sont possibles pour l'instant.
J'ai choisi l'interface graphique IceWM qui est très légère et dont la configuration nécessite l'édition de fichiers texte, que j'ai protégés en écriture.

Deuxième étape, une autre salle informatique :

Dans le batiment voisin, j'ai transformé en clients légers les 8 Pentiums III d'une salle informatique (anciennement sous Windows 98), souvent victimes des mêmes tentatives de vandalismes, pour qu'ils accèdent eux aussi au serveur LTSP.
Dans chaque salle, un poste pilote une imprimante (sur port parallèle) et les élèves ne peuvent imprimer que sur l'imprimante qui est dans leur salle.
Les deux sous-réseaux sont reliés au serveur par un switch dédié au réseau LTSP. Seules les infos vers internet passent par le réseau pédagogique du lycée, pour ne pas l'encombrer, en effet tous les mouvements de souris et tous les évènements d'affichage sont transmis au serveur par le réseau (simple précaution, je pense qu'il pourrait supporter cette charge sans trop de problèmes).

Installation du serveur :

Attention, les informations ci-dessous sont pour LTSP 4.1. Elles sont peut-être aussi valables pour les versions ultérieures, mais ça n'a pas été encore testé.
Sur une machine où Linux a été installé (quelle que soit la distribution ), ainsi que l'interface graphique et les logiciels souhaités :
  • Télécharger et exécuter (en root) l'installeur ltspadmin, qui va ensuite télécharger et configurer tous les composants nécessaires
  • La documentation sur le site de LTSP est très bien faite, et existe en français. N'oubliez pas le WIKI.
  • Adapter le fichier /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 192.168.0.255;
    option routers 192.168.0.1;
    option domain-name-servers 192.168.0.1;
    option domain-name "mon-lycee.fr"; # Par exemple...
    option root-path "192.168.0.1:/opt/ltsp/i386";
    option option-128 code 128 = string;
    option option-129 code 129 = text;
    subnet 192.168.0.0 netmask 255.255.255.0 {
    use-host-decl-names on;
    option log-servers 192.168.0.1;
    host client1 {
    hardware ethernet 00:11:22:33:44:55;
    fixed-address 192.168.0.2;
    filename "/tftpboot/lts/vmlinuz-2.6.9-ltsp-3";
    }

    Ne pas oublier de relancer dhcpd avec /etc/init.d/dhcpd restart par exemple

    Attention si le serveur est sous Ubuntu Linux 5.10 : la version Ubuntu de LTSP utilise le fichier /etc/ltsp/dhcpd.conf, même s'il y a un /etc/dhcpd.conf ou /etc/dhcp3/dhcpd.conf.

  • Fichier /etc/hosts : mettre les adresses de tous les clients
  • Ce qui sera la racine des terminaux (leur / ) se situe dans /opt/ltsp/i386, il faut donc modifier aussi le fichier /opt/ltsp/i386/etc/lts.conf :

    [Default]
    SERVER = 192.168.0.1
    XSERVER = auto
    X_MOUSE_PROTOCOL = "ImPS/2" # ceci pour avoir la molette de la souris
    X_MOUSE_DEVICE = "/dev/psaux" # avec une souris PS/2
    X_MOUSE_RESOLUTION = 400
    USE_XFS = N
    SCREEN_01 = startx
    XkbModel = "pc105"
    XkbLayout = "fr-latin9" # clavier français
Installation des clients :
  • Préparer les terminaux. Avec une config classique (carte réseau 100Mb/s Realtek ou 3Com, 32Mo de RAM, pas de carte vidéo exotique, souris et clavier PS/2), vous êtes sûr de n'avoir aucun problème de reconnaissance de matériel.
  • Récupérer le BootROM correspondant à la carte réseau sur www.rom-o-matic.net
  • Pour booter le terminal sur une disquette :
    Récuperer le BootROM sous la forme "Floppy bootable ROM image .zdsk"
    Copier ce BootROM sur une disquette :
    dd if=BootROM.zdsk of=/dev/fd0  (ou   cat BootROM.zdsk > /dev/fd0)
    Câbler le tout et booter le terminal avec la disquette
  • Pour booter le terminal sur un disque dur :
    Récuperer le BootROM sous la forme "LILO loadable kernel format .zlilo"
    Copier ce BootROM sur une disquette
    Booter le terminal avec une disquette de boot Tom's Root Boot (ne pas retirer la disquette à la fin du boot)
    Ouvrir une session root (le mot de passe est indiqué)
    fdisk /dev/hda
    Effacer toutes les partitions et en créer une nouvelle, bootable, au format linux
    Quitter fdisk en enregistrant les modifications
    Créer un système de fichiers sur la nouvelle partition :
    mke2fs /dev/hda1
    Créer un dossier /boot dans le RAMdisk (disque dur virtuel en RAM, dans lequel vous travaillez actuellement) :
    mkdir /boot
    Mounter le disque dur dans /boot :
    mount /dev/hda1 /boot
    Mounter la disquette Tom's Root Boot dans /mnt :
    mount /dev/fd0 /mnt
    Copier le fichier boot.b (de LILO) sur le disque dur :
    cp /mnt/boot.b /boot
    Démonter la disquette :
    umount /dev/fd0
    Retirer la disquette Tom's Root Boot et placer celle contenant le BootROM
    Mounter la disquette et vérifier son contenu :
    mount /dev/fd0 /mnt
    ls /mnt

    Copier le fichier BootROM sur le disque dur :
    cp /mnt/BootROM.zlilo /boot
    Il faut maintenant taper cette longue commande sans se tromper pour configurer LILO :
    echo image=/boot/BootROM.zlilo label=LTSP | /usr/bin/lilo -C - -b /dev/hda -i /boot/boot.b -c -m /boot/map
    Si LILO vous dit qu'il a créé une section "LTSP" pour le démarrage, tout va bien !
    Vous pouvez retirer la disquette et rebooter le terminal. Si tout est câblé et le serveur configuré, c'est terminé !
Utiliser un PC portable comme client (carte réseau PCMCIA non reconnue par Rom-o-matic) :
  • Télécharger "LTSP-3.0 - Wireless" sur la page de téléchargement de Sourceforge, que votre carte réseau soit avec ou sans fil
  • Décompresser le fichier (avec tar xvzf)
  • Créer la disquette de boot en suivant le README
Attention : le client boote avec un noyau 2.4.19-ltsp-1 (contenu dans la disquette). Si vous devez charger des modules lors du boot, vous devez posséder les modules correspondant à ce noyau.
Pour cela :
  • Sur la page Sourceforge (voir plus haut), télécharger ltsp_kernel-3.0.5-i386.tgz
  • Décompresser le fichier (avec tar xvzf)
  • Copier lib/modules/2.4.19-ltsp-1 de l'archive décompressée dans /opt/ltsp/i386/lib/modules
Souris USB :

Je n'ai réussi à faire fonctionner une souris USB sur un client qu'en le bootant avec un noyau 2.4.26-ltsp-3 (à préciser dans /etc/dhcpd.conf, ne pas oublier de relancer dhcpd avec /etc/init.d/dhcpd restart par exemple).
Ajouter dans /opt/ltsp/i386/etc/lts.conf :
[nom_de_la_station]
MODULE_01 = mousedev
MODULE_02 = usbmouse
X_MOUSE_DEVICE = "/dev/input/mice"
Unité USB branchée sur le serveur :

Pour utiliser sur les clients une unité USB branchée sur le serveur (clé USB, appareil numérique...)
  • Créer un répertoire /mnt/usb avec droits 777
    mkdir /mnt/usb
    chmod 777 /mnt/usb
  • Sur le client, en root, taper
    mount -t vfat -o umask=000,utf8 /dev/sda1 /mnt/usb avec vfat pour une unité formatée en FAT32 et msdos pour une unité formatée en FAT16, et en condidérant que l'unité USB est en /dev/sda1 (dmesg après branchement vous le dira).
Attention : Cette méthode donne accès à l'unité USB à tous les clients.
A n'utiliser que dans le cas où vous pouvez faire confiance à tous les gens connectés.

Si le serveur sert aussi de poste de travail, l'automount (ou hotplug) ne donne l'accès qu'à la personne loguée localement sur le serveur. Pour que les autres puissent lire/écrire et démonter l'unité une fois le travail fini, ajouter une ligne du genre :
/dev/sda1 /mnt/usb vfat users,noauto,gid=1000,uid=1000,umask=002 0 0
dans le fichier /etc/fstab, avec l'UserID et le GroupID qui vous concernent au lieu de 1000. Ensuite monter l'unité avec mount /mnt/usb ou laisser hotplug s'en charger au branchement.

Lecteur de disquette/CD-ROM local (sur le client) :
  • Installer samba : apt-get install smbfs sous Debian
  • Ajouter

    [nom_de_la_station]
    LOCAL_DEVICE_01 = /dev/fd0:floppy
    LOCAL_DEVICE_02 = /dev/cdrom:cdrom

    dans lts.conf, en adaptant le nom de la station et du CDROM
  • Télécharger les scripts LDA-setup.sh et LDA-shutdown.sh, les rendre exécutables pour tout le monde (avec chmod a+x), et les copier dans /usr/local/bin
  • Pour GDM :
    • Ajouter /usr/local/bin/LDA-setup.sh en 3ème ligne de /etc/X11/gdm/PostLogin/Default
    • Ajouter /usr/local/bin/LDA-shutdown.sh en 3ème ligne de /etc/X11/gdm/PostSession/Default
  • Pour accéder aux disques locaux, ouvrir le gestionnaire de fichiers (nautilus, par exemple) et taper :
    smb://nobody@STATION/drives
    dans la barre d'adresse en adaptant le nom de la station
Cliquer ici pour plus de détails (en anglais).

Scanner HP 5300C USB sur un client :

Pour brancher un scanner sur un client LTSP, il faut télécharger les modules LTSP Scanners
et suivre les notes d'installation.
Le scanner HP 5300C utilise une émulation SCSI sur USB. Il nécessite pour fonctionner le module de noyau 'hpusbscsi' ainsi que le driver 'avision'.
  • Dans /opt/ltsp/i386/etc/sane.d/avision.conf, décommenter la ligne :
    # usb 0x03f0 0x0701 (enlever le dièse devant)
  • /opt/ltsp/i386/etc/rc.d/usbscanner doit contenir :
    mknod /dev/usb/scanner c 180 48
    mknod /dev/usb/scanner0 c 180 48
  • Dans /opt/ltsp/i386/etc/lts.conf, ajouter ces lignes dans la section concernant le client auquel est connecté le scanner :
    MODULE_01 = scanner
    MODULE_02 = hpusbscsi
    RCFILE_01 = xinetd
    RCFILE_02 = usbscanner
  • Pour un autre modèle de scanner, commencer par repérer le code USB associé (0x03f0 0x0701 pour moi) donné par la commande dmesg au moment où vous connectez le scanner, et chercher ce code dans le fichier /opt/ltsp/i386/lib/modules/VOTRENOYAU/modules.usbmap pour connaître le module à charger. Ensuite appeler ce module au boot de la station (hpusbscsi dans mon exemple)
Conclusion

Ce principe n'est pas du tout nouveau : les gros systèmes (mainframes, UNIX...) l'utilisent depuis longtemps, mais LTSP l'a adapté à l'utilisation quotidienne et éducative.

J'ai fondé l'Association RecycLinux (voir le site www.recyclinux.com) dont l'objet est de recycler des vieux ordinateurs obsolètes en clients légers grâce à cette technologie. Ceci permettra par exemple de réduire la pollution engendrée par ces vieilles machines lorsqu'elles sont mises en décharge.

J'ai aussi adapté la technologie LTSP chez moi (cliquer ici pour voir mon réseau personnel) pour me simplifier la configuration et le maintien à jour des logiciels.







Pour tout commentaire, voir cette page...
 Retour à Réseaux & Linux Revenir en haut de la page