Création d'un serveur PXE personnalisé depuis une distribution du noyau Linux de la branche Debian

Prérequis

Étape 1 : Installation de dnsmasq

  1. Mettre à jour la liste des paquets :

  1. Installer dnsmasq :

Étape 2 : Configuration de dnsmasq

  1. Sauvegarder la configuration originale :

  1. Créer un nouveau fichier de configuration :

  1. Ajouter les lignes suivantes :

S'assurer de remplacer eth0 par le nom de votre interface réseau et ajustez la plage DHCP selon votre configuration réseau.

NB : Penser à vérifier que l'adresse ip de la carte réseau filaire (ethernet) soit bien en 192.168.1.49 par exemple via network-manager (outil graphique) ou via /etc/network/interfaces comme suit :

Avec les arguments suivants :

Pour connaître le nom de l'interface réseau filaire, il est possible d'utiliser la commande ifconfig le résultat devrait sensiblement ressembler à celui-ci :

Ici, eth0 est le nom de l'interface réseau filaire.

Étape 3 : Préparation du répertoire TFTP

  1. Créer le répertoire TFTP :

  1. Installer syslinux pour obtenir les fichiers nécessaires au démarrage PXE :

  1. Copier les fichiers nécessaires :

Étape 4 : Configuration du menu PXE

  1. Créer le répertoire de configuration PXE :

  1. Créer un fichier de configuration par défaut :

  1. Ajouter un menu de base :

Étape 5 : Ajout d'une image d'installation

Pour cet exemple, nous utiliserons Debian :

  1. Télécharger les fichiers d'installation netboot :

Étape 6 : Redémarrage et vérification

  1. Redémarrer le service dnsmasq :

  1. Vérifier que le service fonctionne correctement :

Test du serveur PXE

  1. Configurer un ordinateur client pour démarrer via PXE (généralement dans les paramètres BIOS/UEFI).

  2. Démarrer l'ordinateur client. Il devrait recevoir une adresse IP de dnsmasq et afficher le menu PXE.

  3. Sélectionner l'option d'installation de Debian pour tester le démarrage PXE.

Étape 7 : Récupération d'un iso pour démarrer en live

  1. Rendez-vous à l'adresse suivante : https://store.lacapsule.org/ISO/TOOLBOX-amd64.iso

  2. Une fois le téléchargement terminé, monter l'iso. Dans notre cas, il se trouve dans les Téléchargements :

  3. Créer un répertoire qui servira de point de montage pour l'image ISO :

  1. Utiliser la commande mount avec les options appropriées pour monter l'image ISO :

  1. Une fois l'image ISO montée, on peut accéder à son contenu en naviguant vers le point de montage :

  1. Dans cette image iso se trouvent 5 dossiers dont un caché, symbolisé par un point devant son nom :

  1. Créer un répertoire TOOLBOX à la racine du répértoire tftpboot qui contiendra les fichiers necessaire au démarage du système

  1. Il faudra copier l'intégralité des répertoires contenus dans notre ISO vers notre répertoire TOOLBOX

Nous pouvons à présent ajouter une entrée de menu dans notre fichier default afin de permettre un boot sur le système contenu dans l'iso.

  1. Lorsque c'est terminé il faudra démonter l'ISO :

Étape 8 : Configuration du partage NFS

  1. Installer le serveur NFS :

  1. Configurer le partage NFS :

  1. Ajouter la ligne suivante :

  1. Redémarrer le service NFS :

On peut à présent envoyer de gros fichiers tel qu'un filesystem.squashfs via le réseau afin de démarrer dessus en live.

Étape 9 : Modification du menu PXE

  1. Ouvrir le fichier de configuration du menu :

  1. Modifier les options pour inclure le partage NFS vers notre nouvelle distribution :

Il sera nécessaire de modifier l'adresse IP 192.168.1.127 par celle de notre choix.

  1. Pour savoir quelle IP nous devons utiliser, nous devons utiliser celle qui nous est retournée par la commande :

Étape 10 : Configuration du routage

