Serveur boot PXE

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Provisioning réseau (boot PXE)
Composants DHCP, TFTP, syslinux/pxelinux
Fichier menu /tftpboot/pxelinux.cfg/default
Voir aussi Kickstart · PXE over MDT2013

PXE (Preboot eXecution Environment) permet à une machine de démarrer par le réseau plutôt que depuis un support local (disque, CD, clé USB), en récupérant un noyau et une image de démarrage via TFTP après avoir obtenu une adresse IP en DHCP. C'est la base du provisioning automatisé de serveurs/postes en masse — combiné à Kickstart côté Red Hat/CentOS, il permet une installation entièrement non interactive.

Principe général

  1. La machine cliente envoie une requête DHCP au démarrage (carte réseau configurée en boot
 PXE dans le BIOS/UEFI).
  1. Le serveur DHCP répond avec une adresse IP et les options PXE : adresse du serveur
 TFTP (next-server) et nom du fichier de boot (filename).
  1. Le client télécharge ce fichier de boot (typiquement pxelinux.0) par TFTP, qui
 affiche à son tour un menu (pxelinux.cfg/default) proposant les images
 disponibles.
  1. Le client télécharge le noyau et l'image mémoire (initrd) choisis, et démarre dessus.

Sous RHEL 5 / distributions proches

Cette méthode fonctionne, avec des adaptations mineures de chemins, pour la plupart des distributions Linux basées sur syslinux.

Prérequis

Un serveur DHCP fonctionnel (voir la documentation dédiée au service DHCP) et les paquets :

yum install syslinux tftp-server

Configuration PXE

Copier le binaire de boot syslinux vers la racine TFTP :

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxelinux.0
mkdir /tftpboot/pxelinux.cfg

Fichier de menu /tftpboot/pxelinux.cfg/default :

PROMPT 1
DEFAULT 0
DISPLAY messages
TIMEOUT 60

label 0
LOCALBOOT 0

label 1
kernel rhel4/vmlinuz
append initrd=rhel4/initrd.img ks=ftp://serveur-ks.exemple.tld/kickstart/rhel4.cfg

label 2
kernel rhel5/vmlinuz
append initrd=rhel5/initrd.img ks=ftp://serveur-ks.exemple.tld/kickstart/rhel5.cfg

Chaque label représente une option de démarrage ; DEFAULT 0 pointe vers LOCALBOOT (démarrage sur le disque local), un choix de sécurité classique pour éviter de réinstaller une machine par erreur si l'opérateur n'intervient pas à temps sur le menu.

DISPLAY messages référence un fichier texte affiché avant le menu, utile pour guider l'opérateur :

# /tftpboot/messages
################################################################
Installateur Kickstart
 - Taper 0 : démarrer localement
 - Taper 1 : installer RHEL 4
 - Taper 2 : installer RHEL 5
################################################################

Récupérer le noyau et l'initrd depuis un support d'installation (CD/ISO monté) :

mkdir /tftpboot/rhel4
cp /media/cdrom/images/pxeboot/vmlinuz /tftpboot/rhel4/
cp /media/cdrom/images/pxeboot/initrd.img /tftpboot/rhel4/

Configuration DHCP

En complément d'une configuration DHCP standard, dans /etc/dhcpd.conf :

allow booting;
allow bootp;

class "pxeclients" {
  match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
  next-server 192.168.1.10;
  filename "pxelinux.0";
}

192.168.1.10 est l'adresse du serveur TFTP (peut être le même hôte que le serveur DHCP ou un autre serveur du réseau).

Sous RHEL 4 (system-config-netboot)

Approche outillée, antérieure à la méthode manuelle ci-dessus, via l'utilitaire system-config-netboot (obsolète aujourd'hui — conservé ici à titre historique, à ne pas utiliser sur une distribution récente) :

yum install system-config-netboot

Déclarer une image d'installation disponible au boot PXE :

pxeos -a -i "Installation RHEL4-U4" -p FTP -D 0 -s 10.0.0.2 \
  -L /RHEL/RHEL4-U4-i386-ES/ -K ftp://10.0.0.2/KS/anaconda-ks.cfg install-rhel4-u4
  • -a : ajouter
  • -i : description affichée
  • -p : protocole d'installation (NFS/FTP/HTTP)
  • -s : adresse du serveur FTP
  • -L : chemin des sources d'installation sur le serveur FTP
  • -K : chemin du fichier Kickstart
  • dernier paramètre : identifiant de l'image (référencé ensuite par pxeboot)

Supprimer une image : pxeos -d install-rhel4-u4

Associer une machine (par IP) à une image déclarée ci-dessus :

pxeboot -a -O install-rhel4-u4 10.0.0.0

Supprimer l'association : pxeboot -d 10.0.0.0

Activer TFTP et configurer le DHCP comme dans la section RHEL 5 ci-dessus (même logique de classe pxeclients), avec filename "linux-install/pxelinux.0" (chemin propre à system-config-netboot) et next-server pointant vers le serveur TFTP.

Voir aussi

  • Kickstart — automatiser le contenu de l'installation elle-même (fichier ks.cfg)
  • PXE over MDT2013 — intégrer un menu de boot Linux dans un environnement Microsoft MDT/WDS