Après avoir mis au point le menu de boot dynamique de ma clé USB, j'ai eu envie de faire la même chose sur mon serveur PXE. Comme j'ai déjà une configuration de grub qui le fait, j'ai donc remplacé pxelinux par grub sur le serveur PXE, puis j'ai repris la configuration de ma clé USB pour l'adapter.

Installation

Comme pour générer la clé USB, il est nécessaire d'installer les paquets de binaires de grub.

$ sudo apt-get install grub-pc-bin

Création du répertoire TFTP racine

Il faut ensuite générer le répertoire dans lequel le serveur PXE trouvera les éléments à charger. Cette étape se fait par un simple appel de la commande grub-mknetdir :

$ sudo grub-mknetdir --net-directory=/srv/tftp --locales= --fonts=

Note : Il est possible de générer le répertoire sur une autre machine, puis de copier les fichiers sur le serveur, même si l'architecture est différente, puisque ces fichiers seront lus et exécutés par le client PXE, pas par le serveur lui même.

Note : Les paramètres --locales= et --fonts= permettent de n'inclure aucune locale, et aucune police, lors de l'installation. Cela permet de réduire la place occupée par grub sur le serveur PXE.

Configurer le serveur PXE

La configuration du serveur PXE sera très simple : Il suffit de lui indiquer le chemin de l'exécutable cité par la commande grub-mknetdir.

J'utilise dnsmasq comme serveur DHCP/TFTP, et la configuration de la partie PXE est maintenant réduite à :

enable-tftp
dhcp-boot=/boot/grub/i386-pc/core.0
tftp-root=/srv/tftp
tftp-secure

Comme j'ai activé le paramètre tftp-secure, il est nécessaire que tous les fichiers présents dans le répertoire servi en TFTP appartiennent à dnsmasq :

$ sudo chown dnsmasq:nogroup -R /srv/tftp

Configuration de grub

Le fichier de configuration de grub est quasiment identique à celui de ma clé USB.

La première différence vient du fait que les disques locaux ne sont pas détectés automatiquement par grub lors du démarrage en PXE, puisqu'il n'en a pas besoin pour charger sa configuration. Pour forcer la détection des disques locaux, il suffit de charger le module biosdisk.

Il a aussi fallu que je retire la recherche des systèmes présents sur le serveur PXE, puisque le protocole TFTP ne permet pas de lister les fichiers disponibles. La liste des systèmes hébergés sur le serveur doit donc être écrite en dur dans la configuration de grub.

Exemple de configuration

A titre d'exemple, voici le fichier de configuration actuel de mon serveur PXE.

Cette configuration cherche :

  • Les images ISO au format casper (le format utilisé par Ubuntu) dans un répertoire /linux-iso
  • Les fichiers de configuration grub.cfg placés dans les répertoires /grub ou /boot/grub
  • Les noyaux Linux placés dans le répertoire /boot ou à la racine des périphériques

Tester avec qemu

Vérifier que tout fonctionne lorsqu'on configure un serveur PXE nécessite évidemment de démarrer une machine. Pour éviter de devoir démarrer une machine physique pour chaque test, surtout si c'est celle qui permet de modifier la configuration, il est possible de simplifier cette étape en utilisant l'émulateur qemu de cette manière :

$ kvm -m 128M -boot n -net nic -net user,tftp=/srv/tftp,bootfile=/boot/grub/i386-pc/core.0

Une clé USB pour les booter vraiment tous

sam. 30 sept. 2017 by Marmotte

Lorsqu'on bidouille des machines, il arrive que le système ne démarre plus. Que seul le boot loader soit cassé, ou que ce soit le système complet, il est donc important d'avoir à disposition un moyen de démarrer la machine, pour réparer les dégâts.

J'explique ici la manière dont j'ai configuré …

read more

Démarrage : BIOS ou UEFI ? MBR ou GPT ?

sam. 10 sept. 2016 by Marmotte

Après divers tests, je rassemble ici mes notes à propos de la configuration nécessaire pour démarrer un système, selon les différentes combinaisons courantes du micrologiciel de la carte mère (BIOS ou UEFI) et du format de table de partitions (MBR ou GPT) utilisées.

Descriptions

BIOS

Après l'initialisation des différents matériels …

read more

Une clé USB pour les booter tous

dim. 18 oct. 2015 by Marmotte

Lorsqu'on bidouille des machines, il arrive que le système ne démarre plus. Que seul le boot loader soit cassé, ou que ce soit le système complet, il est donc important d'avoir à disposition un moyen de démarrer la machine, pour réparer les dégâts.

J'explique ici la manière dont j'ai configuré …

read more