Prérequis
#########

Configuration du serveur DHCP
-----------------------------
Une machine bootant en PXE reçoit ses paramètres réseau (options) du serveur DHCP.
Deux options sont importantes pour le boot TFTP : l'adresse du serveur TFTP (option 66) et le nom du fichier de boot (option 67).

Vérifier dans le fichier '/etc/dhcp/dhcpd.conf' si les deux directives 'next-server' et 'filename' sont bien configurées.

subnet 10.0.x.0 netmask 255.255.255.0 {
range 10.0.x.150 10.0.x.200;
server-name "vmDnsDhcp.fij.name";
next-server 10.0.x.104;
filename "pxelinux.0";



dom0
####

Pour la création de la vmTftp, prévoir suffisamment d'espace disque (150 GB).  Cette machine contiendra des images système à distribuer sur le réseau.

-# vim /etc/xen-tools/xen-tools.conf
size = 150 GB

Profitez de l'occasion pour commenter le paramètre 'nameserver' (le fichier /etc/resolv.conf de la dom0 sera alors copié dans la vm lors de sa création).


Les protocoles utilisés pour le boot réseau et la distribution des fichiers
---------------------------------------------------------------------------
tftp    69              [udp]
nfs     2049            [udp,tcp]       dépend de (rpc 111 [udp,tcp])
http    80              [tcp]



vmTftp
######

Installation des paquets nécessaires
------------------------------------

-# aptitude update
-# aptitude install vim rsync
-# aptitude install tftpd-hpa lighttpd nfs-kernel-server


Transfert du contenu du dossier reçu ('srv') depuis une machine cliente
-----------------------------------------------------------------------

Utiliser la commande 'rsync' qui gère correctement la copie des liens symboliques.
Depuis la machine cliente :

-$ rsync -av  /cheminversledossier/srv/*  root@10.0.x.104:/srv/

a : archive (récursif et préserve propriétaires, permissions, liens, dates, ...)
v : verbose

Cela prendra quelques minutes, le dossier fait plus de 10 GB.

Modifier (elles doivent correspondre à celle de votre machine vmTftp) les adresses IP indiquées dans les fichers  :
/srv/tftpboot/pxelinux.cfg/menu/3.cfg
/srv/tftpboot/pxelinux.cfg/menu/4.cfg
/srv/tftpboot/pxelinux.cfg/menu/5.cfg
/srv/tftpboot/pxelinux.cfg/menu/6.cfg

Les fichiers contenus dans ce dossier configurent le texte des fenêtres de menus (apparaissant aux clients bootant via PXE et se connectant au serveur tftp) et les commandes associées à chaque entrée de menu ('MENU LABEL').


Configuration du seveur tftpd-hpa
---------------------------------

-# vim /etc/default/tftpd-hpa

Modifier la ligne pour obtenir :
TFTP_DIRECTORY="/srv/tftpboot"

-# /etc/init.d/ttftp-hpa restart

Vérifier par la commande :
-# netstat -ltu

l : les ports en état "listen"
t : tcp
u : udp

Il doit y avoir une ligne ressemblant à :
udp        0      0     *:tftp         *:*


Configurer les exports NFS
--------------------------

-# mkdir /home/partimag
-# vim /etc/exports

Ajouter deux lignes :
/srv/ISOs               10.0.x.0/24(ro,sync,no_subtree_check)
/home/partimag          10.0.x.0/24(rw,no_root_squash,sync,no_subtree_check)

La première : le dossier -en lecture seule- contient les images à distribuer pour les 'Live Boot' de Debian, Ubuntu et Clonezilla.
La seconde : le dossier -en lecture et écriture- servira à y placer les images de systèmes créées par Clonezilla et à ensuite les déployer.

-# /etc/init.d/nfs-kernel-server restart

Pour en vérifier le bon fonctionnement, utiliser la commande 'mount.nfs'.


Configurer le serveur lighttpd
------------------------------

Ce serveur web servira à héberger un miroir d'une archive Debian (installateur Debian utilise http ou ftp pour télécharger ses paquets) ainsi que les squashfs de Gparted et Rescatux.

-# vim /etc/lighttpd/lighttpd.conf

Modifier la ligne afin d'obtenir :
server.document-root        = "/srv/www"

Ajouter deux lignes :
dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"

-# /etc/init.d/lighttpd restart

Pour en vérifier le bon fonctionnement, utiliser un navigateur web.



TEST
####
Démarrer une machine cliente PXE, tester les différents menus et applications.



Exercices
#########
- Cloner votre machine cliente à l'aide de Clonezilla
- Remplacer Clonezilla par la dernière version stable (i686-pae)
- Ajouter un live boot pour une Ubuntu 14.04 (ajout des fichiers, config du menu [6] et commandes associées)