====== PXE ======
* Objet : PXE
* Niveau requis :{{tag>avisé}}
* Commentaires : //Environnement d'exécution préalable au boot//
* Suivi :{{tag>à-tester à-compléter}}
* Création par [[user>smolski]] le 27/05/2010
* Testé par .... le ....
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=136193#p136193 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== EN COURS DE RÉDACTION - NON TESTÉ =====
Voir le forum DF ici :
* http://debian-facile.org/forum/viewtopic.php?id=2629
===== Définition de PXE : =====
**P**re-boot e**X**ecution **E**nvironment. Environnement d'exécution préalable au boot.
===== Préalable =====
L'environnement PXE permet de démarrer un ordinateur en récupérant une image d'un système d'exploitation qui se trouve sur un serveur.
* Cela permet de démarrer un système sur une machine sans disque dur, ni de lecteur de CD/DVD ni de port USB.
* Un serveur de boot PXE permet aussi d'installer un système dans un parc informatique par le réseau.
===== Serveur de boot PXE =====
Le serveur de boot est composé de trois parties:
* Le serveur DHCP qui envoie une adresse IP dynamique au client.
* Le serveur TFTP qui envoie les premiers fichiers de démarrage (gestionnaire d'amorçage et noyau) au client
* Le serveur HTTP qui envoie les systèmes de fichiers racine (ce n'est plus obligatoirement http)
Ces trois serveurs fonctionnent sur une seule machine ou peuvent être repartis sur plusieurs machines. \\
===== Le processus de boot PXE =====
PC client = PC à démarrer par le réseau
Voici les étapes importantes du processus :
- Quand l'ordinateur ''PC client'' essaie de démarrer avec **PXE**, il commence par envoyer une ''demande d'adresse IP'' sur le réseau (DHCP request).
- Le ''serveur DHCP'' lui répond en lui envoyant une ''adresse IP dynamique'' disponible avec d'autres informations (serveur DNS, route par défaut) ainsi que l'adresse du ''serveur TFTP'' nécessaire pour la suite.
- Le ''PC client'' reçoit l'offre d'adresse DHCP et l'accepte. Il se connecte alors au ''serveur TFTP'' et charge les premiers fichiers de démarrage par ''TFTP''.
- Le ''serveur TFTP'' lui envoie les ''fichiers du gestionnaire de démarrage'' (**pxelinux**) ainsi que les fichiers à afficher a l'écran par ''pxelinux''
- Le ''PC client'' affiche les fichiers reçus et __l'utilisateur peut choisir ses options de démarrage__. Le gestionnaire de démarrage charge alors le noyau et le fichier ''initramfs'' par ''TFTP''.
- Le ''serveur TFTP'' envoie le noyau et le fichier ''initramfs'' demandés précédemment.
- Le ''PC client'' démarre le noyau qu'il vient de recevoir et exécute le script de démarrage ''linuxrc'' qui est dans l'''initramfs''.
- Pendant le démarrage du noyau une ''requête DHCP'' est envoyée par le ''PC client'' (option ip=dhcp) pour recevoir une ''adresse IP''. Cette nouvelle demande est nécessaire car le noyau n'a pas connaissance de l'''adresse IP'' précédemment reçue par **pxelinux**.
- Le ''PC client'' se connecte ensuite au ''serveur HTTP'' par l'''adresse IP'' indiquée dans les options de démarrage du noyau fournies par **pxelinux**. Il télécharge les fichier du système choisi par ''HTTP'' sur ce serveur et le place en mémoire vive (RAM). Ce fichier est assez volumineux car il contient tout le système à l'exception du noyau.
- Le PC client monte le fichier système pour pouvoir utiliser le contenu et poursuit le démarrage du système.
- À cette étape le serveur de démarrage n'est plus nécessaire pour le ''PC client''.
===== Installation =====
Sur la machine serveur installer :
aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux
''dhcp3-server'' n'étant pas encore configuré, vous aurez certainement une erreur au démarrage.
===== Configuration =====
==== Serveur tfptd-hpa ====
[[doc:editeurs:vim:vim|Editez le fichier]] ''/etc/default/tftpd-hpa'' et modifier le "no" en "yes" ainsi :
vim /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
Démarrer le serveur tftp-hpa :
/etc/init.d/tftp-hpa start
Vérifiez si le serveur tftp tourne bien.
La commande : \\
netstat -uap | grep tftp
doit renvoyer :
udp 0 0 *:tftp *:* 8308/inetd
Si vous avez une erreur, inutile d'aller plus loin, le ''tftp'' ne tourne pas.
==== pxe ====
Sauvegarde :
cp /etc/pxe.conf /etc/pxe.conf_sav
Editez et modifiez le fichier ''/etc/pxe.conf''. \\
(//Voir la configuration d"un serveur dhcp//) \\
Par exemple :
vim /etc/pxe.conf
which interface to use
interface=eth0
default_address=192.168.0.1
==== dhcpd ====
Sauvegarde :
cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_sav
Editez et modifiez le fichier ''/etc/dhcp3/dhcpd.conf''
vim /etc/dhcp3/dhcpd.conf
//à suivre...//
===== Références =====
* [[http://www.debian.org/releases/stable/i386/ch04s05.html.fr|Préparer les fichiers pour amorcer depuis le réseau avec TFTP]]
* [[https://wiki.debian.org/PXEBootInstall|Installer Debian via PXEBOOT (anglais)]]