Diskless nodes/fr

Ce guide vous explique comment créer et configurer des nœuds sans disque avec Gentoo Linux.

À propos de ce guide
Ce guide vous aide à configurer des stations sans disque utilisant la distribution Gentoo Linux. Nous essayons de rendre ce guide aussi facile d'utilisation que possible et apportons à nouveau venu à Linux tout ce dont il a besoin, parce que chacun d'entre nous en a été un d'une certaine manière. Alors qu'un utilisateur expérimenté pourrait très facilement faire la synthèse des nombreux guides disponibles sur les nœuds sans disque et la mise en réseau, nous espérons que ce guide facilitera l'installation pour tous les utilisateurs intéressés, qu'ils soient chevronnés ou pas.

Qu'est-ce qu'une machine sans disque ?
Une machine sans disque est un PC dépourvu des périphériques de démarrage habituels tels que des disques durs, des disquettes ou des CD-ROMs. Le nœud sans disque démarre à partir du réseau et nécessite un serveur qui lui fournit de l'espace de stockage tout comme le ferait un disque dur local. Désormais, nous appellerons le serveur maître, et la machine sans disque l'esclave. Le nœud esclave a besoin d'un adaptateur réseau qui prend en charge le démarrage PXE ou Etherboot ; consultez Etherboot.org pour la liste des matériels prenant en charge cette fonctionnalité. La plupart des cartes modernes prennent en charge PXE et beaucoup d'adaptateurs embarqués sur les cartes mère feront aussi l'affaire.

Avant de vous lancer
Vous devriez avoir Gentoo installé sur votre nœud maître et assez de place sur le maître pour y stocker le système de fichiers du nœud esclave que vous voulez héberger. Assurez-vous que vous disposez également d'une interface vers l'Internet séparée de la connexion au réseau local.

À propos des noyaux
Le noyau est le logiciel qui se trouve entre votre matériel et le reste du logiciel que vous avez chargé sur votre machine, essentiellement, le cœur d'un système d'exploitation basé sur un noyau. Lorsque votre ordinateur est démarré, le BIOS exécute les instructions trouvées dans l'espace de démarrage réservé de votre disque dur. Ces instructions sont typiquement un chargeur de démarrage qui charge votre noyau. Dès lors qu'il est chargé, le noyau prend en charge tous les processus.

Pour plus d'informations sur les noyau et sur leur configuration, reportez-vous au kernel HOWTO.

Configurer le noyau du maître
Le noyau du maître peut être aussi important et aussi personnalisé que vous le souhaitez, mais il y a quelques options du noyau que vous devez sélectionner. Rendez-vous dans la configuration de votre noyau en tapant :

Vous devriez obtenir une interface graphique grise et bleue qui offre une alternative sûre à l'édition manuelle du fichier. Si votre noyau fonctionne actuellement correctement, vous devriez en sauvegarder le fichier de configuration en sortant de l'interface et en tapant :

Rendez-vous dans les sous-menus suivants et assurez-vous que les items listés sont cochés pour être compilés dans le noyau (pas en tant que module). Les options indiquées ci-dessous sont celles correspondant à un noyau de version 2.6.10. Si vous utilisez une version différente, le texte ou/et l'ordre des menus pourraient être différents. Assurez-vous que vous sélectionnez au moins les options indiquées ci-dessous.

Si vous voulez accéder à l'Internet via votre maître et/ou avoir un pare-feu sûr, assurez-vous d'ajouter la prise en charge des iptables.

Si vous voulez utiliser le filtrage des paquets, vous pouvez ajouter le reste des modules plus tard. Assurez-vous de lire le chapitre Pare-feu du manuel de sécurité Gentoo pour savoir comment configurer le filtrage de manière appropriée.

Après avoir configuré le noyau maître, vous devez le compiler. Tapez ceci :

Ensuite, ajoutez une entrée pour ce nouveau noyau dans ou  selon le chargeur de démarrage que vous utilisez et faites de ce nouveau noyau le noyau par défaut. Maintenant que la nouvelle bzimage a été copiée dans votre répertoire boot, il ne vous reste plus qu'à redémarrer le système afin de charger ces nouvelles options.

À propos du noyau de l'esclave
Il est recommandé de compiler le noyau esclave sans module, c'est-à-dire avec les options compilées en dur parce qu'il est difficile et inutile de charger des modules lors d'un démarrage via le réseau. et parceDe plus, ce noyau doit être aussi compact que possible pour démarrer plus rapidement. Nous allons compiler le noyau esclave au même endroit que le noyau maître.

Pour éviter toute confusion et toute perte de temps, il vaut mieux garder une copie de la configuration du noyau maître comme ceci :

Nous devons maintenant configurer le noyau des nœuds esclaves de la même façon que pour le noyau maître. Si vous préférez repartir d'une configuration vierge, vous pouvez réinitialiser comme ceci :

