Outils personnels

Installation serveur LTSP sous Ubuntu 10.04 LTS : Différence entre versions

De wikiGite

(Sandy bridge graphique tout moche)
 
(46 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
Mise en place d'un serveur ltsp avec des clients lourd. Les applications ne sont pas exécutées sur le serveurs mais sur le client. Le client charge seulement le noyau et le serveur lui envoi les applications en fonction de la demande. Le dhcp ne se trouve pas sur le serveur mais est géré par un IPCop. Les comptes clients sont en local sur le serveur et le home est montée par le réseau sur le client.
 
Mise en place d'un serveur ltsp avec des clients lourd. Les applications ne sont pas exécutées sur le serveurs mais sur le client. Le client charge seulement le noyau et le serveur lui envoi les applications en fonction de la demande. Le dhcp ne se trouve pas sur le serveur mais est géré par un IPCop. Les comptes clients sont en local sur le serveur et le home est montée par le réseau sur le client.
  
== DELL T1600 ==
+
= DELL T1600 =
 
carte réseau gigabyte de la carte mère visible par lpci mais invisible par le noyau. Affichage en 800x600.
 
carte réseau gigabyte de la carte mère visible par lpci mais invisible par le noyau. Affichage en 800x600.
  
=== Charger le module e1000e ===
+
== Charger le module e1000e ==
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
wget http://sourceforge.net/projects/e1000/files/e1000e\ stable/1.9.5/e1000e-1.9.5.tar.gz
 
wget http://sourceforge.net/projects/e1000/files/e1000e\ stable/1.9.5/e1000e-1.9.5.tar.gz
 
tar -xvf e1000e-1.9.5.tar.gz
 
tar -xvf e1000e-1.9.5.tar.gz
Ligne 12 : Ligne 12 :
 
sudo modprobe e1000e
 
sudo modprobe e1000e
 
sudo dhclient eth0 #si ne marche pas rebooter la machine
 
sudo dhclient eth0 #si ne marche pas rebooter la machine
</source>
+
</syntaxhighlight>
  
=== Sandy bridge chipset integré ===
+
== Sandy bridge chipset integré ==
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
sudo add-apt-repository ppa:glasen/intel-driver
 
sudo add-apt-repository ppa:glasen/intel-driver
 
sudo add-apt-repository ppa:kernel-ppa/ppa
 
sudo add-apt-repository ppa:kernel-ppa/ppa
Ligne 21 : Ligne 21 :
 
sudo apt-get upgrade
 
sudo apt-get upgrade
 
sudo apt-get install linux-image-generic-lts-backport-natty linux-headers-generic-lts-backport-natty
 
sudo apt-get install linux-image-generic-lts-backport-natty linux-headers-generic-lts-backport-natty
</source>
+
</syntaxhighlight>
  
== LTPS ==
+
 
=== Configuration des cartes ===
+
= LTSP =
 +
== Configuration des cartes ==
 
Désactiver networkmanager pour la gestion du réseau :  
 
Désactiver networkmanager pour la gestion du réseau :  
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
sudo service network-manager stop
 
sudo service network-manager stop
 
sudo update-rc.d -f network-manager remove
 
sudo update-rc.d -f network-manager remove
 
vim /etc/network/interfaces
 
vim /etc/network/interfaces
</source>
+
</syntaxhighlight>
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
auto lo
 
auto lo
 
iface lo inet loopback
 
iface lo inet loopback
Ligne 43 : Ligne 44 :
 
         netmask 255.255.255.0
 
         netmask 255.255.255.0
 
         network 192.168.2.0
 
         network 192.168.2.0
</source>
+
</syntaxhighlight>
  
 
Relancer /etc/init.d/networking
 
Relancer /etc/init.d/networking
  
 
+
== Installation de ltsp ==
=== Installation de ltsp ===
+
<syntaxhighlight lang="bash" enclose="div">
<source lang="bash">
 
 
sudo apt-get install ltsp-server-standalone
 
sudo apt-get install ltsp-server-standalone
 
sudo apt-get remove dhcp3-server
 
sudo apt-get remove dhcp3-server
</source>
+
</syntaxhighlight>
  
Créer le fichier /var/lib/tftpboot/lts.conf <br/>
+
Créer le fichier /var/lib/tftpboot/ltsp/i386/lts.conf <br/>
 
http://manpages.ubuntu.com/manpages/lucid/man5/lts.conf.5.html
 
http://manpages.ubuntu.com/manpages/lucid/man5/lts.conf.5.html
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
[default]
 
[default]
 
SERVER = 192.168.2.149
 
SERVER = 192.168.2.149
Ligne 67 : Ligne 67 :
 
LDM_LANGUAGE ="fr_FR.UTF-8"
 
LDM_LANGUAGE ="fr_FR.UTF-8"
  
[00:e0:c5:5b:95:25]
+
[00:e0:c5:XX:XX:X1]
LDM_USERNAME = crij_public_01
+
LDM_USERNAME = X_public_01
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
[00:e0:c5:5b:95:29]
+
[00:e0:c5:XX:XX:X2]
LDM_USERNAME = crij_public_02
+
LDM_USERNAME = X_public_02
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
[00:e0:c5:5b:95:67]
+
[00:e0:c5:XX:XX:X3]
LDM_USERNAME = crij_public_03
+
LDM_USERNAME = X_public_03
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
[00:e0:c5:5b:95:7c]
+
[00:e0:c5:XX:XX:X4]
LDM_USERNAME = crij_public_04
+
LDM_USERNAME = X_public_04
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
[00:e0:c5:3b:47:73]
+
[00:e0:c5:XX:XX:X5]
LDM_USERNAME = crij_public_05
+
LDM_USERNAME = X_public_05
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
[00:e0:c5:5b:97:83]
+
[00:e0:c5:XX:XX:X6]
LDM_USERNAME = crij_public_06
+
LDM_USERNAME = X_public_06
LDM_PASSWORD = invite
+
LDM_PASSWORD = XXXXX
  
</source>
+
</syntaxhighlight>
 +
 
 +
Il faudra ajouter les utilisateurs sur le serveur. Leurs dossiers personnels seront ensuite montés en NFS sur les clients légers :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
adduser X_public_01
 +
adduser X_public_02
 +
...
 +
</syntaxhighlight>
  
 
===  Création de l'image ===
 
===  Création de l'image ===
<source lang="bash">
+
LTSP fonctionne en créant une arborescence d'un système de fichier linux classique, stocké dans le dossier /opt/ltsp/i386/. Il se base ensuite sur ce dernier pour créer une image, au format .img, que les clients légers utiliseront pour booter via PXE :
sudo ltsp-build-client --arch i386 --locale fr_FR --fat-client  
+
<syntaxhighlight lang="bash" enclose="div">
sudo chroot /opt/ltsp/i386
+
sudo ltsp-build-client --arch i386 --locale fr_FR --fat-client
</source>
+
</syntaxhighlight>
  
avant d'installer quoi que ce soit :
+
=== Le chroot ===
<source lang="bash">
+
Pour paramétrer l'image, utiliser la commande "chroot" :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
sudo chroot /opt/ltsp/i386
 +
</syntaxhighlight>
 +
 
 +
Avant d'effectuer des modifications dans l'image, toujours monter /proc et /sys :
 +
<syntaxhighlight lang="bash" enclose="div">
 
mount -t proc proc /proc
 
mount -t proc proc /proc
 
mount -t sysfs sys /sys
 
mount -t sysfs sys /sys
</source>
+
</syntaxhighlight>
  
 +
Effectuez ensuite les modifications comme sur un système classique (Installer des paquets, paramétrer les services,...)
  
 
En quittant :
 
En quittant :
<source lang="bash">
+
<syntaxhighlight lang="bash" enclose="div">
 
exit
 
exit
 
sudo umount /opt/ltsp/i386/proc
 
sudo umount /opt/ltsp/i386/proc
 
sudo umount /opt/ltsp/i386/sys
 
sudo umount /opt/ltsp/i386/sys
sudo ltsp-update-image -a i386
+
</syntaxhighlight>
 +
 
 +
=== Mise a jour de l'image ===
 +
Après avoir effectuer les modifications dans le chroot, il faut mettre à jour l'image.
 +
 
 +
<syntaxhighlight lang="bash" enclose="div">
 +
sudo ltsp-update-image i386
 
sudo ltsp-update-kernels #si mise a jour du kernel
 
sudo ltsp-update-kernels #si mise a jour du kernel
</source>
+
</syntaxhighlight>
 +
 
 +
== Configuration de l'image ==
 +
=== Echange de clé ssh ===
 +
Dans le chroot :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
apt-get install openssh-server
 +
exit
 +
</syntaxhighlight>
  
=== Configuration PXE ===
+
Sur le compte qui administrera les clients, créer un coupe clé privée/clé publique demo.priv/demo.pub sans mot de passe et le mettre dans le chroot. Cela permettra notamment d'utiliser les scripts d'allumage/extinction des postes :
'''Ipcop :'''
+
<syntaxhighlight lang="bash" enclose="div">
DHCP[[Fichier:ipcoppxe.png]]
+
ssh-keygen -t rsa
 +
cat ~/.ssh/id_rsa.pub >> $CHROOT/root/.ssh/authorized_keys
 +
</syntaxhighlight>
 +
 
 +
Cela permet de pouvoir se connecter en ssh, sur le compte root, sur un client démarré. Principalement utilisé pour debugger car les utilisateurs publics ont logiquement des droits restreints :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
ssh root@[ip du client]
 +
</syntaxhighlight>
 +
 
 +
=== Configuration DHCP / PXE ===
 +
Il faut maintenant paramétrer le dhcp, pour qu'il dirige les clients vers le serveur au boot.
 +
Exemple pour un dhcp linux :
 +
 
 +
Dans dhcpd.conf
 +
<syntaxhighlight lang="bash" enclose="div">
 +
 
 +
# Sous-reseau IP (range et options propres au subnet)
 +
subnet 192.168.37.0 netmask 255.255.255.0 {
 +
        option domain-name-servers 192.168.37.1,192.168.1.254;
 +
        option broadcast-address 192.168.37.255;
 +
        option routers 192.168.37.254;
 +
        default-lease-time 86400; # 1 jour
 +
        max-lease-time 604800; # 7 jours
 +
        pool {range 192.168.37.100 192.168.37.200;}
 +
        if substring( option  vendor-class-identifier, 0, 9 ) = "PXEClient" {
 +
                next-server 192.168.37.135;
 +
                option root-path "/opt/ltsp/i386";
 +
                filename "ltsp/i386/pxelinux.0";
 +
        }
 +
}
 +
</syntaxhighlight>
 +
On indique le serveur PXE avec le paramètre next-server, et le chemin de l'image avec "root-path" (qui correspond au dossier chroot) et "filename".
 +
 
 +
 
 +
Exemple avec Ipcop :[[Fichier:ipcopltsp.png]]
  
 
'''DD-wrt :'''<br/>
 
'''DD-wrt :'''<br/>
 
Dans la section service<br/>
 
Dans la section service<br/>
 
DNSmasq:<br/>
 
DNSmasq:<br/>
<source lang="bash">dhcp-boot=ltsp/i386/pxelinux.0,,192.168.2.149</source>
+
<syntaxhighlight lang="bash" enclose="div">
 +
dhcp-boot=ltsp/i386/pxelinux.0,,192.168.2.149
 +
</syntaxhighlight>
 +
 
 +
=== Éteindre les machines à distance ===
 +
 
 +
<syntaxhighlight lang="bash" enclose="div">
 +
#!/bin/bash
 +
Nbr=1
 +
for i in `seq 111 116` ; do
 +
echo "Extinction de X_Public_0$Nbr"
 +
ssh -l -f -o StrictHostKeyChecking=no root@192.168.2.$i "halt;exit"
 +
Nbr=`expr $Nbr + 1`
 +
done
 +
</syntaxhighlight>
 +
 
 +
=== Lancer des scripts au démarrage des clients ===
 +
Placer votre script dans le chroot
 +
<syntaxhighlight lang="bash" enclose="div">
 +
sudo chroot /opt/ltsp/i386
 +
vim /etc/init.d/rclocal01.sh #création d'un fichier rclocal01.sh dans lequel je colle un script a lancer au démarrage
 +
exit
 +
</syntaxhighlight>
 +
 
 +
Indiquer ensuite au serveur que l'on souhaite lancer se script au démarrage du client :
 +
Dans /var/lib/tftpboot/i386/lts.conf ajouter la ligne :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
RCFILE_01=/etc/init.d/rclocal01.sh
 +
</syntaxhighlight>
 +
 
 +
=== Verrouiller la session ===
 +
 
 +
<syntaxhighlight lang="bash" enclose="div">
 +
#!/bin/bash
 +
#suppression des répertoires inutiles
 +
rmdir ~/Documents
 +
rm ~/examples.desktop
 +
rmdir ~/Images
 +
rmdir ~/Modèles
 +
rmdir ~/Musique
 +
rmdir ~/Public
 +
rmdir ~/Téléchargements
 +
rmdir ~/Vidéos
 +
 
 +
 
 +
#modification de gconf
 +
gconftool-2 --set --type string /apps/metacity/general/button_layout ":minimize,maximize,close" #déplacer les boutons des fenêtre vers la droite
 +
gconftool-2 --set --type bool /apps/panel/global/locked_down true #verrouiller le tableau de bord
 +
gconftool-2 --set --type string /apps/metacity/global_keybindings/panel_run_dialog "disabled" #desactiver alt + F2
 +
gconftool-2 --set --type string /apps/metacity/global_keybindings/run_command_terminal "disabled" #desactiver raccourci clavier du terminal
 +
gconftool-2 --set --type int /apps/metacity/general/num_workspaces 1 #limiter les espaces de travail à 1
 +
gconftool-2 --set --type bool /apps/gnome-screensaver/lock_enabled false #desactiver le verrouillage de l'ecran
 +
gconftool-2 --set --type bool /apps/gnome-screensaver/idle_activation_enabled false
 +
gconftool-2 --set --type bool /desktop/gnome/interface/menus_have_icons true #icones dans les menus
 +
gconftool-2 --set --type bool /desktop/gnome/interface/buttons_have_icons true
 +
gconftool-2 --set --type bool /desktop/gnome/lockdown/disable_lock_screen true
 +
gconftool-2 --set --type string /desktop/gnome/background/picture_filename "/home/$USER/.wallpaper/wallpaper.jpg"
 +
gconftool-2 --set --type int /apps/gnome-power-manager/timeout/sleep_display_ac 0
 +
 
 +
</syntaxhighlight>
 +
 
 +
=== Acceder au Bureau des clients léger depuis le compte admin ===
 +
Executer le script depuis un compte administrateur de la Machine
 +
<syntaxhighlight lang="bash" enclose="div">
 +
#!/bin/bash
 +
 
 +
for i in `seq -w 01 10`; do
 +
sudo chmod 777 /home/X_public_$i/Bureau
 +
sudo ln -s /home/X_public_$i/Bureau /home/ADMIN/Bureau/Bureau\ clients/X_public_$i
 +
sudo mkdir /home/X_public_$i/.wallpaper
 +
sudo rm /home/X_public_$i/Bureau/Bureau
 +
done
 +
 
 +
</syntaxhighlight>
 +
== Problèmes ==
 +
 
 +
=== Le client léger charge le noyaux mais refuse de booter ===
 +
Dans les log de pfsense ceci :
 +
dhcp: Dropped DHCPv4 packet with zero-length client-id
 +
 
 +
et en boucle lors du démarrage  du client léger (f2 pour cacher plymouth)
 +
<syntaxhighlight lang="bash" enclose="div">
 +
udhcpc (v0.9.9-pre) started
 +
Sending discover...
 +
Sending discover...
 +
Sending discover...
 +
No lease, failing.
 +
sleepnow
 +
udhcpc (v0.9.9-pre) started
 +
Sending discover...
 +
Sending discover...
 +
...
 +
</syntaxhighlight>
 +
 
 +
Il semblerait que ce soit un bug de la version de ltsp de ubuntu 10.04 https://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/505916. Pour le résoudre :
 +
 +
* Dans /opt/ltsp/i386/usr/share/initramfs-tools/scripts/init-premount/udhcp, changer la ligne suivante:
 +
<syntaxhighlight lang="bash" enclose="div">
 +
        if udhcpc -n -c "$clientid" -s /tmp/dhcp-script.sh -i $i $hostname_param $ip_param >/dev/null 2>&1; then
 +
</syntaxhighlight>
 +
par
 +
<syntaxhighlight lang="bash" enclose="div">
 +
        if udhcpc -n -C -s /tmp/dhcp-script.sh -i $i $hostname_param $ip_param >/dev/null 2>&1; then
 +
</syntaxhighlight>
 +
* puis recharger la séquence de démarrage et reconstruire le noyau :
 +
<syntaxhighlight lang="bash" enclose="div">
 +
sudo chroot /opt/ltsp/i386 update-initramfs -u && sudo ltsp-update-kernels
 +
</syntaxhighlight>
 +
 
 +
Relancer les clients léger le problème sera résolu
 +
 
 +
= Sources =
 +
https://help.ubuntu.com/community/UbuntuLTSP <br/>
 +
http://manpages.ubuntu.com/manpages/lucid/man5/lts.conf.5.html

Version actuelle datée du 20 mars 2015 à 17:02

Mise en place d'un serveur ltsp avec des clients lourd. Les applications ne sont pas exécutées sur le serveurs mais sur le client. Le client charge seulement le noyau et le serveur lui envoi les applications en fonction de la demande. Le dhcp ne se trouve pas sur le serveur mais est géré par un IPCop. Les comptes clients sont en local sur le serveur et le home est montée par le réseau sur le client.

DELL T1600

carte réseau gigabyte de la carte mère visible par lpci mais invisible par le noyau. Affichage en 800x600.

Charger le module e1000e

wget http://sourceforge.net/projects/e1000/files/e1000e\ stable/1.9.5/e1000e-1.9.5.tar.gz
tar -xvf e1000e-1.9.5.tar.gz
cd e1000e-1.9.5/src/
sudo make install
sudo modprobe e1000e
sudo dhclient eth0 #si ne marche pas rebooter la machine

Sandy bridge chipset integré

sudo add-apt-repository ppa:glasen/intel-driver
sudo add-apt-repository ppa:kernel-ppa/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install linux-image-generic-lts-backport-natty linux-headers-generic-lts-backport-natty


LTSP

Configuration des cartes

Désactiver networkmanager pour la gestion du réseau :

sudo service network-manager stop
sudo update-rc.d -f network-manager remove
vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address 192.168.2.149
        netmask 255.255.255.0
        network 192.168.2.0

Relancer /etc/init.d/networking

Installation de ltsp

sudo apt-get install ltsp-server-standalone
sudo apt-get remove dhcp3-server

Créer le fichier /var/lib/tftpboot/ltsp/i386/lts.conf
http://manpages.ubuntu.com/manpages/lucid/man5/lts.conf.5.html

[default]
	SERVER = 192.168.2.149
	LOCALDEV = True
	SOUND = True
	SYSLOG_HOST = server
	XKBLAYOUT = fr
	LDM_AUTOLOGIN = True
#	LDM_GUESTLOGIN = True
	LDM_LANGUAGE ="fr_FR.UTF-8"

[00:e0:c5:XX:XX:X1]
	LDM_USERNAME = X_public_01
	LDM_PASSWORD = XXXXX

[00:e0:c5:XX:XX:X2]
	LDM_USERNAME = X_public_02
	LDM_PASSWORD = XXXXX

[00:e0:c5:XX:XX:X3]
	LDM_USERNAME = X_public_03
	LDM_PASSWORD = XXXXX

[00:e0:c5:XX:XX:X4]
	LDM_USERNAME = X_public_04
	LDM_PASSWORD = XXXXX

[00:e0:c5:XX:XX:X5]
	LDM_USERNAME = X_public_05
	LDM_PASSWORD = XXXXX

[00:e0:c5:XX:XX:X6]
	LDM_USERNAME = X_public_06
	LDM_PASSWORD = XXXXX

Il faudra ajouter les utilisateurs sur le serveur. Leurs dossiers personnels seront ensuite montés en NFS sur les clients légers :

 adduser X_public_01
 adduser X_public_02
 ...

Création de l'image

LTSP fonctionne en créant une arborescence d'un système de fichier linux classique, stocké dans le dossier /opt/ltsp/i386/. Il se base ensuite sur ce dernier pour créer une image, au format .img, que les clients légers utiliseront pour booter via PXE :

sudo ltsp-build-client --arch i386 --locale fr_FR --fat-client

Le chroot

Pour paramétrer l'image, utiliser la commande "chroot" :

sudo chroot /opt/ltsp/i386

Avant d'effectuer des modifications dans l'image, toujours monter /proc et /sys :

mount -t proc proc /proc
mount -t sysfs sys /sys

Effectuez ensuite les modifications comme sur un système classique (Installer des paquets, paramétrer les services,...)

En quittant :

exit
sudo umount /opt/ltsp/i386/proc
sudo umount /opt/ltsp/i386/sys

Mise a jour de l'image

Après avoir effectuer les modifications dans le chroot, il faut mettre à jour l'image.

sudo ltsp-update-image i386
sudo ltsp-update-kernels #si mise a jour du kernel

Configuration de l'image

Echange de clé ssh

Dans le chroot :

apt-get install openssh-server
exit

Sur le compte qui administrera les clients, créer un coupe clé privée/clé publique demo.priv/demo.pub sans mot de passe et le mettre dans le chroot. Cela permettra notamment d'utiliser les scripts d'allumage/extinction des postes :

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> $CHROOT/root/.ssh/authorized_keys

Cela permet de pouvoir se connecter en ssh, sur le compte root, sur un client démarré. Principalement utilisé pour debugger car les utilisateurs publics ont logiquement des droits restreints :

ssh root@[ip du client]

Configuration DHCP / PXE

Il faut maintenant paramétrer le dhcp, pour qu'il dirige les clients vers le serveur au boot. Exemple pour un dhcp linux :

Dans dhcpd.conf

# Sous-reseau IP (range et options propres au subnet)
subnet 192.168.37.0 netmask 255.255.255.0 {
        option domain-name-servers 192.168.37.1,192.168.1.254;
        option broadcast-address 192.168.37.255;
        option routers 192.168.37.254;
        default-lease-time 86400; # 1 jour
        max-lease-time 604800; # 7 jours
        pool {range 192.168.37.100 192.168.37.200;}
        if substring( option   vendor-class-identifier, 0, 9 ) = "PXEClient" {
                next-server 192.168.37.135;
                option root-path "/opt/ltsp/i386";
                filename "ltsp/i386/pxelinux.0";
        }
}

On indique le serveur PXE avec le paramètre next-server, et le chemin de l'image avec "root-path" (qui correspond au dossier chroot) et "filename".


Exemple avec Ipcop :Ipcopltsp.png

DD-wrt :
Dans la section service
DNSmasq:

dhcp-boot=ltsp/i386/pxelinux.0,,192.168.2.149

Éteindre les machines à distance

#!/bin/bash
Nbr=1
for i in `seq 111 116` ; do
echo "Extinction de X_Public_0$Nbr"
ssh -l -f -o StrictHostKeyChecking=no root@192.168.2.$i "halt;exit"
Nbr=`expr $Nbr + 1`
done

Lancer des scripts au démarrage des clients

Placer votre script dans le chroot

sudo chroot /opt/ltsp/i386
vim /etc/init.d/rclocal01.sh #création d'un fichier rclocal01.sh dans lequel je colle un script a lancer au démarrage
exit

Indiquer ensuite au serveur que l'on souhaite lancer se script au démarrage du client : Dans /var/lib/tftpboot/i386/lts.conf ajouter la ligne :

RCFILE_01=/etc/init.d/rclocal01.sh

Verrouiller la session

#!/bin/bash
#suppression des répertoires inutiles
rmdir ~/Documents
rm ~/examples.desktop
rmdir ~/Images
rmdir ~/Modèles
rmdir ~/Musique
rmdir ~/Public
rmdir ~/Téléchargements
rmdir ~/Vidéos


#modification de gconf
gconftool-2 --set --type string /apps/metacity/general/button_layout ":minimize,maximize,close" #déplacer les boutons des fenêtre vers la droite
gconftool-2 --set --type bool /apps/panel/global/locked_down true #verrouiller le tableau de bord
gconftool-2 --set --type string /apps/metacity/global_keybindings/panel_run_dialog "disabled" #desactiver alt + F2
gconftool-2 --set --type string /apps/metacity/global_keybindings/run_command_terminal "disabled" #desactiver raccourci clavier du terminal
gconftool-2 --set --type int /apps/metacity/general/num_workspaces 1 #limiter les espaces de travail à 1
gconftool-2 --set --type bool /apps/gnome-screensaver/lock_enabled false #desactiver le verrouillage de l'ecran
gconftool-2 --set --type bool /apps/gnome-screensaver/idle_activation_enabled false
gconftool-2 --set --type bool /desktop/gnome/interface/menus_have_icons true #icones dans les menus
gconftool-2 --set --type bool /desktop/gnome/interface/buttons_have_icons true
gconftool-2 --set --type bool /desktop/gnome/lockdown/disable_lock_screen true
gconftool-2 --set --type string /desktop/gnome/background/picture_filename "/home/$USER/.wallpaper/wallpaper.jpg"
gconftool-2 --set --type int /apps/gnome-power-manager/timeout/sleep_display_ac 0

Acceder au Bureau des clients léger depuis le compte admin

Executer le script depuis un compte administrateur de la Machine

#!/bin/bash

for i in `seq -w 01 10`; do
sudo chmod 777 /home/X_public_$i/Bureau
sudo ln -s /home/X_public_$i/Bureau /home/ADMIN/Bureau/Bureau\ clients/X_public_$i
sudo mkdir /home/X_public_$i/.wallpaper
sudo rm /home/X_public_$i/Bureau/Bureau
done

Problèmes

Le client léger charge le noyaux mais refuse de booter

Dans les log de pfsense ceci :

dhcp: Dropped DHCPv4 packet with zero-length client-id

et en boucle lors du démarrage du client léger (f2 pour cacher plymouth)

 udhcpc (v0.9.9-pre) started
 Sending discover...
 Sending discover...
 Sending discover...
 No lease, failing.
 sleepnow
 udhcpc (v0.9.9-pre) started
 Sending discover...
 Sending discover...
 ...

Il semblerait que ce soit un bug de la version de ltsp de ubuntu 10.04 https://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/505916. Pour le résoudre :

  • Dans /opt/ltsp/i386/usr/share/initramfs-tools/scripts/init-premount/udhcp, changer la ligne suivante:
        if udhcpc -n -c "$clientid" -s /tmp/dhcp-script.sh -i $i $hostname_param $ip_param >/dev/null 2>&1; then

par

        if udhcpc -n -C -s /tmp/dhcp-script.sh -i $i $hostname_param $ip_param >/dev/null 2>&1; then
  • puis recharger la séquence de démarrage et reconstruire le noyau :
sudo chroot /opt/ltsp/i386 update-initramfs -u && sudo ltsp-update-kernels

Relancer les clients léger le problème sera résolu

Sources

https://help.ubuntu.com/community/UbuntuLTSP
http://manpages.ubuntu.com/manpages/lucid/man5/lts.conf.5.html