Accueil Installation Dossier : Installation d'un serveur LTSP avec Debian GNU Linux 6 Squeeze

Dossier : Installation d'un serveur LTSP avec Debian GNU Linux 6 Squeeze

ltsp logoCe article explique comment installer un serveur LTSP (Linux Terminal Server Project) avec Debian 6.

Avantages d'un serveur LTSP  :

- une seule machine à administrer, maintenance simplifiée
- dès qu'une application est installée sur le serveur, elle est immédiatement disponible pour tous les PC clients
- les PC clients n'ont pas besoin d'être puissants, un ancien PC sans disque dur suffit
- l'ajout d'un nouveau PC client se fait en quelques minutes

ltsp debian picture


Recommandations matériel

Voici une configuration utilisée dans une école, qui comporte 1 serveur LTSP et 15 PC clients.

PC serveur : processeur Intel core i7 + 8 Go de RAM + un disque dur rapide + 2 cartes réseau gigabit

PC clients : PC n'ayant pas plus de 5 ans, avec 512 Mo de RAM, et équipés d'une carte réseau 100 Mbs

Switch Ethernet Gigabit

Note concernant les PC clients

Vous devez configurer les PC clients LTSP pour qu'ils démarrent en priorité sur le réseau. Cette configuration se fait dans le BIOS des PC clients. Cherchez "Boot sequence" ou quelque chose de similaire, puis choississez "PXE" ou "Network" comme First boot device, et sauvegardez les réglages.


Installation du serveur LTSP

Téléchargez l'image du 1er CD d'installation Debian GNU Linux Squeeze amd64 :

http://www.debian.org/CD/http-ftp/#stable


Procédez à une installation classique.

Une fois l'installation de Debian GNU Linux terminée, ouvrez un Terminal Administrateur, et suivez les étapes ci-dessous.


Désactiver Network Manager

Tapez :

service network-manager stop

update-rc.d -f network-manager remove


Configurer les 2 cartes réseau

Tapez :

ifdown eth0

ifdown eth1


Editez comme suit le fichier/etc/network/interfaces :

#############################################
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Interface vers Internet

allow-hotplug eth0
iface eth0 inet dhcp

# Interface reseau local
# /etc/ltsp/nat : regles iptables pour acces a Internet des postes clients a partir du reseau local

auto eth1
iface eth1 inet static
address 10.101.1.1
netmask 255.255.255.0
network 10.101.1.0
up iptables-restore < /etc/ltsp-nat
#############################################


Créer le fichier /etc/ltsp-nat

Tapez :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sh -c 'iptables-save > /etc/ltsp-nat'


Remonter les interfaces réseau

Tapez :

ifup eth0
ifup eth1


Installer le package serveur LTSP

Tapez :

apt-get install ltsp-server-standalone


Note : ltsp-server-standalone est un meta paquet qui installera entre autres openssh-server et isc-dhcp-server

A la question "Veuillez choisir le répertoire racine qui sera utilisé par le serveur TFTP", laissez :

/srv/tftp


Editez comme suit le fichier /etc/exports :

#############################################
/opt/ltsp       *(ro,no_root_squash,async)
#############################################


Activer l'IP forwarding

Décommentez la ligne ci-dessous dans le fichier /etc/sysctl.conf :

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1


Pour activer l'IP forwarding en direct, tapez :

echo "1" > /proc/sys/net/ipv4/ip_forward


Configurer le serveur DHCP

Fichier /etc/default/isc-dhcp-server :

Configurez le port d'écoute pour le réseau local :

#############################################
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#    Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
#############################################


Effacez le contenu du fichier /etc/dhcp/dhcpd.conf et ajoutez :

#############################################
# Configuration LTSP
include "/etc/ltsp/dhcpd.conf";
#############################################


Editez comme suit le fichier /etc/ltsp/dhcpd.conf :
(à adapter selon votre configuration)

#############################################
authoritative;

subnet 10.101.1.0 netmask 255.255.255.0 {
range 10.101.1.101 10.101.1.200;
# domain-name et domain-name-servers uniquement si serveur DNS
option domain-name "rpinet.lan";
option domain-name-servers 10.101.1.1;
option broadcast-address 10.101.1.255;
option routers 10.101.1.1;
next-server 10.101.1.1;
# Utilisation d'un serveur DNS
# Si pas de serveur DNS, mettre en commentaire get-lease-hostnames
get-lease-hostnames true;
# Si pas de serveur DNS, on peut decommenter use-host-decl-names pour passer les noms host ci-dessous
#    use-host-decl-names true;
#    option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}

# Configuration des postes clients

host fuji1 {
hardware ethernet 11:11:11:11:11:11;
fixed-address 10.101.1.20;
}

host fuji2 {
hardware ethernet 22:22:22:22:22:22;
fixed-address 10.101.1.21;
}

}

