Premiers pas avec le PXE sous Debian

I. Présentation

Remarque : Ce tutoriel publié le 28 Septembre 2011 fût remis à jour et complété le 23 Mars 2015

PXE pour Preboot eXecution Environment, est un système permettant à un hôte client de démarrer via le réseau en récupérant l'image d'un OS qui se trouve sur un serveur PXE. Ce système peut être utilisé aussi pour le chargement d'application telle que GParted, il existe un grand nombre de cas de figure pour ce mécanisme de déploiement.

Bien que le PXE serve seulement à distribuer les images de systèmes d'exploitation par le réseau, il offre trois atouts principaux :

pxe-atout1

Le PXE est un sujet conséquent, il est préférable de découper le sujet en plusieurs tutoriels, d'où l'intérêt de ce tutoriel d'initiation. Dans ce premier tutoriel sur PXE, on se contentera de déployer une seule image, à savoir Debian Wheezy en NetBoot (démarrage par le réseau). Le serveur PXE est sous Debian Wheezy, il dispose de l'adresse IP "192.168.1.155" et il est sur le même réseau que le client PXE.

pxe-schema

Vous êtes prêt ? Alors on va commencer !

II. Obtenir SYSLINUX

Il est nécessaire de commencer par l'installation de Syslinux, qui permet d'obtenir différents chargeurs d'amorçage pour Linux. Tout simplement, installez-le grâce à la commande suivante (avec au préalable la mise à jour des données paquets) :

apt-get update
apt-get install syslinux

On va créer sur notre serveur une arborescence classique pour le serveur TFTP que nous installerons par la suite. L'arborescence à créer est "/srv/tftp".

mkdir -p /srv/tftp

Syslinux permet d'obtenir un fichier "pxelinux.0" qui correspond au loader chargé par les clients. On va le copier à la racine du TFTP :

cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/

On en a fini avec Syslinux, on va s'intéresser au DHCP et au TFTP.

III. Installation et configuration de DNSMASQ

D'une part, le DHCP permet de distribuer une configuration réseau aux clients PXE, d'autre part, le TFTP permet de rendre disponibles les fichiers d'installation aux clients, ce qui leur permet de réaliser l'installation. Plutôt que d'installer dhcp3 ou tftpd, on va s'appuyer sur le paquet Dnsmasq qui permet de créer facilement une multitude de services (dhcp, dns, tftp...). Faisons simple.

On installe le paquet :

apt-get install dnsmasq

Le fichier de configuration "/etc/dnsmasq.conf" contient toute la configuration relative à Dnsmasq. Éditez ce fichier. Ajoutez ce bloc de configuration :

# Configuration file for dnsmasq.
## Activation d'une plage DHCP pour les clients PXE, de 192.168.1.100 à 105
## Une adresse IP est attribuée pour 6h au client
dhcp-range=192.168.1.100,192.168.1.105,255.255.255.0,6h
## Fichier de boot PXE
dhcp-boot=pxelinux.0
## Activer le TFTP et definir un repertoire (/srv/tftp)
enable-tftp
tftp-root=/srv/tftp

Sauvegardez vos modifications et redémarrez le service Dnsmasq :

service dnsmasq restart

On obtient un message de confirmation comme quoi le service a bien redémarré :

[ ok ] Restarting DNS forwarder and DHCP server: dnsmasq.

Le serveur est prêt au niveau des paquets, il ne reste plus qu'à récupérer une image NetBoot de Debian Wheezy.

IV. Récupérer une image NetBoot de Debian

Directement sur le serveur PXE, on va télécharger les fichiers de la Netboot de Debian via wget. Au préalable, on se positionne à la racine du TFTP puisque c'est dans ce répertoire qu'il faudra stocker les données de l'archive tar.gz obtenue.

cd /srv/tftp
wget http://ftp.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz

Patientez quelques secondes pendant le téléchargement...

pxe-wget-debian1

Désormais, on va tout simplement extraire le contenu de l'archive téléchargée, et on va la supprimer. Voici les deux commandes qui permettent d'effectuer ces opérations :

tar zxf netboot.tar.gz 
rm netboot.tar.gz

Si l'on prend le temps de voir l'arborescence de données obtenues (avec le paquet tree, non inclus par défaut), voici ce que l'on obtient :