Pour permettre aux clients ayant des adresses IP en 10.x.x.x d'accéder au réseau 192.168.1.x, on doit configurer le routage sur notre serveur PXE :

  1. Activer le forwarding IP :

  1. Ajoutez une règle de NAT (Network Address Translation) :

  1. S'assurer que ces modifications persistent après un redémarrage en les ajoutant à /etc/sysctl.conf et en sauvegardant les règles iptables.

Étape 11 : Configuration de l'interface réseau

Configurer l'interface réseau de notre serveur PXE pour qu'elle ait une adresse IP dans les deux plages :

  1. Éditer le fichier /etc/network/interfaces :

  1. Ajouter la configuration suivante :

Étape 12 : Redémarrage des services

Après avoir effectué ces modifications, redémarrer les services concernés :

Cette configuration permettra à notre serveur PXE de distribuer des adresses IP dans la plage 10.x.x.x tout en permettant l'accès au réseau 192.168.1.x. Il faut s'assurer d'adapter les adresses IP et les interfaces réseau en fonction de notre configuration spécifique

Étape 13 : Problème avec le service networking

Le message d'erreur indique que le service networking n'existe pas sur le système. Cela peut être dû à plusieurs raisons :

  1. On utilise une version récente de Debian qui a migré vers systemd-networkd.

  2. Le paquet ifupdown, qui fournit le service networking, n'est pas installé.

  3. Le service a été désactivé ou supprimé manuellement.

Étape 14 : Solutions possibles

  1. Utiliser systemd-networkd à la place :

Étape 15 : Personnalisations possibles

Grâce au fichier default

Il est possible de personnaliser le menu du PXE en ajustant les couleurs à notre guise. Pour ce faire, il faudra ajouter des éléments au fichier /tftpboot/pxelinux.cfg/default.

Warning

Vous ne pouvez pas utiliser exactement le même système de personnalisation du menu avec menu.c32 et vesamenu.c32.

  • menu.c32 utilise uniquement des codes ANSI pour définir les couleurs (par exemple 37;40 pour texte blanc sur fond noir).

  • vesamenu.c32 utilise à la fois des codes ANSI et des codes hexadécimaux au format ARGB pour une personnalisation plus fine des couleurs.

  • vesamenu.c32 offre des options de personnalisation supplémentaires, comme la possibilité d'ajouter une image de fond.

    Pour rappel, l'utilisation d'une ou l'autre des solutions est déclarée en début de fichier comme suit :

Exemple d'une personnalisation de menu.c32 :

Exemple d'une personnalisation de vesamenu.c32 :

Structure de base

Éléments du menu

Attributs de texte

Format : [luminosité];[couleur_texte];[couleur_fond]

Couleurs hexadécimales

Format : #RRGGBB

Styles

Exemple commenté

Conseils de personnalisation

  1. Choisir une palette de couleurs cohérente pour une meilleure lisibilité.

  2. Utiliser des contrastes pour mettre en évidence les éléments importants.

  3. Tester différentes combinaisons pour trouver ce qui convient le mieux à notre environnement.

  4. Ne pas hésiter à ajuster les couleurs hexadécimales pour des nuances plus précises.

  5. Garder à l'esprit l'accessibilité pour les utilisateurs ayant des problèmes de vision.

Grâce à GRUB2

GRUB2 offre une alternative à PXELINUX pour configurer un environnement de démarrage PXE avec un menu personnalisé.

Il sera nécessaire d'installer GRUB2 sur le serveur comme suit :

Il faudra aussi configurer le serveur TFTP en utilisant la commande grub2-mknetdir pour créer le répertoire de démarrage réseau GRUB2 dans la racine TFTP.

Pour un système BIOS :

Pour un système UEFI :

Dans ces commandes :

Il sera aussi impératif de modifier la configuration de dnsmasq en ouvrant le fichier dans un éditeur :

Insérer les lignes suivantes :

Pour finir, il est possible de personnaliser totalement son menu comme dans l'exemple suivant :

Créer son propre thème de menu au démarrage grâce à GRUB2

https://github.com/N0r3f/usb-multiboot