Premiers pas avec le PXE sous Debian
Sommaire
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 :
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.
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...
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 :
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).
Une fois la phase d'initialisation terminée, le menu de démarrage de Debian va s'afficher sur le poste client :
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.
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 !
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
Comment faire pour déployer un système windows par exemple ?
c’est génial tes tutos, je garderai l’oeil braqué sur toi
Merci
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
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.
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é 🙂
Merci ! 😉