Mise en place d'un serveur PXE

Mise en place d'un serveur PXE

Mise en place d'un serveur PXE avec dnsmasq pour booter un OS depuis le réseau

Paquets utilisés

Configuration de dnsmasq

Dans ce cas, dnsmasq va nous servir de serveur DHCP et de serveur TFTP car le PXE échange des informations grâce à ces deux services.

Le fichier de configuration se trouve dans /etc/dnsmasq.conf. N'hésitez pas à faire un backup de la configuration de base, qui contient des informations de paramétrage.

Voici la configuration de dnsmasq.

/etc/dnsmasq.conf

interface=eth0

dhcp-range=192.168.0.1,192.168.0.20,6h

dhcp-boot=pxelinux/pxelinux.0

enable-tftp

tftp-root=/var/lib/tftpboot

Changez les paramètres d'interface, la range d'IP et le dossier TFTP selon vos besoins.

Copies des fichiers essentiel au démarrage PXE

Nous avons besoin de créer le dossier pxelinux dans le dossier /var/lib/tftpboot/ pour que le client sache récupérer pxelinux.0.

mkdir /var/lib/tftboot/pxelinux

Ensuite, nous avons besoin de récupérer les fichiers que l'on a obtenus grâce aux paquets syslinux et pxelinux.

Pour les fichiers pxelinux:

cp /lib/PXELINUX/pxelinux.0 /var/lib/tftboot/pxelinux

Pour les fichiers syslinux:

cp /lib/syslinux/modules/bios/ldlinux.c32 /lib/syslinux/modules/bios/libcom32.c32 /lib/syslinux/modules/bios/libutil.c32 /lib/syslinux/modules/bios/vesamenu.c32 /var/lib/tftpboot/pxelinux

Pour paramétrer le menu, nous devons créer un sous-dossier dans le dossier dhcp-boot que nous avons préparé.

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

Récupération du kernel et de initdr.

Pour cela monter l'iso de la distribution que vous souhaitez.

mount -o loop /dossier/vers/votre/.iso /mnt/

Trouvez le kernel et initdr dans /mnt/ et copier le dans le dossier pxelinux.

Vous pouvez vous aider du fichier de configuration de GRUB pour trouver ces fichiers.

Démontez l'ISO.

umount /mnt/

Configuration du menu PXE

Créez et éditez un fichier nommé default dans le sous-dossier pxelinux/ de notre serveur TFTP.

nano /var/lib/tftpboot/pxelinux/pxelinux.cfg/default

Et mettez ce code dans le fichier

DEFAULT vesamenu.c32

MENU TITLE Menu Principal PXE

PROMPT 0

TIMEOUT 300

 MENU LABEL [nom que vous voulez]

 KERNEL linux

 APPEND initrd=initrd.gz

Vous pouvez créer des sous-dossiers où mettre le kernel et le initrd afin de mieux vous y retrouver, ajustez le chemin en fonction.

Pour les ISO live, vous devez extraire le fichier filesystem.squashfs de l'ISO et le copier sur votre serveur TFTP. Rajoutez ces arguments à la ligne APPEND.

Pensez à bien partir du dossier root de votre serveur TFTP !

APPEND initrd=initrd.gz boot=live fetch=tftp://[l'ip de votre serveur tftp]/[dossier/du/fichier/filesystem.squashfs]

Voila vous pouvez booter un OS depuis le réseau !

hip hip hip ? hourra !