Base documentaire GNU/Linux et développement

Fiches techniques pour la configuration de machines GNU/Linux, de réseau et de développement logiciel

Outils pour utilisateurs

Outils du site


administration-systemes:demarrage-pxe

Démarrage sur le réseau avec PXE

PXE permet à un ordinateur de démarrer sur le réseau en récupérant son système d’exploitation sur un serveur. Cette image peut être un système complet et utilisable ou un environnement minimal qui est utilisé en intermédiaire, comme dans le cas d’installations avec Kickstart.

Dans mon cas, tout fonctionne sous des machines virtuelles. J’ai repris l’organisation décrite dans « Gestion de parc avec virt ». Le serveur sur lequel sera le système d’exploitation sera donc orion, et les clients candidats sont les clients du réseau interne.

Pré-requis

Pour réaliser un démarrage PXE, il faut :

  • que le serveur DHCP indique au client l’adresse IP du serveur qu’il peut contacter ;
  • qu’il y ai un serveur tftp fonctionnel sur la machine que les clients vont contacter ;
  • autoriser le service tftp dans la zone du pare-feu.

On commence par installer les paquets nécessaires :

yum install tftp tftp-server syslinux

Contrairement à ce que l’on trouve largement sur Internet, nous n’allons pas désactiver SELinux, ni modifier le répertoire de tftpboot en /tftpboot mais le laisser là où il a sa place : /var/lib/tftpboot.

Démarrage PXE dans la configuration DHCP

La configuration est délivrée aux clients par le service DHCP. Quelques options et directives sont à ajouter au fichier de configuration du serveur, dans le fichier /etc/dhcp/dhcpd.conf.

default-lease-time 86400;
max-lease-time 172800;

# Nouvelles options
allow booting;
allow bootp;

subnet 192.168.123.0 netmask 255.255.255.0 {

    range 192.168.123.100 192.168.123.250;
    option domain-name-servers 192.168.123.253, 172.18.0.254;
    option domain-search "guillaume-bernard.local", "guillaume-bernard.fr";
    option domain-name "guillaume-bernard.local";
    option routers 192.168.123.253;
    
    # Informations envoyées aux clients pour leur indiquer quel serveur contacter
    # et quel fichier demander
    next-server 192.168.123.253;
    filename "pxelinux.0";
}

On n’oubliera pas de redémarrer le service :

systemctl restart dhcpd

Configuration du PXE

Installer syslinux dans le répertoire

Pour le démarrage PXE, on va utiliser les fichiers fournis par syslinux et les copier dans le répertoire de tftpboot :

cp /usr/share/syslinux/{,pxelinux.0,menu.c32,memdisk} /var/lib/tftpboot/

Création des répertoires de base

La configuration de PXE se fait dans le répertoire pxelinux.cfg, dans le même répertoire que le fichier pxelinux.0, donc à /var/lib/tftpboot/pxelinux.cfg :

mkdir -p /var/lib/tftpboot/pxelinux.cfg

On va également créer le répertoire dans lequel stocker les éléments de démarrage pour CentOS7 :

mkdir -p /var/lib/tftpboot/images/centos7

Copie des fichiers d’initialisation du système d’exploitation

Enfin, il est nécessaire de mettre à disposition un noyau et un fichier d’initialisation aux clients. Ces fichiers peuvent être trouvés dans les répertoires images des images .iso fournies par CentOS. On ira les extraire et, on peut les copier sur le serveur avec scp :

scp images/pxeboot/{initrd.img,vmlinuz} root@172.18.0.253:/var/lib/tftpboot/images/centos7

Configuration du menu

Reste à configurer le menu PXE, en créant le fichier default dans /var/lib/tftpboot/pxelinux.cfg/default :

default menu.c32
prompt 0
timeout 30
MENU TITLE Selection d'un systeme d'exploitation a demarrer

LABEL centos7_x64
    MENU LABEL CentOS 7 X64
    KERNEL /images/centos7/vmlinuz
    APPEND  initrd=/images/centos7/initrd.img

Modification des droits et SELinux

Enfin, reste à autoriser la lecture des fichiers mis à disposition par le serveur, en exécutant les commandes :

find /var/lib/tftpboot -type d -exec chmod o+rx {} \;
find /var/lib/tftpboot -type f -exec chmod o+r {} \;

Le contexte SELinux de ce répertoire est tftpdir_rw_t et cobbler_var_lib_t pour les fichiers spécifiques, normalement définit dans la politique par défaut. On peut redéfinir le tout avec :

restorecon -Rv /var/lib/tftpboot/

Autorisation du service dans le pare-feu

Ne reste qu’à autoriser le service tftp dans la zone concernée. Dans la configuration présentée ci-dessus, il s’agit de la zone « internal » :

firewall-cmd --zone=internal --add-service=tftp --permanent
firewall-cmd --reload

Démarrage d’une machine virtuelle

Le test se fait sur le réseau interne, accessible via le point virbrint. On peut créer une machine temporaire avec l’option –transient. De même, pour ce test, un disque n’est pas nécessaire :

virt-install --name=test-pxe --ram=1024 --vcpus=1 --pxe --noautoconsole --network bridge=virbrint --disk none --transient
administration-systemes/demarrage-pxe.txt · Dernière modification: 2018/05/08 18:19 par Guillaume Bernard