Ensuite, utilisez l'interface de configuration en tapant :

Assurez-vous que les options suivantes sont sélectionnées pour une compilation dans le noyau et PAS comme module :

Compilons le noyau esclave. Vous devez prendre garde à ne pas écraser les modules que vous avez compilés pour le nœud maître. Faites :

Maintenant, créez le répertoire qui va accueillir le système de fichiers des nœuds esclaves sur le maître et copiez-y le fichier bzImage. Nous utilisons, mais vous pouvez utiliser un autre nom.

Configurer un système de fichiers préliminaire pour l'esclave
Les systèmes de fichiers des nœuds maître et esclaves peuvent subir de nombreuses adaptations. Concentrons-nous d'abord sur les fichiers de configuration et les points de montage. Nous avons besoin d'un répertoire sous  pour le premier nœud esclave. Chaque esclave a besoin de son propre système de fichiers racine (root) parce que certains fichiers ne peuvent pas être communs à plusieurs machines sans causer de graves problèmes. Peu importe les noms des sous-répertoires, vous pouvez, par exemple, les nommer d'après les adresses IP, car elles sont uniques et évitent les confusions. Dans cet exemple, l'adresse IP du premier nœud esclave est  :

Certains fichiers de configuration de doivent être modifiés pour les esclaves. Copiez d'abord le répertoire  du maître dans le nouveau répertoire destiné au nœud esclave :

Le système de fichiers est encore incomplet, il lui manque différents points de montage. Pour les créer tapez :

La plupart de ces noms devraient vous être familiers. Les points tels que,  ou  seront utilisés au démarrage de l'esclave, les autres seront montés un peu plus tard. Vous devez également indiquer le nom de machine de l'esclave dans le fichier. Les programmes, bibliothèques et autres fichiers seront copiés au bon endroit plus loin dans ce guide. En fait, ce sera juste avant de démarrer l'esclave.

Bien que les fichiers de périphériques de  soient créés par    plus loin, vous devez créer l'entrée. Si vous ne le faites pas, vous verrez l'erreur « unable to open initial console ».

