Serveur boot PXE
| 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
- La machine cliente envoie une requête DHCP au démarrage (carte réseau configurée en boot
PXE dans le BIOS/UEFI).
- 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).
- 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.
- 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