LTSP est l'abréviation de « Linux Terminal Server Project » (projet de serveur de terminaux Linux). Une fois installé sur un serveur, il peut fournir des environnements identiques à plusieurs stations de travail. Toutes les applications tournent sur le serveur, ce qui vous permet de réutiliser de vieux PC en les convertissant en terminaux X. Cela réduit les coûts et la maintenance, surtout dans un milieu dans lequel chaque station doit avoir un environnement de travail identique, par exemple dans une école ou une grande entreprise.
Tous les exemples de ce document supposent que l'adresse IP de votre serveur est 192.168.0.254, que votre nom de domaine est mondomaine.com et que votre réseau d'adresses IP est 192.168.0.0/24.
Premièrement, vous devez déjà avoir un système Gentoo fonctionnel. Pour cela, veuillez lire le manuel d'installation de Gentoo pour votre architecture sur le site de documentation de Gentoo.
Ensuite, continuons par l'étape la plus facile, installer LTSP :
Exemple de code 2.1 : Installer LTSP |
# emerge ltsp
|
Les dépendances suivantes seront installées :
Note : Si vous avez "kde" ou "gnome" dans votre variable USE, cela installera un système KDE ou GNOME complet. |
Une fois qu'emerge a fini son travail, tous les services doivent alors être configurés :
Pour analyser les problèmes plus facilement, le système de journalisation doit être configuré pour accepter les connexions distantes. Veuillez lire sa documentation (man syslog par exemple) pour savoir comment faire. Par exemple, si vous utilisez sysklogd, il vous suffit d'éditer le fichier /etc/conf.d/sysklogd et d'ajouter « -r » à la ligne SYSLOGD :
Exemple de code 3.1 : /etc/conf.d/sysklogd |
SYSLOGD="-m 0 -r" KLOGD="-c 3 -2" |
L'étape suivante est d'éditer votre fichier /etc/exports, afin de permettre aux stations de monter leur système de fichiers racine. Il devrait y avoir au moins deux lignes :
Exemple de code 3.2 : /etc/exports |
/opt/ltsp-4.1/i386 192.168.0.0/255.255.255.0(ro,no_root_squash,async) /var/opt/ltsp/swapfiles 192.168.0.0/255.255.255.0(rw,no_root_squash,async) |
Note : Vous devez modifier l'adresse et le masque pour que cela corresponde à l'adresse et au masque de votre réseau. |
Maintenant, lancez NFS :
Exemple de code 3.3 : Lancement de NFS |
# rc-update add nfs default # /etc/init.d/nfs start |
TFTP a besoin d'être configuré pour qu'il puisse fonctionner correctement. Tout d'abord, éditez le fichier /etc/conf.d/in.tftpd pour définir les options correctes et le chemin vers les fichiers servis par tftpd :
Exemple de code 3.4 : /etc/conf.d/in.tftpd |
INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s ${INTFTPD_PATH}"
|
L'option -s indique à TFTP qu'il doit tourner dans un environment « chrooté » (recommandé). Cela signifie aussi que vous ne devrez pas spécifier le chemin /tftpboot dans la configuration de DHCP.
Ensuite, configurez xinetd pour qu'il lance TFTP et qu'il accepte les connexions distantes. Par défaut, TFTP n'est pas lancé par xinetd. Éditez le fichier /etc/xinetd.d/tftp et remplacez disable=yes par disable=no. Si le fichier n'existe pas, créez le fichier et recopiez l'exemple ci-dessous.
Exemple de code 3.5 : /etc/xinetd.d/tftp |
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
}
|
Ensuite, éditez le fichier /etc/xinetd.conf et commentez la ligne only_from = localhost en la faisant débuter par un #. Enfin, lancez xinetd.
Exemple de code 3.6 : Lancement de xinetd |
# rc-update add xinetd default # /etc/init.d/xinetd start |
Afin que la station puisse atteindre n'importe quelle machine, il lui faut un serveur DNS valide. Il y a plusieurs façons de résoudre ce problème. La première est de configurer un serveur DNS sur le réseau local ; la deuxième (plus simple) est d'avoir un fichier /etc/hosts identique sur chaque station. Nous utiliserons la deuxième méthode.
Toutes les stations doivent être listées dans le fichier /etc/hosts. Voici un exemple :
Exemple de code 3.7 : /etc/hosts |
127.0.0.1 localhost 192.168.0.254 serveur serveur.mondomaine.com 192.168.0.1 station01 station01.mondomaine.com |
C'est l'étape la plus compliquée à mon avis. Vous devez créer une configuration DHCP (/etc/dhcp/dhcpd.conf) correcte. En voici un exemple :
Exemple de code 3.8 : dhcpd.conf |
(Quelques options générales) default-lease-time 21600; max-lease-time 21600; use-host-decl-names on; ddns-update-style ad-hoc; (Options pour Bootp) allow booting; allow bootp; (Options de définition du réseau) option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.254; option domain-name-servers 192.168.0.254; option log-servers 192.168.0.254; option domain-name "mondomaine.com"; (Options de chemins pour LTSP) option root-path "192.168.0.254:/opt/ltsp-4.1/i386"; filename "/lts/vmlinuz-2.4.26-ltsp-2"; (Addresse du serveur tftp duquel le fichier ltsp doit être téléchargé) next-server 192.168.0.254; (Si vos stations ont des cartes réseau ISA, décommentez les) (lignes suivantes et modifiez le nom du pilote et l'adresse IO.) #option option-128 code 128 = string; #option option-129 code 129 = text; #option option-128 e4:45:74:68:00:00; #option option-129 "NIC=ne IO=0x300"; shared-network WORKSTATIONS { subnet 192.168.0.0 netmask 255.255.255.0 { (Alloue des adresses IP dynamiques aux stations.) range dynamic-bootp 192.168.0.1 192.168.0.16; (Configuration spécifique à une station pour le boot PXE) #host ws001 { # hardware ethernet 00:E0:06:E8:00:84; # fixed-address 192.168.0.1; #} } } |
Si vos stations supportent le PXE, vous devriez lister chacune d'entre elles de la même manière que nous l'avons fait pour host ws001 (n'oubliez pas de décommenter). Ne leur donnez pas une adresse comprise dans l'intervalle d'adresses IP dynamiques spécifié ci-haut, car sinon plusieurs stations pourraient obtenir la même adresse IP (ce qui poserait des problèmes). Attention, si vous faites un copier/coller de cet exemple, veillez à bien remplacer « // » des commentaires par « ## » car sinon dhcp ne démarrera pas.
Pour plus d'informations à ce propos, vous pouvez lire le manuel officiel de DHCP : http://www.dhcp-handbook.com/.
Maintenant, lancez DHCP :
Exemple de code 3.9 : Lancement de DHCP |
# rc-update add dhcp default # /etc/init.d/dhcp start |
Note : DHCPD a besoin des options CONFIG_PACKET et CONFIG_FILTER activées dans le noyau pour pouvoir fonctionner. |
Il existe beaucoup d'options pour configurer vos stations. Allez jeter un œil sur http://ltsp.mirrors.tds.net/pub/ltsp/docs/ltsp-4.1-en.html#AEN1190 pour une description complète du fichier /opt/ltsp/i386/etc/lts.conf.
Voici quelques suggestions pour que vous puissiez démarrer plus facilement. Vous pouvez copier le fichier /opt/ltsp/i386/etc/lts.conf.example vers /opt/ltsp/i386/etc/lts.conf et adapter cette configuration à vos besoins. Vous pouvez changer l'option SCREEN_01 en SCREEN_01 = startx. Pour utiliser une souris USB sur les clients distants, ajoutez les lignes MODULE suivantes et changez les lignes X_MOUSE_* comme indiqué :
Exemple de code 3.10 : /opt/ltsp/i386/etc/lts.conf |
MODULE_01 = usb-uhci MODULE_02 = mousedev MODULE_03 = usbmouse X_MOUSE_PROTOCOL = "IMPS/2" X_MOUSE_DEVICE = "/dev/input/mice" |
Gestionnaire de sessions graphiques
Vous devez maintenant modifier la configuration de votre gestionnaire de sessions graphiques pour que lui aussi accepte les connexions distantes.
Dans le fichier /etc/X11/xdm/Xaccess, décommentez la ligne suivante :
Exemple de code 3.11 : Fichier /etc/X11/xdm/Xaccess |
#* #any host can get a login window |
Ensuite, configurez le gestionnaire de sessions graphiques de votre choix :
XDM : Dans le fichier /etc/X11/xdm/xdm-config, commentez DisplayManager.requestPort: 0.
KDM : Dans le fichier /usr/kde/3.1/share/config/kdm/kdmrc, cherchez la section [Xdmcp] et remplacez Enable = false par Enable = true.
GDM : Dans le fichier /etc/X11/gdm/gdm.conf, cherchez la section [xdmcp] et remplacez Enable = false par Enable = True.
Pour lancez le gestionnaire de sessions graphiques :
Exemple de code 3.12 : Lancement de xdm |
# rc-update add xdm default # /etc/init.d/xdm start |
Attention : Il semble qu'il y ait des problèmes actuellement avec XDM et GDM. L'auteur utilise KDM pour résoudre ces problèmes. |
Attention, si votre gestionnaire de sessions graphiques est déjà lancé, relancer le serveur X avec Ctrl-Alt-Backspace ne redémarrera pas le gestionnaire de sessions.
Créer une disquette de démarrage
Si vos stations ne supportent pas le démarrage avec PXE, vous pouvez créer une disquette de démarrage pour vos stations. Allez sur le site http://www.rom-o-matic.net/, sélectionnez la dernière version, puis votre carte réseau, ensuite cliquez sur Get ROM et enregistrez l'image sur une disquette :
Exemple de code 3.13 : Enregistrer l'image sur une disquette |
# cat nicfile.zdsk > /dev/fd0
|
Beaucoup de choses peuvent être à l'origine d'un problème. Heureusement, plusieurs ressources peuvent vous aider à résoudre vos problèmes :
Q : Mes stations ont des processeurs Pentium II, mais mon serveur compile avec march=athlon-xp, cela va-t-il fonctionner ?
R : Ce n'est pas un problème, car toutes les applications tournent sur le serveur.
Q : Quel processeur et combien de RAM dois-je mettre dans mon serveur ?
R : Ce document contient quelques suggestions: http://wiki.ltsp.org/twiki/bin/view/Ltsp/ServerSizing.
Q : Avez-vous plus d'information sur PXE ?
R : Oui, jetez un œil à http://wiki.ltsp.org/twiki/bin/view/Ltsp/PXE.
Q : Est-ce possible d'utiliser des programmes en 3D accélérée sur les stations ?
R : Si vous utilisez des cartes nVidia, jetez un œil à http://wiki.ltsp.org/twiki/bin/view/Ltsp/NvidiaLtsp411.
Q : Dans certaines applications, les polices sont ignobles. Que faire ?
R : Vous devez mettre en place un serveur de polices (N.D.T. : XFontServer), ajoutez USE_XFS=Y à votre fichier lts.conf, éditez /etc/X11/fs/config et décommentez no-listen: tcp, remplacez XFS_PORT="-1" par XFS_PORT="7100" dans /etc/conf.d/xfs et lancez XFS : /etc/init.d/xfs start. Vérifiez également que le fichier /etc/X11/XF86Config (ou /etc/X11/xorg.conf) contient bien FontPath "unix/:7100" dans la section « Files ».
Q : Comment utiliser la carte son de mon ordinateur ?
A : Gentoo contient le paquet ltsp-sound. Veuillez consulter le fichier README inclus.
LTSP : « LTSP fournit un moyen simple d'utiliser des stations à bas prix en tant que terminaux graphiques ou console avec un serveur GNU/Linux. »
PXE : « Abbréviation de Pre-Boot Execution Environment. PXE est un composant de la spécification WfM d'Intel. Il permet à une station de démarrer sur un serveur du réseau au lieu de démarrer sur le système d'exploitation du disque dur local. Une station pourvue de PXE connecte sa carte réseau au réseau local via un cavalier, ce qui permet de laisser la station connectée au réseau même lorsque l'alimentation est éteinte. »
Ce document est protégé par la licence Creative Commons : Paternité - Partage des Conditions Initiales à l'Identique 2.5.