Page suivante Page précédente Table des matières

6. Bouter Linux sans l'installer ou Root on NFS et le Reverse ARP

Le but est de booter Linux sur zorg en installant seulement LOADLIN et un noyau Linux dans le système de fichiers Windows de zorg. On veut donc faire de zorg une machine Linux sans disque, l'arborescence étant importée en NFS à partir de sakapuss, c'est que que l'on appelle ROOT on NFS. Pour ce faire, on pourait très bien spécifier au noyau Linux lors du boot via LOADLIN les adresses IP de zorg et sakapuss, mais nous avons voulu faire mieux ! Lors du boot, le noyau Linux de zorg ne connait ni l'adresse IP de zorg ni celle de sakapuss. Cependant, sakapuss connait l'adresse ethernet de zorg, c'est alors qu'intervient le RARP.

Avec RARP et ROOT on NFS, aucune information n'est nécessaire à zorg pour booter Linux. Un noyau Linux adéquat suffit.

zorg ne possède donc que LOADLIN et un noyau Linux spécial. Ce noyau contient, en dur, le pilote de la carte réseau, le support du système de fichiers NFS, et le support du protocole RARP pour ROOT on NFS. Le support EXT2 est inutile car zorg n'a pas de partition Linux ! La ligne de commande LOADLIN sera


loadlin zorgkern root=/dev/nfs

zorgkern étant le noyau Linux de zorg. Ce noyau tentera d'obtenir l'adresse IP de zorg en lançant une requete RARP contenant son adresse ethernet 00:00:e8:dd:6f:b8 sur le réseau ethernet. Le serveur sakapuss répondra à cette requete RARP en renvoyant à zorg une adresse IP 192.168.1.2 en l'occurence. Le noyau Linux de zorg connaissant à présent son adresse IP 192.168.1.2 et celle du serveur sakapuss 192.168.1.1 qui lui a répondu, il tentera de monter la racine en NFS à partir du répertoire /tftpboot/192.168.1.2 de sakapuss.

En fait, le serveur sakapuss possède une table RARP dans laquelle figure l'adresse ethernet de la carte réseau de zorg associée à l'adresse IP choisie pour zorg (ici 192.168.1.2). Le support des tables RARP doit donc être activé (en dur ou en module) dans le noyau de sakapuss. Il faut aussi que sakapuss possède un répertoire /tftpboot/192.168.1.2/ exporté en NFS contenant une racine Linux minimale pour zorg. Ne vous y trompez pas, ce répertoire sera exporté en NFS et pas en TFTP. En fait, on pourait spécifier un autre répertoire à monter au noyau Linux de zorg mais à quoi bon, ce réglage par défaut fonctionne parfaitement.

6.1 Que faut-il faire sur le serveur sakapuss ?

6.2 Le noyau de sakapuss

Il faut activer le support RARP lors de la compilation du noyau, dans la section Networking Options. On peut sans problème le mettre en module. Cela revient à ajouter la ligne


CONFIG_INET_RARP=m

dans de ficher de configuration du noyau.

Ensuite il faut ajouter la commande


/sbin/rarp -s 192.168.1.2 00:00:e8:dd:6f:b8

dans un fichier de démarrage comme /etc/rc.d/rc.local par exemple.

On associe ainsi l'adresse IP 192.168.1.2 à l'adresse ethernet 00:00:e8:dd:6f:b8 de la carte réseau de zorg. On peut vérifier la table RARP en utilisant la commande rarp -a.

6.3 Élaboration du système de fichiers /tftpboot/192.168.1.2 sur sakapuss

Il faut

6.4 Compilation du noyau de zorg sur sakapuss

Le noyau à compiler doit bien entendu contenir le pilote de la carte ethernet de zorg en dur (c'est à dire pas en module). Il faut de plus activer en dur le support du système de fichiers NFS et le support du ROOT-on-NFS via RARP dans la section File Systems, à ne surtout pas confondre avec le support du RARP pour le serveur ! Cela revient à inserer les lignes


CONFIG_ROOT_NFS=y
# CONFIG_RNFS_BOOTP is not set
CONFIG_RNFS_RARP=y

dans de fichier de configuration du noyau.

6.5 Que faut-il faire sur le client zorg


Page suivante Page précédente Table des matières