#############################################



Redémarrez le serveur DHCP :

service isc-dhcp-server restart


Construire l'image du serveur LTSP utilisée par les clients

Nous allons maintenant construire le fichier image LTSP qui sera utilisé par les PC clients.

Puisque les PC clients risquent d'être un peu âgés, il est possible qu'ils ne supporteront pas le 64 bits. Nous allons donc construire l'image en 32 bits (i386).

Tapez :

ltsp-build-client --arch i386


Note : cette opération prend un certain temps, car les fichiers nécessaires à la création de l'image LTSP sont téléchargés sur Internet.


Fichier /etc/default/portmap :

Vérifiez qu'il n'y ait PAS de ligne OPTIONS="-i 127.0.0.1"
Le cas écheant, mettre cette ligne en commentaire et redémarrer portmap :

service portmap restart


Configurer TFTPD

Fichier /etc/inetd.conf :

Vérifiez qu'il n'y ait pas de ligne tftp. Le cas échéant, mettre cette ligne en commentaire et redémarrer inetd :

service openbsd-inetd restart


Fichier /etc/default/tftpd-hpa :

Ajoutez RUN_DAEMON="yes" :

#############################################
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

RUN_DAEMON="yes"

#############################################


Redémarrez tftpd-hpa :

service tftpd-hpa restart


Redémarrez nfs-kernel-server :

service nfs-kernel-server restart


Modification du fichier /etc/resolv.conf

Attention au fichier /etc/resolv.conf

Il est modifié automatiquement au redémarrage de la machine, et contiendra l'adresse IP de votre modem / routeur. Au moment où j'écris cet article, je ne sais pas quel service effectue cette modification automatique.

Vous devez donc restaurer la bonne configuration de votre réseau après un reboot.

Une façon de faire, est de créer un script à exécuter dans /etc/rc.local

Créez par exemple un fichier /home/votre_nom_utilisateur/resolvconfrpi :

#############################################
#!/bin/bash
# Configuration réseau rpinet

echo "search rpinet.lan" > /etc/resolv.conf
echo "nameserver 10.101.1.1 " >> /etc/resolv.conf

#############################################

Rendez-le exécutable :

chmod +x /home/votre_nom_utilisateur/resolvconfrpi


Ajouter le script dans /etc/rc.local :

#############################################
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


# Remplacer /etc/resolv.conf par la bonne configuration

/home/votre_nom_utilisateur/resolvconfrpi

exit 0

#############################################



Installer un serveur DNS

Par défaut, les terminaux LTSP s'appellent "ltsp<xx>". Nous allons installer un serveur DNS pour leur donner un nom plus parlant.

Tapez :

apt-get install bind9


Fichier /etc/bind/named.conf.options :

Ajoutez les adresses des serveurs DNS de votre F.A.I. :

#############################################
options {
directory "/var/cache/bind";

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.  
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.


// exemple pour le F.A.I. Numericable
forwarders {
89.2.0.1;
89.2.0.2;
};

auth-nxdomain no;    # conform to RFC1035
listen-on-v6 { any; };
};

#############################################


Créez un nouveau fichier named.conf pour votre domaine :
(à adapter selon votre configuration)

Exemple : /etc/bind/named.conf.rpinet

#############################################
zone "rpinet.lan" {
type master;
file "/etc/bind/db.rpinet.lan";
forwarders{};
};

zone "1.101.10.in-addr.arpa" {
type master;
file "/etc/bind/db.rpinet.lan.inv";
forwarders{};
};

#############################################


Modifiez ensuite le fichier /etc/bind/named.conf :

#############################################
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

// Inclure le nouveau fichier de configuration
include "/etc/bind/named.conf.rpinet";

#############################################



Créez le fichier /etc/bind/db.rpinet.lan :

#############################################
$TTL    604800
@       IN      SOA     debiansrv1.rpinet.lan. root.rpinet.lan. (
20110802
604800
86400
2419200
604800  )
NS      debiansrv1.rpinet.lan.
debiansrv1   A    10.101.1.1
fuji1        A    10.101.1.20
fuji2        A    10.101.1.21

#############################################



Créez le fichier /etc/bind/db.rpinet.lan.inv :

#############################################
$TTL 604800
@       IN      SOA     debiansrv1.rpinet.lan. root.rpinet.lan. (
20041122
604800
86400
2419200
604800 )
NS      debiansrv1.rpinet.lan.
20    PTR    fuji1.rpinet.lan.
21    PTR    fuji2.rpinet.lan.

#############################################


Vous pouvez vérifier vos fichiers de configuration avec named-checkconf :

Tapez :

named-checkconf /etc/bind/named.conf

named-checkconf
/etc/bind/db.rpinet.lan

