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.
/tftpboot/192.168.1.2
qui servira de racine pour le système de fichiers de
zorg.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
Ensuite il faut ajouter la commande
/sbin/rarp -s 192.168.1.2 00:00:e8:dd:6f:b8
/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
.
Il faut
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
root=/dev/nfs
.