Linux Terminal Server Project (LTSP)
Vous trouverez mon expérience personnelle lors de la tentative plus ou moins réussie de l’utilisation LTSP. J’ai effectivement réussi l’installation et la configuration sommaire pour l’installation de trois clients. Un Asus N73, Lenovo T500 et un RaspberryPI.
Tous ont bien démarré en PXE sur mon réseau LTSP, mais je n’ai jamais réussi à monter une clef USB sur mon client afin qu’elle apparaisse sur le bureau. Au mieux, le montage s’effectuait dans le répertoire /tmp de façon qui me semble un peu aléatoire.
Je partage ici ce que j’ai fait si cela peut aider quelqu’un.
Pour voir si l’installation par défaut de LTSP est ok, il faut juste allumer une machine ( déjà configuré pour démarrer sur le PXE) et vous verrez le logo de LTSP à l’écran. Ci-dessous, quelques explications à propos de tout ce qu’on voit sur l’écran du poste de travail :
La machine envoie un broadcast pour trouver le serveur DHCP
Le serveur DHCP répond en envoyant des informations réseau ( incluant l’adresse IP prise dans la plage d’adresses disponibles, un masque de sous-réseaux, etc…) et le nom du fichier à charger (dans /etc/dhcpd.conf vous pouvez voir que ce fichier est /tftpboot/lts/pxe/pxelinux.0).
La station de travail initialise son réseau à l’aide des informations reçues, charge le fichier en utilisant tftp et l’exécute. Ce fichier regarde dans /tftpboot/lts/pxe/pxelinux.cfg/ si un fichier de configuration dont le nom correspond à l’adresse MAC ou tout ou partie de la représentation hexadécimale de l’adresse IP de la machine, sinon, il utilise le fichier de configuration par défaut (/tftpboot/lts/pxe/pxelinux.cfg/default)
Le fichier de configuration par défaut indique à pxelinux.0 de charger le noyau (vmlinuz.ltsp) et un « ramdisk » (disque virtuel) (initrd.ltsp). Ils sont stockés sous /tftpboot/lts/pxe/. Le noyau est compilé avec des options spécifiques requises par LTSP telles que devfs. Le « ramdisk » est un système de fichier ext2 compressé contenant essentiellement quelques modules de cartes réseau. Un fichier texte avec les ID PCI des cartes réseau et le module correspondant à charger par le noyau est aussi présent dans ce disque virtuel.
Le système recherche une carte réseau, charge le module correspondant, traite les requêtes DHCP, monte quelques répertoires en utilisant NFS (voir /etc/exports sur le serveur), crée un fichier de configuration X en utilisant les paramètres donnés dans /opt/ltsp/i386/etc/lts.conf ou sinon, les paramètres par défaut. (Souris 3 buttons, clavier US, résolution d’écran de 1024×768, qualité de couleur de 16), démarre X et établie une connexion XDMCP avec le serveur.
Installation de LTSP
Pour ma part j’ai choisi d’installer SolydX 64bits dans une machine virtuelle Virtualbox sur une machine physique sur laquelle j’ai préalablement installé une seconde carte réseau. J’obtiens donc
- eth0 sur l’adresse ipv4 192.168.0.12 sur mon réseau local
- eth1 sur l’adresse ipv4 192.168.1.12 sur mon réseau LTSP.
Voici mon fichier /etc/network/interfaces de ma machine physique:
# 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
# The primary network interface #auto eth0 #iface eth0 inet dhcp
# The primary network interface auto eth0 iface eth0 inet static address 192.168.0.12 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 dns-search reseau.maison dns-nameservers 192.168.0.10 192.168.0.12
# The LTSP network interface auto eth1 iface eth1 inet static address 192.168.1.12 netmask 255.255.255.0
Installer SolydX en machine virtuelle et poursuivre avec ce qui suit.
Dans virtualBox configurer deux cartes réseaux:
- eth0 en pont vers eth0 (physique)
- eth1 en pont vers eth1 (physique)
Accéder au Shell super utilisateur:
su
Désactiver Network Manager
Tapez :
service network-manager stop
update-rc.d -f network-manager remove
nano /etc/NetworkManager/NetworkManager.conf
[ifupdown]
managed=true
Configurer les 2 cartes réseau
Tapez :
ifdown eth0
ifdown eth1
Il faut maintenant configurer l’adresse ipv4 statique de notre machine virtuelle (j’ai utilisé 192.168.0.11 pour le réseau local et 192.168.1.1 pour le réseau LTSP)
nano /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
# The primary network interface #allow-hotplug eth0 auto eth0 iface eth0 inet static address 192.168.0.11 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.1 dns-nameservers 192.168.0.10 192.168.0.12 dns-search reseau.maison
# Interface reseau local # /etc/ltsp/nat : regles iptables pour acces a Internet des postes clients a partir du reseau local
# The ltsp network interface auto eth1 iface eth1 inet static pre-up ip addr del 192.168.1.1/24 dev eth1 2> /dev/null || true address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 #dns-nameservers 192.168.0.10 192.168.0.12 #dns-search reseau.maison up iptables-restore < /etc/ltsp-nat
nano /etc/ltsp-nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sh -c 'iptables-save > /etc/ltsp-nat'
ifup eth0
ifup eth1
mii-tool
ifconfig
/etc/init.d/networking restar
t
apt-get install ltsp-server-standalone xrestop
nano /etc/export
s
#############################################
/opt/ltsp *(ro,no_root_squash,async)
#############################################
nano /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
nano /etc/inetd.conf
# Commenter la ligne tftpd:
#tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
nano /etc/default/tftpd-hpa
#/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émarrer les services altérés:
service tftpd-hpa restart
service nfs-kernel-server restart
service openbsd-inetd restart
Configurer le serveur DHCP
Fichier /etc/default/isc-dhcp-server :
Configurez le port d’écoute pour le réseau local :
nano /etc/default/isc-dhcp-server
#############################################
# 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 :
nano /etc/dhcp/dhcpd.conf
#############################################
# Configuration LTSP
include "/etc/ltsp/dhcpd.conf";
#############################################
nano /etc/ltsp/dhcpd.conf
# Default LTSP dhcpd.conf config file.
#
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.13 192.168.1.250;
# domain-name et domain-name-servers uniquement si serveur DNS
# option domain-name "reseau.maison";
# option domain-name-servers 192.168.0.10;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
next-server 192.168.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 n73-ltsp {
next-server 192.168.1.1;
filename "/ltsp/i386/pxelinux.0";
hardware ethernet c8:60:00:b3:30:12;
fixed-address 192.168.1.105;
}
host t500-ltsp {
next-server 192.168.1.1;
filename "/ltsp/i386/pxelinux.0";
hardware ethernet 00:22:68:18:cf:3d;
fixed-address 192.168.1.107;
}
host rbpi-ltsp {
hardware ethernet b8:27:eb:8f:f6:bc;
fixed-address 192.168.1.106;
}
}
Redémarrez le serveur DHCP :
service isc-dhcp-server restart
Préparation de l’environnement client:
Pour trouver le nom de la version:
cat /etc/*-release
cd /usr/share/ltsp/plugins/ltsp-build-client
ln -s Debian SolydXK
ln -s Debian-functions SolydXK-functions
rm -r /opt/ltsp/i386
ltsp-build-client --arch i386
nano /etc/ssh/ssh_host_rsa_key.pub
Copier la clé dans le presse-papier ctrl-C
nano /opt/ltsp/i386/etc/ssh/ssh_known_hosts
Insérer la clé du serveur ltsp
nano /opt/ltsp/i386/etc/lts.conf
# This is the default lts.conf file for ltsp 5. For more information about # valid options please see lts.conf(5) man page, available in the ltsp-docs # package. # # Note that things like sound and local device support are auto-enabled if the # corresponding packages are installed, there is no need to manually set these # options anymore.
[default] LTSP_CONFIG=True SYSLOG_HOST=192.168.1.1 DNS_SERVER="192.168.0.10 192.168.0.12" SEARCH_DOMAIN="reseau.maison" SOUND=True #NBD_SWAP=False #SCREEN_02=shell #SCREEN_07=ldm LDM_DIRECTX=yes #LDM_SERVER="interactif1.math interactif2.math" X_NUMLOCK=True
[c8:60:00:b3:30:12] HOSTNAME="n73-ltsp" USE_LOCAL_SWAP=True #LOCALDEV=True #LOCAL_APPS=True #LOCAL_APPS_MENU=True #LOCAL_APPS_MENU_ITEMS=iceweasel VOLUME=30 #CONFIGURE_X=True #XSERVER=auto #X_COLOR_DEPTH=16 #XRANDR_DISABLE=True #X_MODE_0=1920x1200 #pour voir les differents modele:/usr/share/X11/xkb/rules/base.lst XKBMODEL="pc105" XkbSymbols ="fr_CA(pc105)" XKBLAYOUT="Français (Canada)"
[00:22:68:18:cf:3d] HOSTNAME="t500-ltsp" USE_LOCAL_SWAP=True LOCALDEV=True LOCAL_APPS=True LOCAL_APPS_MENU=True LOCAL_APPS_MENU_ITEMS=iceweasel VOLUME=30 #CONFIGURE_X=True #XSERVER=auto #X_COLOR_DEPTH=16 #XRANDR_DISABLE=True #X_MODE_0=1600x1050 #pour voir les differents modele:/usr/share/X11/xkb/rules/base.lst XKBMODEL="pc105" XkbSymbols ="fr_CA(pc105)" XKBLAYOUT="Français (Canada)"
[b8:27:eb:8f:f6:bc] HOSTNAME="rbpi-ltsp" LOCALDEV=True VOLUME=20 XKBMODEL="pc105" XkbSymbols="fr_CA(pc105)" XKBLAYOUT="fr_CA"
nano /etc/ltsp/ltsp-chroot.conf
#############################################
ROOT=/opt/ltsp/i386
#############################################
#Dans le chroot maintenant pour l’ajout d’applications locale au client léger
ltsp-chroot
apt-get install firmware-linux-nonfree
apt-get install nano
J’ai essayé d’ajouter les dépôts Solydx au client léger afin d’installer Firefox en local. Mais bien que j’ai réussi à ajouter les dépôts, l’installation de Firefox ne fonctionne pas. Je laisse donc l’information ici, mais je ne le conseille pas
Ajouter les clefs gpg:
gpg --recv-key BCA63C3C
gpg --export --armor --output /tmp/gpg_solydx.txt BCA63C3C | apt-key add /tmp/gpg_solydx.txt
gpg --recv-key 1F41B907
gpg --export --armor --output /tmp/gpg_solydx.txt 1F41B907 | apt-key add /tmp/gpg_solydx.txt
Modifier les dépôts:
nano /etc/apt/sources.list
deb http://packages.solydxk.com/production/ solydxk main upstream import
deb http://community.solydxk.com/production/ solydxk main
deb http://debian.solydxk.com/production testing main contrib non-free
deb http://debian.solydxk.com/production/multimedia testing main non-free
deb http://debian.solydxk.com/security testing/updates main contrib non-free
apt-get install solydxk-keyring
apt-get update
apt-get install firefox firefox-l10n-fr solydxk-flashplugin-11
J’ai plutôt installé iceweasel en local sur le client:
apt-get install iceweasel iceweasel-l10n-fr flashplugin-nonfree
Ceci ne fonctionne pas sous Debian puisque LTFS fonctionne en NFS:
ltsp-update-image /opt/ltsp/i386