named-checkconf
/etc/bind/db.rpinet.lan.inv


Affichez aussi le fichier syslog :

tail /var/log/syslog


Redémarrez le serveur DNS :

service bind9 restart


Messages d'erreurs de configuration BIND

Attention au copier / coller des fichiers de configuration de cet article dans vos fichiers de configuration. Les tabulations et espaces ne seront pas les mêmes, donc vous aurez certainement une erreur au redémarrage du service bind.

Exemple d'erreur dans syslog :

debianltsp named[19417]: /etc/bind/db.rpinet.lan:8: unknown RR type 'debianltsp.rpinet.lan.'
debianltsp named[19417]: zone rpinet.lan/IN: loading from master file /etc/bind/db.rpinet.lan failed: unknown class/type
debianltsp named[19417]: zone rpinet.lan/IN: not loaded due to errors.

Dans le cas ci-dessus, il manquait une tabulation devant la ligne :

NS      debianltsp.rpinet.lan.


Test du serveur LTSP

A ce stade, le serveur LTSP est opérationnel.

Allumez un PC client (dans notre cas, le PC fuji1 ou fuji2), il devrait démarrer sur le serveur LTSP. N'oubliez pas de configurer vos PC clients afin qu'ils démarrent en priorité sur le réseau (voir dans le BIOS des PC clients).


Note : si le PC client met trop de temps à obtenir son adresse IP, ou qu'il bloque au démarrage, vérifiez le fichier /etc/resolv.conf qui doit contenir ceci :

search rpinet.lan
nameserver 10.101.1.1


A l'écran d'accueil LTSP, en bas à droite, devraient figurer :

- le nom DNS que vous avez configuré avec BIND
- l'adresse IP correspondante

ltsp login screen



Modification de l'environnement du client LTSP


Installation du navigateur web Iceweasel (Firefox) et du plugin Flash en applications locales

Il est judicieux d'installer certaines applications gourmandes en ressources en applications locales. Dans ce cas, l'application utilisera les ressources du PC client et non du serveur.

Nous allons installer le navigateur web Iceweasel et le module flash en local apps, car flash peut rapidement devenir gourmand en ressources, et pourrait saturer le serveur dans le cas où 15 postes surfent simultanément sur des sites web flash.


Modifiez d'abord le chemin d'accès par défaut au chroot LTSP vers l'architecture i386 :

Fichier /etc/ltsp/ltsp-chroot.conf :

#############################################
ROOT=/opt/ltsp/i386

#############################################

Puis tapez :

ltsp-chroot


Une fois dans le chroot LTSP :

Modifiez comme suit le fichier /etc/apt/sources.list :

#############################################
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

#############################################


Mettez à jour de la liste des paquets :

apt-get update


Installez iceweasel et le module flash :

apt-get install iceweasel iceweasel-l10n-fr flashplugin-nonfree


Sortez du chroot LTSP :

exit


Activez la prise en charge des applications locales

Fichier : /opt/ltsp/i386/etc/lts.conf

Ajoutez LOCAL_APPS=True et iceweasel dans LOCAL_APPS_MENU_ITEMS :

#############################################
[default]
LTSP_CONFIG=True
LOCAL_APPS=True
LOCAL_APPS_MENU=True
LOCAL_APPS_MENU_ITEMS=iceweasel
#LOCALDEV=False
#CONFIGURE_X=False

#############################################


Il faut maintenant reconstruire l'image du serveur LTSP :

Tapez :

ltsp-update-image --arch i386



Test du navigateur web Iceweasel en local app

Démarrez un PC client LTSP.

Lancez classiquement Iceweasel via le menu Applications -> Internet

Dans la barre de titre devrait être marqué : iceweasel sur [nom_du_poste_client]

Cela signifie qu'Iceweasel est bien exécuté en application locale.

Vous pouvez aussi démarrer des applications locales à partir du Terminal :

ltsp-localapps iceweasel

ltsp iceweasel local app


Activation du son sur le client LTSP

Si vous souhaitez activer le son sur les PC clients LTSP :

Fichier : /opt/ltsp/i386/etc/lts.conf

Ajoutez SOUND=True pour activer le son :

#############################################
[default]
LTSP_CONFIG=True
SOUND=True
VOLUME=100
HEADPHONE_VOLUME=100
PCM_VOLUME=100
LOCAL_APPS=True
LOCAL_APPS_MENU=True
LOCAL_APPS_MENU_ITEMS=iceweasel
#LOCALDEV=False
#CONFIGURE_X=False

#############################################

Vous pouvez aussi modifier le volume par défaut du son des clients (VOLUME=valeur, etc). Pour plus d'informations, reportez-vous au manuel lts.conf, et recherchez SOUND :

man lts.conf


