PXE
| Fiche express | |
|---|---|
| Domaine | Déploiement d'OS par le réseau (boot PXE + kickstart) |
| Paquets | syslinux, tftp (ou tftp-server)
|
| Contexte | RHEL/CentOS (legacy 4/5, généralisable) — nécessite un serveur DHCP |
| Voir aussi | Chkconfig (activer le service tftp) |
Le boot PXE (Preboot eXecution Environment) permet de démarrer une machine directement depuis le réseau, sans CD ni clé USB, pour lancer une installation automatisée (kickstart). Il faut un serveur DHCP qui redirige les clients PXE vers un serveur TFTP fournissant le bootloader, ainsi qu'une source d'installation (FTP/HTTP/NFS) contenant les paquets et le fichier kickstart.
Prérequis
- un serveur DHCP capable de répondre aux clients PXE
- un serveur TFTP (paquet
tftp/tftp-server) - le paquet
syslinux(fournit le bootloaderpxelinux.0) - une source d'installation accessible en FTP/HTTP/NFS, avec le(s) fichier(s) kickstart
Installation (méthode générique syslinux + tftp)
Copier le bootloader PXE fourni par syslinux dans la racine TFTP :
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxelinux.0
mkdir /tftpboot/pxelinux.cfg
Créer /tftpboot/pxelinux.cfg/default avec un menu de boot :
PROMPT 1
DEFAULT 0
DISPLAY messages
TIMEOUT 60
label 0
LOCALBOOT 0
label 1
kernel rhel4/vmlinuz
append initrd=rhel4/initrd.img ks=ftp://192.168.0.10/kickstart/rhel4.cfg
label 2
kernel rhel5/vmlinuz
append initrd=rhel5/initrd.img ks=ftp://192.168.0.10/kickstart/rhel5.cfg
Chaque label correspond à un OS démarrable ; celui par défaut (DEFAULT 0)
ci-dessus est LOCALBOOT (démarrage sur le disque local, sans rien installer).
DISPLAY messages référence un fichier texte /tftpboot/messages
affiché au client pour expliquer les choix possibles, par exemple :
################################################################
Kickstart Installer
- Taper 0 : pour booter localement
- Taper 1 : pour installer RedHat 4 Enterprise ES Update 4
- Taper 2 : pour installer RedHat 5 Enterprise Server Update 1
################################################################
Enfin, déposer le kernel et l'initrd (récupérés depuis un CD/ISO d'installation) au chemin référencé par chaque label :
mkdir /tftpboot/rhel4
cp /media/cdrom/images/pxeboot/vmlinuz /tftpboot/rhel4/
cp /media/cdrom/images/pxeboot/initrd.img /tftpboot/rhel4/
Activer le service TFTP
chkconfig tftp on
Voir Chkconfig pour le détail de la commande (sur systemd, l'équivalent est
systemctl enable --now tftp, voir Systemctl).
Configuration DHCP
Ajouter à la configuration DHCP standard (voir DHCPD) un bloc dédié aux clients PXE, qui pointe vers le serveur TFTP et le bootloader :
allow booting;
allow bootp;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.0.10; # IP du serveur TFTP
filename "pxelinux.0"; # chemin du bootloader, relatif à la racine TFTP
}
Gestion des postes via system-config-netboot (variante RHEL4)
Sur RHEL4, le paquet system-config-netboot fournit les commandes
pxeos/pxeboot pour gérer les images d'installation et les postes
sans éditer directement les fichiers pxelinux.
Enregistrer une image d'installation
pxeos -a -i "Installation Redhat4-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 (-dpour supprimer)-i: description affichée-p: protocole d'installation (NFS/FTP/HTTP)-s: adresse du serveur FTP/HTTP/NFS-L: chemin des sources d'installation sur ce serveur-K: chemin du fichier kickstart- dernier paramètre : identifiant de l'OS (libre), réutilisé par
pxeboot
pxeos -d install-rhel4-u4 # supprimer l'image
Associer une machine (ou un réseau) à une image
pxeboot -a -O install-rhel4-u4 10.0.0.0 # ajouter
pxeboot -d 10.0.0.0 # supprimer
-O: identifiant de l'OS, doit correspondre à celui déclaré viapxeos- dernier paramètre : IP du poste ou du réseau ciblé
Configuration DHCP associée
allow booting;
allow bootp;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.0.0.2;
filename "linux-install/pxelinux.0";
}
10.0.0.2 est ici le serveur TFTP.