# Serveur PXE (TFTP & ISC-DHCP)

<span class="animate-in fade-in-25 duration-700">Avant de</span><span class="animate-in fade-in-25 duration-700"> suivre ce tuto</span><span class="animate-in fade-in-25 duration-700">riel, vous deve</span><span class="animate-in fade-in-25 duration-700">z disposer d'un </span><span class="animate-in fade-in-25 duration-700">**serveur ISC-DHCP fonctionnel**</span><span class="animate-in fade-in-25 duration-700"> sur</span><span class="animate-in fade-in-25 duration-700"> le même serv</span><span class="animate-in fade-in-25 duration-700">eur où vous souh</span><span class="animate-in fade-in-25 duration-700">aitez installer le</span><span class="animate-in fade-in-25 duration-700"> PXE. Assurez-vous égal</span><span class="animate-in fade-in-25 duration-700">ement d'avoir effe</span><span class="animate-in fade-in-25 duration-700">ctué une mise</span><span class="animate-in fade-in-25 duration-700"> à jour du syst</span><span class="animate-in fade-in-25 duration-700">ème avec la comm</span><span class="animate-in fade-in-25 duration-700">ande suivante :</span><span class="animate-in fade-in-25 duration-700">**`sudo apt update && sudo apt upgrade`**</span>

## **Installation des utilitaires nécessaires**

<span class="animate-in fade-in-25 duration-700">Installez les</span><span class="animate-in fade-in-25 duration-700"> utilitaires Linu</span><span class="animate-in fade-in-25 duration-700">x nécessaires ains</span><span class="animate-in fade-in-25 duration-700">i qu'un serveur T</span><span class="animate-in fade-in-25 duration-700">FTP avec la comm</span><span class="animate-in fade-in-25 duration-700">ande suivante :</span><span class="animate-in fade-in-25 duration-700">**`sudo apt install syslinux-common syslinux-efi tftpd-hpa`**</span>

## **Création du répertoire de configuration**

<span class="animate-in fade-in-25 duration-700">Créez un</span><span class="animate-in fade-in-25 duration-700"> répertoire pour</span><span class="animate-in fade-in-25 duration-700"> stocker les fich</span><span class="animate-in fade-in-25 duration-700">iers de configuration :</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">`sudo mkdir /tftpboot`</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">Accédez au</span><span class="animate-in fade-in-25 duration-700"> répertoire </span><span class="animate-in fade-in-25 duration-700">`/usr/lib/syslinux/modules/efi64/`</span><span class="animate-in fade-in-25 duration-700"> et</span><span class="animate-in fade-in-25 duration-700"> copiez les fich</span><span class="animate-in fade-in-25 duration-700">iers suivants dans</span><span class="animate-in fade-in-25 duration-700"> </span><span class="animate-in fade-in-25 duration-700">`/tftpboot`</span><span class="animate-in fade-in-25 duration-700"> :</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">`cp {ldlinux.e64,libutil.c32,menu.c32} /tftpboot`</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">Copiez égal</span><span class="animate-in fade-in-25 duration-700">ement le fich</span><span class="animate-in fade-in-25 duration-700">ier suivant :</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">`cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /tftpboot`</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">Accédez au</span><span class="animate-in fade-in-25 duration-700"> répertoire </span><span class="animate-in fade-in-25 duration-700">`/tftpboot`</span><span class="animate-in fade-in-25 duration-700"> et</span><span class="animate-in fade-in-25 duration-700"> créez un sous</span><span class="animate-in fade-in-25 duration-700">-répertoire </span><span class="animate-in fade-in-25 duration-700">`pxelinux.cfg`</span><span class="animate-in fade-in-25 duration-700"> :</span><span class="animate-in fade-in-25 duration-700">**`cd /tftpboot`**</span><span class="animate-in fade-in-25 duration-700">  
</span><span class="animate-in fade-in-25 duration-700">**`mkdir pxelinux.cfg`**</span>

## **Configuration du serveur TFTP**