À propos du serveur DHCP
DHCP signifie Dynamic Host Configuration Protocol (protocole dynamique de configuration des hôtes). Le serveur DHCP est le premier ordinateur contacté par les nœuds esclaves quand ils démarrent par le système PXE via le réseau. La principale fonction d'un serveur DHCP est d'attribuer des adresses IP. Un tel serveur peut attribuer des adresses en se basant sur les adresses MAC des cartes réseau (N.D.T. : l'adresse MAC est censée être unique pour chaque carte sur le marché et est attribuée par le constructeur). Une fois l'adresse attribuée, le serveur DHCP indique au nœud esclave où il peut obtenir son noyau et son système de fichiers préliminaire.

Avant de commencer
Vous devez vérifier plusieurs choses avant de poursuivre. D'abord, vérifions si votre connexion réseau fonctionne :

Vous devez vérifier que vous avez un périphérique eth0 qui fonctionne. Vous devriez voir quelque chose comme ceci :

Un périphérique eth0 fonctionnant correctememt

L'option MULTICAST est essentielle. Si vous ne l'avez pas, vous devez recompiler votre noyau avec cette option activée dans sa configuration.

Installer le serveur DHCP
Si votre réseau n'a pas encore de serveur DHCP, vous devez en installer un :

Si un serveur DHCP est déjà installé sur votre réseau, vous devez modifier sa configuration pour permettre un démarrage via PXE.

Configurer le serveur
Le serveur DHCP est configuré grâce au seul fichier. Le répertoire devrait contenir un exemple que vous pouvez utiliser comme point de départ :

Le fichier de configuration est organisé et indenté comme ceci :

Exemple de présentation du dhcpd.conf

La mention  est facultative et est réservée pour des adresses IP que vous voulez attribuer aux nœuds qui font partie de votre réseau. Vous devez avoir au moins une section  et la section facultative    permet de définir des options communes aux nœuds spécifiés dans la section. Voici un exemple de complet :

Exemple de fichier dhcpd.conf

L'option   indique l'adresse IP de la machine à laquelle le nœud esclave doit demander le fichier   après avoir reçu son adresse IP. Cette adresse est l'adresse du serveur TFTP, généralement la même que celle du nœud maître. Le nom du fichier spécifié dans l'option   est relatif au répertoire  si votre serveur TFTP est configuré comme indiqué plus loin dans ce guide. La section   contient l'adresse matérielle (ou « MAC address ») de votre carte réseau et l'option    permet d'y associer l'adresse IP spécifiée. L'ensemble des options du fichier n'ont pas leur place dans ce guide, mais sont évidemment disponibles dans les pages man.

Démarrer le serveur DHCP
Avant de lancer le script d'initialisation de DHCP, vous devez modifier le fichier pour qu'il ressemble à ceci :

Exemple de fichier /etc/conf.d/dhcp

La variable  indique le péripherique réseau sur lequel votre serveur DHCP va tourner. Dans notre cas, c'est. Il peut être intéressant d'ajouter des valeurs à  si le serveur est équipé de plusieurs cartes réseau. Pour démarrer le serveur DHCP, faites :

Pour faire démarrer le serveur DHCP automatiquement par votre machine, faites :

Dépanner le serveur DHCP
Quand un nœud esclave démarre correctement, vous devriez voir des messages ressemblant à ce qui suit à la fin du fichier  sur le maître :

Exemple d'entrée de journalisation créée par dhcp

Si vous voyez le message ci-dessous, cela indique que le serveur DHCP émet bien sur le réseau, mais qu'il y a une erreur dans le fichier de configuration.

Exemple d'erreur du serveur dhpc

Chaque fois que vous modifiez le fichier de configuration, vous devez relancer le serveur DHCP comme ceci :

À propos du serveur TFTP
TFTP signifie « Trivial File Transfer Protocol ». Le serveur TFTP va fournir un noyau et un système de fichiers aux nœuds esclaves. Tous les noyaux des esclaves et leur système de fichiers seront stockés sur le serveur TFTP. Il est donc recommandé de l'installer sur le nœud maître.

Installer le serveur TFTP
Un serveur TFTP reconnu est celui compris dans le paquet tftp-hpa. Il se trouve qu'il a été écrit par le même auteur que SYSLINUX et ils fonctionnent très bien ensemble. Faites :

Configurer le serveur TFTP
Modifiez le fichier. Vous devez y indiquer le répertoire principal servi par le serveur TFTP avec l'option. Les éventuelles options de la ligne de commande utilisée pour lancer le serveur viennent après. Votre fichier devrait ressembler à ceci :

Exemple de fichier /etc/conf.d/in.tftpd

L'option  indique que le serveur doit écouter lui-même sur le réseau, ce qui vous évite d'utiliser inetd. L'option  demande au serveur de fournir plus de messages dans son journal. L'option  spécifie le répertoire racine du serveur.

Démarrer le serveur TFTP
Pour démarrer le serveur tftp tapez :

Ce script va lancer le serveur TFTP avec les options spécifiées dans le fichier. Si voulez que le serveur TFTP soit lancé au démarrage de votre machine, faites :

À propos de PXELINUX
Cette partie ne vous intéresse pas si vous utilisez Etherboot. PXELINUX est l'équivalent réseau de LILO ou de GRUB, il est envoyé par le serveur TFTP. Il s'agit en fait d'un petit bout de code qui indique au client où trouver son noyau et son système de fichiers initial et qui permet de passer quelques options au noyau.

Avant de commencer
Vous avez besoin du fichier pxelinux.0 fourni avec le paquet SYSLINUX de H. Peter Anvin. Vous pouvez l'installer comme ceci :

Configurer PXELINUX
Avant de démarrer votre serveur TFTP, vous devez installer pxelinux. Copiez le binaire de pxelinux dans comme ceci :

Cela va créer un fichier de configuration par défaut pour syslinux. Le binaire cherche son fichier de configuration dans le répertoire. Il commence par chercher un fichier dont le nom est l'adresse IP attribuée au nœud écrite en hexadécimal. Si un tel fichier n'existe pas, enlève successivement le chiffre le plus à droite et regarde si un fichier correspondant existe jusqu'à ce qu'il trouve un fichier ou qu'il n'y ait plus de chiffre. Les version 2.05 et ultérieures de syslinux recherchent d'abord un fichier nommé d'après l'adresse MAC. Si ce fichier n'existe pas, la routine de recherche présentée ci-haut est effectuée. En dernier recours, le fichier est utilisé.

Recherche du fichier de configuration dans pxelinux.cfg/

Démarrons avec le fichier file:

Exemple de pxelinux.cfg/default

L'option  indique le chemin vers le noyau. L'option  fournit les paramètres à passer au noyau. Puisque nous avons compilé le noyau avec l'option, nous indiquons ici le chemin vers notre système de fichiers racine (root via NFS). La première adresse IP est l'adresse du nœud maître et la seconde est le nom du répertoire que nous avons créé dans  pour  contenir le système de fichiers de l'esclave.

À propos d'Etherboot
Le système Etherboot permet de démarrer à partir d'images stockées sur un serveur TFTP. Comme PXE, ceci est similaire à LILO ou GRUB. L'utilitaire  permet de créer différentes images avec des options différentes.

Avant de commencer
Vous devez d'abord installer l'utilitaire    qui permet de marquer des images de noyaux qui seront démarrés via le système Etherboot. Cet outil créera une image de votre noyau original et la configurera comme décrit ci-dessous.

Configurer Etherboot
Voyons comment configurer une simple image qui permet de démarrer via Etherboot. Comme le serveur DHCP définit la racine utilisée par les clients dans l'option « option root-path » dans le fichier dhcp.conf, il n'est pas nécessaire de la spécifier ici. Veuillez consulter la page man de mknbi pour plus d'informations.

Pour créer une image ELF sur laquelle démarrer qui sait passer les paramètres DHCP et la racine à utiliser au noyau tout en forçant le noyau à demander une adresse IP via DHCP, faites :

Dépanner le processus de démarrage sur réseau
Il y a plusieurs façons de résoudre les problèmes de démarrage via le réseau. Un outil fréquemment utilisé est. Pour l'installer, faites :

Maintenant, vous pouvez surveiller le trafic réseau et vous assurer que votre serveur et les clients se parlent. En cas de problèmes, vous devriez d'abord vérifier que vos machines sont physiquement connectées et que les câbles ne sont pas endommagés. Vous devriez aussi vous assurer que le trafic n'est pas bloqué par un pare-feu. Pour visualiser le dialogue entre deux ordinateurs, faites :

Vous pouvez aussi surveiller un port particulier avec, celui du serveur TFTP par exemple :

Une erreur fréquente est « PXE-E32: TFTP open time-out ». Elle est généralement causée par un pare-feu. Si vous utilisez, vous devriez aussi vérifier que les fichiers  et  soient correctement configurés. Les nœuds esclaves doivent avoir accès au maître.

À propos du serveur NFS
NFS signifie « Network File System » (Système de fichiers réseau). Un serveur NFS fournit un système de fichiers via le réseau. Cette partie peut être reconfigurée plus tard, mais nous voulons d'abord un système de base permettant au nœud esclave de démarrer.

À propos de Portmapper
Certains services ne sont pas toujours liés au même port, mais utilisent le système d'appel de fonction à distance (les RPC en anglais pour « Remote Procedure Call »). Dans ce cas, lorsqu'un service démarre, il écoute sur un port disponible choisi au hasard et il s'inscrit dans la liste de tels services tenue par le programme portmapper. NFS utilise ce mécanisme et a besoin que le programme portmapper soit actif avant de démarrer.

Avant de commencer
Pour pouvoir activer le serveur NFS, vous devez avoir compilé le noyau avec les options adéquates. Pour vérifier que cela a bien été fait, tapez :

L'affichage devrait ressembler à ceci :

Installer le serveur NFS
Le paquet NFS est installé via Portage comme ceci :

Ce paquet comprend le programme portmapper, le serveur nfs et les utilitaires pour les clients NFS. Les dépendances lors de l'initialisation sont automatiquement résolues.

Configurer le serveur NFS
There are three major configuration files you will have to edit:

Nfs configuration files

The file specifies how, to who and what to export through NFS. The slave's fstab will be altered so that it can mount the NFS filesystems that the master is exporting.

A typical for the master should look something like this:

Sample master /etc/exports

The first field indicates the directory to be exported and the next field indicates to who and how. This field can be divided in two parts: who should be allowed to mount that particular directory, and what the mounting client can do to the filesystem:  for read only,   for read/write;   and   are important for diskless clients that are writing to the disk, so that they don't get "squashed" when making I/O requests. The slave's fstab file,, should look like this:

Sample slave fstab

In this example, master is just the hostname of the master but it could easily be the IP of the master. The first field indicates the directory to be mounted and the second field indicates where. The third field describes the filesystem and should be NFS for any NFS mounted directory. The fourth field indicates various options that will be used in the mounting process (see mount(1) for info on mount options). Some people have had difficulties with soft mount points so we made them all hard, but you should look into various options to make your cluster more efficient.

The last file you should edit is which describes a few options for nfs when it is initialised and looks like this:

Sample master /etc/conf.d/nfs

You should change  to the number of diskless nodes on the network.

Starting the NFS server
You should start the nfs server with its init script located in by typing:

If you want to this script to start when the system boots simply type:

Copy the missing files
We will now make the slave's file system in sync with the master's and provide the necessary binaries while still preserving slave specific files.

Configure diskless networking
In order to prevent the networking initscript from killing the connection to your NFS server, you will need to add an option to on your diskless client's filesystem.

Editing /etc/conf.d/net

Initialisation scripts
You need as many init scripts under as you need services on your diskless nodes. It all depends on what you want your slaves to do.

Typical slave runlevels

Now is a good time to boot your slave and cross your fingers. It works? Congratulations, you are now the proud owner of (a) diskless node(s) :)

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Michael Andrews
 * Kristian Jerpetjoen
 * Sven Vermeulen
 * Xavier Neys