Mise en place d'un serveur PXE avec dnsmasq pour booter un OS depuis le réseau
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.
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/
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/
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 !