<span class="animate-in fade-in-25 duration-700">Modifiez</span><span class="animate-in fade-in-25 duration-700"> le fichier de</span><span class="animate-in fade-in-25 duration-700"> configuration T</span><span class="animate-in fade-in-25 duration-700">FTP avec la comm</span><span class="animate-in fade-in-25 duration-700">ande suivante :</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">`vim /etc/default/tftpd-hpa`</span><span class="animate-in fade-in-25 duration-700">\*\*</span><span class="animate-in fade-in-25 duration-700">Assurez-vous que</span><span class="animate-in fade-in-25 duration-700"> le contenu du</span><span class="animate-in fade-in-25 duration-700"> fichier est conf</span><span class="animate-in fade-in-25 duration-700">orme à ce qui</span><span class="animate-in fade-in-25 duration-700"> suit :</span>

<span class="animate-in fade-in-25 duration-700">TFTP\_USERNAME="tftp"  
TFTP\_DIRECTORY="/tftpboot"  
TFTP\_ADDRESS="0.0.0.0:69"  
TFTP\_OPTIONS="--secure"  
</span>

<span class="animate-in fade-in-25 duration-700">N'oubliez pas de configurer votre pare-feu pour autoriser le port **69/UDP** si nécessaire. Démarrez et activez le service TFTP :**`systemctl start tftpd-hpa`**  
**`systemctl enable tftpd-hpa`**</span>

## **Configuration du serveur DHCP**

**Ouvrez le fichier de configuration DHCP situé à l'adresse suivante : `/etc/dhcp/dhcpd.conf`. Ajoutez ces deux lignes à la configuration de votre sous-réseau DHCP :**

**next-server 192.168.1.5;  
option bootfile-name "syslinux.efi";**

**Remplacez `192.168.1.5` par l'adresse IP de votre serveur PXE.**

**Exemple de configuration DHCP complète :**

**subnet 192.168.0.0 netmask 255.255.255.0 {  
 range 192.168.0.106 192.168.0.200;  
 option routers 192.168.0.1;  
 default-lease-time 3600;  
 max-lease-time 86400;  
 next-server 192.168.0.105;  
 option bootfile-name "syslinux.efi";  
}**

**Redémarrez le service DHCP pour appliquer les modifications :`systemctl restart isc-dhcp-server`**

## **Ajout des fichiers d'installation Debian**

**Créez un répertoire pour l'ISO Debian dans `/tftpboot` :`sudo mkdir /tftpboot/Debian`Montez votre fichier ISO Debian et copiez son contenu dans le répertoire créé précédemment :`sudo mount your_iso_file.iso /mnt`  
`sudo cp -r /mnt/* /tftpboot/Debian`**

> Cette commande peut prendre du temps en fonction de la taille de votre fichier ISO.

## **Configuration du menu PXE**

**Accédez au répertoire `/tftpboot/pxelinux.cfg` et créez un fichier nommé `default` :`vim /tftpboot/pxelinux.cfg/default`Ajoutez la configuration suivante pour Debian Net Boot :**

UI menu.c32

LABEL Debian Net Boot  
MENU LABEL Debian  
KERNEL debian/install.amd/vmlinuz  
APPEND initrd=Debian/install.amd/initrd.gz  
TEXT HELP  
Installation minimale de Debian.  
ENDTEXT

Les fichiers spécifiés (vmlinuz et initrd.gz) doivent être situés dans le répertoire `/tftpboot/Debian/install.amd`.

Exemple d'arborescence des fichiers dans /tftpboot (peuvent être différent selon les images) :

/tftpboot/  
├── Debian/  
│ ├── install.amd/  
│ │ ├── vmlinuz  
│ │ ├── initrd.gz  
├── ldlinux.e64  
├── libutil.c32  
├── menu.c32  
├── pxelinux.cfg/  
│ ├── default  
├── syslinux.efi

## **Ajout d'autres systèmes d'exploitation (exemple Ubuntu)**

Pour ajouter un autre système, comme Ubuntu, utilisez une configuration similaire en modifiant les chemins et noms des fichiers correspondants.Exemple pour Ubuntu :

UI menu.c32

LABEL Ubuntu Net Boot  
MENU LABEL Ubuntu  
KERNEL ubuntu/install/amd64/linux  
APPEND initrd=ubuntu/install/amd64/initrd.gz  
TEXT HELP  
Installation minimale d'Ubuntu.  
ENDTEXT

## **Finalisation**

Redémarrez votre service TFTP pour finaliser la configuration :**`systemctl restart tftpd-hpa`**

Votre serveur PXE est maintenant configuré et prêt à être utilisé !