Attention ! L'installation du serveur n'a jamais été finalisée. Ce billet sera modifié si le projet est repris un jour.

J'avais commencé à installer un serveur PXE pour l'atelier-soudé, comme détaillé dans ces deux billets de blog : 1 et 2. Le système était d'ailleurs plutôt bien abouti mais il était particulièrement lent sur les transferts d'images disques. J'ai donc décidé de changé de système pour installer un serveur IPXE.

L'avantage de IPXE par rapport à PXE est qu'il permet d'utiliser d'autres protocoles que le TFTP pour le transfert des fichiers. Ceci permet donc d'avoir des vitesses de transfert beaucoup plus importantes.

Pour pouvoir fonctionner, IPXE doit soit être intégré directement dans une carte réseau en remplacement du binaire PXE, soit être chainé après PXE. Dans ce dernier cas, l'ordinateur démarre en utilisant le binaire PXE intégré dans sa carte réseau. Il émet une requête DHCP et reçoit un fichier d'amorce compatible IPXE depuis le serveur PXE. Il exécute donc un second démarrage en utilisant ce fichier qui se termine soit en lançant une nouvelle requête DHCP pour recevoir depuis le serveur PXE un script IPXE à exécuter, soit en exécutant un script intégré dans le fichier d'amorce lorsque ce dernier est disponible.


Présentation du système mis en place

Le fonctionnement de notre serveur IPXE reprends une partie des concept du serveur PXE que nous avions installés précédemment. Mais il y a également pas mal de changements.

Voici les éléments/logiciels utilisés :

  • dnsmasq : logiciel intégrant un serveur DNS (non utilisé ici), un serveur DHCP permettant de faire du PXE et un serveur TFTP. Le choix s'est porté sur ce logiciel car il permet de faire du proxy DHCP, qu'il est simple à configurer et qu'il intègre la plupart des outils nécessaires au serveur PXE.

Petite parenthèse : un proxy DHCP permet de fournir les éléments du protocole DHCP nécessaires au démarrage PXE sans être le serveur DHCP principal qui fournit les adresses IP. Cette fonctionnalité là était nécessaire car le routeur fournissant l'accès à internet pour l'atelier-soudé fait également office de serveur DHCP et nous ne voulions pas modifier sa configuration. De plus, le routeur est constamment démarré contrairement au serveur PXE.

  • IPXE : un système d'amorçage réseau reprenant le fonctionnement de PXE en ajoutant des protocoles supplémentaires.
  • Un serveur HTTP : permet de fournir les scripts IPXE, les images disques et les fichiers de démarrage des systèmes d'exploitation. Il peut également remplacer le serveur NFS pour le transfert des autres fichiers.
  • Un serveur NFS : système de partage de fichiers distant entre machine de type Unix. Il fournit les images disques de tous les systèmes d'exploitation (excepté Windows).
  • Un serveur Samba : système de partage de fichiers distant utilisant le protocole propriétaire SMB de Microsoft. Ce serveur fournit les images disques des systèmes d'exploitation Windows.

Le serveur est installé sur le même ordinateur que le précédent serveur PXE : une machine sous Linux Mint. Linux Mint est une distribution dérivée de Ubuntu, elle même dérivée de Debian. L'ensemble des commandes présentées dans ce billet et les suivants devraient donc être compatible avec tous les systèmes dérivés de Debian, Ubuntu compris. Et tout doit également fonctionner sur d'autres distributions GNU/Linux, moyennant quelques modifications simples au niveau des commandes du gestionnaire de paquet.

Notre serveur PXE est également capable de fournir à l'ordinateur le fichier d'amorçage correspondant à son système bas niveau : BIOS ou UEFI.


Structure des répertoires

Voici à quoi ressemble la structure des répertoires du serveur IPXE après installation :

/srv/
    |_ tftp/
    |      |_ ipxe.efi
    |      |_ undionly.kpxe
    |
    |_ http/
    |      |_ archlinux/
    |      |_ linux_mint/
    |      |         |_ cinammon/
    |      |         |           |_ 32-bit/
    |      |         |           |_ 64-bit/
    |      |         |_ MATE/
    |      |         |           |_ 32-bit/
    |      |         |           |_ 64-bit/
    |      |         |_ XFCE/
    |      |         |           |_ 32-bit/
    |      |         |           |_ 64-bit/
    |      |         |_ KDE/
    |      |         |           |_ 32-bit/
    |      |         |           |_ 64-bit/
    |      |_ mageia/
    |      |         |_ 32-bit/
    |      |         |_ 64-bit/
    |      |_ utilitaires/
    |      |_ windows/
    |      |         |_ 32-bit/
    |      |         |_ 64-bit/
    |      |         |_ wimboot
    |      |         |_ 
    |      |         |_ 
    |      |
    |      |_ master.ipxe
    |      |_ boot.png
    |      |_ ...
    |
    |_ samba/
    |      |_ windows/
    |      |      |_ windows_10/
    |      |      |         |_ 32-bit/
    |      |      |         |_ 64-bit/
    |      |      |_ windows_8.1/
    |      |      |         |_ 32-bit/
    |      |      |         |_ 64-bit/
    |      |      |_ windows_7/
    |      |      |_ windows_vista/
    |      |      |         |_ 32-bit/
    |      |      |         |_ 64-bit/
    |      |      |_ windows_XP/

J'ai préféré détailler les instructions pour installer et configurer le serveur IPXE dans un second billet plutôt que d'en faire un seul indigeste. Vous le trouverez ici.