Il y a quelque temps j’ai été confronté à une problématique un peu particulière. Comment monter un serveur PXE qui soit à la fois compatible BIOS Legacy et UEFI ?
Une contrainte se rajoutant : un serveur DHCP sous pfSense est déjà présent sur le réseau, et il ne faut pas en intégrer un second.
Après quelques recherches, voici la solution que j’ai mise en place.

Pré-requis

– Un serveur DHCP capable de fournir des configurations TFTP comme pfSense
– Un serveur Linux (pour ma part une machine sous Debian 7.8 Wheezy) qui sera notre PXE
– Un client BIOS et/ou UEFI pour tester la configuration

Installation du serveur TFTP

Sur le serveur Debian nous allons installer le paquet tftp-hpa.

Puis nous éditons son fichier de configuration pour lui indiquer le répertoire dans lequel les images seront stockées, et activer les logs du serveur.

Les logs sont visibles dans /var/log/daemon.log

Le répertoire s’est créé automatiquement à la racine de notre serveur.
Il faut maintenant le peupler des fichiers nécessaires au boot de l’ordinateur.

Pour cela nous allons créer deux répertoires distincts pour chaque architecture d’ordinateur : BIOS et EFI64.

Il faut désormais fournir un environnement de démarrage à nos machines. Pour cela nous allons utiliser l’amorceur Syslinux dans sa dernière version (à l’heure où j’écris l’article) 6.03 qui supporte l’UEFI correctement.

Maintenant que nous avons récupéré l’archive nous allons copier les fichiers nécessaires.

Rien que ça ! L’installation est terminée !
Bon c’est cool mais pour le moment ça ne fonctionne pas. Il faut configurer quelques petites choses…

Configuration

Dans un premier temps nous allons placer une image de la dernière version de Debian dans notre dossier images. Cela nous permettra de créer notre première entrée dans le menu de démarrage.

Il est possible de faire un lien dur entre les deux dossiers « images » si l’on souhaite fournir les mêmes systèmes aux deux architectures.

Dans un second temps nous allons créer un menu qui s’affichera au démarrage et permettant de sélectionner le système que l’on souhaite démarrer.

Le fichier graphics.conf n’est pas essentiel, mais il permet de customiser les couleurs de notre menu. Voici ce que j’ai entré dans le mien pour vous donner un exemple

Configuration de pfSense

Nous avons admis plus haut que pfSense joue le rôle de serveur DHCP de notre réseau.
On accède donc à l’interface web et on se rend dans : Services / DHCP Server.
Sur la ligne TFTP Server on indique l’ip de notre serveur Debian, puis on coche la case Network booting en complétant avec les informations suivantes :
– Enter the IP of the next-server : @IP du serveur
– and the default bios filename : bios/pxelinux.0
– and the UEFI 32bit filename : efi64/syslinux.efi
– and the UEFI 32bit filename : efi64/syslinux.efi
– root-path-string : /srv/tftp/
pxe_1

Test

Sur notre ordinateur de test on configure pour qu’il boot sur sa carte réseau, on vérifie que le câble réseau est bien connecté à notre LAN et on lance le démarrage.
Notre menu devrait alors s’afficher, nous permettant de naviguer à travers les différentes options disponibles.
pxe_2
J’espère que ce tuto vous aura été utile, et n’hésitez surtout pas à le partager !