Reconstruisez l'image du serveur LTSP :

ltsp-update-image --arch i386


Faire fonctionner le son avec les applications locales (local apps)

Par défaut, le son d'une application locale est redirigé sur la sortie audio du serveur. Par obtenir le son d'une application locale sur le client, suivre les instructions du fichier : /usr/share/doc/ltsp-server/README.Debian.sound

Créez le fichier : /etc/asound.conf

#############################################
pcm.!default {
@func refer
name { @func concat
strings [ "pcm."
{ @func getenv
vars [ LTSP_ALSA_DEFAULT ]
default "hw:0"
}
]
}
}

ctl.!default {

@func refer
name { @func concat
strings [ "ctl."
{ @func getenv
vars [ LTSP_ALSA_DEFAULT ]
default "hw:0"
}
]
}
}

pcm.pulse { type pulse }

ctl.pulse { type pulse }

#############################################


Cas spécial : audio avec les navigateurs web en local apps

Lorsque vous lancez un navigateur web installé en localapp, vous n'obtiendrez pas de son. Ceci est probablement dû au fait que les navigateurs web n'utilisent pas Pulseaudio, mais ALSA ou autre. Dans ce cas précis, vous devrez suspendre Pulseaudio sur le client lors du lancement du navigateur web en localapp.

Tapez :

ltsp-localapps pasuspender iceweasel


Configurer une imprimante sur le serveur LTSP

Branchez l'imprimante sur le serveur et configurez classiquement via le menu Système -> Administration -> Impression

Une fois configurée, l'imprimante sera disponible pour tous les PC clients.


Configurer une imprimante sur un poste client

Il peut être utile de brancher une imprimante sur un poste client, par exemple dans le cas ou le serveur LTSP est trop loin des clients, et que votre imprimante ne comporte qu'une interface USB.

Dans cet exemple, nous allons brancher une imprimante Laser SAMSUNG ML2010 sur le port USB du PC client FUJI1.

Editez le fichier /opt/ltsp/i386/etc/lts.conf :

Après la section [default], ajoutez une section pour le PC client sur lequel est branché l'imprimante :

#############################################
# Adresse MAC de la carte réseau du PC client sur lequel est branché l'imprimante
[11:11:11:11:11:11]
PRINTER_0_DEVICE=/dev/usb/lp0

#############################################

NOTE : la page d'aide du fichier lts.conf indique :

"Valid device names such as /dev/lp0, or /dev/usblp0 are allowed."

Dans cet exemple, l'imprimante apparait sous /dev/usb/lp0. A adapter selon votre configuration.


Reconstruisez l'image du serveur LTSP :

ltsp-update-image --arch i386


Vous devez maintenant encore créer une imprimante réseau, qui va pointer sur l'adresse IP du poste client sur lequel est branché l'imprimante.

Allez dans le menu Système -> Administration -> Impression

Sélectionnez Ajouter Imprimante

Choisissez "AppSocket/HP Jet Direct"

Dans Hôte, saisissez l'adresse IP du PC client sur lequel est branché l'imprimante (adresse IP du poste FUJI1 dans notre exemple) :

Dans Port, laissez 9100

ltsp hp jetdirect printer


Cliquez sur "Suivant".

Terminez la configuration en choisissant le fabriquant et le modèle de votre imprimante.

ltsp printer choice

Tous les utilisateurs pourront maintenant imprimer sur l'imprimante installée sur ce PC client. Attention : ce PC client doit être allumé !


Configurer un scanner sur un poste client

Toujours dans le fichier /opt/ltsp/i386/etc/lts.conf, dans la section du PC client sur lequel est branché le scanner, indiquez simplement SCANNER=True :

#############################################
# Adresse MAC de la carte réseau du PC client sur lequel est branché le scanner
[22:22:22:22:22:22]
SCANNER=True

#############################################


N'oubliez pas qu'à chaque modification du fichier /opt/ltsp/i386/etc/lts.conf, vous devez reconstruire l'image du serveur LTSP utilisée par les clients :

ltsp-update-image --arch i386


Personnaliser l'écran d'accueil LTSP

L'écran d'accueil des clients LTSP ne vous plait pas ? Vous avec la possibilité de le changer.

Le répertoire ci-dessous contient toutes les images utilisées pour afficher l'écran d'accueil des clients LTSP :

/opt/ltsp/i386/usr/share/ldm/themes/ltsp

logo.png : texte "LTSP.org"
bg.png : image de fond

Vous pouvez par exemple créer vos propres bg.png et logo.png, puis les recopier dans le répertoire ci-dessus.

Après vos modifications, reconstruisez l'image du serveur LTSP :

ltsp-update-image --arch i386


Mis à jour (Lundi, 20 Février 2012 08:42)

 

Articles en rapport