Outils personnels

Installation serveur LTSP sous Ubuntu 10.04 LTS

De wikiGite

Révision datée du 23 juillet 2014 à 13:55 par Pierre (discussion | contributions) (Création de l'image)

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 un 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 (le système sur lequel vont booter les clients), 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


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 -a 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 :

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 PXE

Ipcop : DHCPIpcopltsp.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

Paquets

Paquets à enlever et à supprimer :

sudo apt-get install ubuntu-restricted-extras nfs-common smbfs vlc chromium-browser 7zip numlockx
sudo apt-get install language-pack-gnome-fr-base language-pack-fr-base firefox-locale-fr
sudo apt-get remove tomboy transmission tsclient vino vinagre brasero pitivi


Installer libreoffice
ajouter le ppa

sudo add-apt-repository ppa:libreoffice/ppa

On met à jour:

sudo apt-get update

On installe me « meta-package » LibreOffice:

sudo apt-get install libreoffice libreoffice-common

Ensuite l’intégration pour gnome:

sudo apt-get install libreoffice-gnome

Et pour terminer la langue française:

sudo apt-get install libreoffice-l10n-fr


Vérouiller la session

Automatiquement :

#!/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

Manuellement


application au démarage ajouter les applications :

gconftool-2 --set --type string /desktop/gnome/background/picture_filename "/home/X_public_0*/.wallpaper/wallpaper.jpg"
numlockx #a la première connexion sur le compte X_public_0* lancer terminal et faire : numlockx on

lancer firefox pour créer profil public

systeme menu => préférences => menu principal
desactiver terminal, préférence, administration, ubuntu softwate center

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 semblerai 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ésolut

Sources

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