pxe-tree

A partir de ce moment-là, le serveur PXE est prêt et l'installation de Debian par le réseau peut-être effectuée.

V. Installation PXE

On va démarrer notre client PXE, qui doit disposer d'une carte réseau compatible avec le PXE (ça doit être plutôt rare de nos jours qu'une carte ne sache pas gérer le PXE, autrement dit le démarrage sur le réseau).

Sur la copie d'écran ci-dessous, on remarque que le serveur DHCP (dnsmasq) distribue une adresse IP au client, qui va ensuite charger via PXE la configuration par défaut (pxelinux.cfg/default).

pxe-boot1

Une fois la phase d'initialisation terminée, le menu de démarrage de Debian va s'afficher sur le poste client :

Menu Debian obtenu par le boot PXE
Menu Debian obtenu par le boot PXE

VI. Pour aller plus loin...

Ce tutoriel aborde les notions de base du boot PXE, il est possible d'aller plus loin pour bénéficier d'un véritable système de déploiement automatisé. Voici quelques pistes pour vous orienter :

  • Les fichiers de configuration personnalisés

Lorsqu'un client PXE se présente, le déploiement se calque sur le fichier de configuration par défaut de pxelinux, à savoir un fichier nommé "default" et présent dans le répertoire "pxelinux.cfg".

Lors d'un déploiement sur de multiple machines, il est intéressant d'avoir un fichier de configuration par machine afin de préconfigurer et personnaliser ce que l'on souhaite déployer sur chaque machine.

De ce fait, avant de prendre en compte le fichier de configuration "default", le PXE cherchera à trouver un fichier de configuration spécifique à la machine cliente. Pour cela, il regarde si le nom d'un fichier correspond à l'adresse MAC du poste client, si ce n'est pas le cas, il regarde par rapport à l'adresse IP au format hexadécimal (Exemple : C0A80167 = 192.168.1.103), si ce fichier n'existe pas non plus il charge le fichier default.

  • Personnaliser l'installation avec les fichiers PreSeed

Les fichiers PreSeed de Debian permettent de personnaliser la configuration du système d'exploitation, par exemple, le nom de la machine, le langage, les miroirs à utiliser, le partitionnement des disques, etc. Cela vous fera gagner un temps précieux lors du déploiement d'un machine (ou d'un serveur).

Les directives commencent par "d-i" et après les options disponibles sont nombreuses.

N'hésitez pas à partager vos expériences avec le PXE sous Linux, et vos avis sur la gestion des fichiers de configuration et des fichiers PreSeed.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5557.Voir tous les posts

8 thoughts on “Premiers pas avec le PXE sous Debian

  • Ok, bonne introduction au pxe…
    Mais comment définit ‘on l’os a installer ??? On ne vois « que » ubuntu ici… Comment mettre autre chose ? Comment proposer plusieurs choses ?

    Bref, article incomplet, ou seulement une esquisse du PXE !

    Répondre
    • Bonjour Gil,

      Merci pour ce commentaire qui a permis de déterrer ce tutoriel rédigé il y a longtemps… (en 2011). J’ai revu le titre et le contenu pour en faire un article d’initiation au PXE pour déployer son premier OS tout simplement.

      Bonne journée
      Florian

      Répondre
  • Comment faire pour déployer un système windows par exemple ?

    Répondre
  • Attention, concernant le fichier pxelinux.0 sous Jessie, celui-ci n’existe plus dans /usr/lib/syslinux mais dans /usr/lib/PXELINUX/ après install du paquet pxelinux

    Répondre
  • Merci beaucoup,
    Simple, claire, et très bien expliqué. Je voulais le faire pour exploiter des machines dépourvu de démarrage sur usb, disquette et pas de lecteur cd non plus, un dinosaure en gros.
    Je donnerai des nouvelles si jamais je le fais
    Merci bien.

    Répondre
  • Génialement simple !
    Petite mise à jour 2020 :
    A partir d’une Debian 10 en VM, il faut aussi installer pxelinux.
    Et le fichier pxelinux.0 est ici : /usr/lib/PXELINUX/pxelinux.0

    Merci pour cet article, le plus rapide à mettre en œuvre que j’ai trouvé 🙂

    Répondre

Répondre à Midas Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.