<!--      Traduction : Eric DUMAS         -- >
<!-- dumas@freenix.fr, dumas@linux.eu.org -- >
<!--     http://www.alienor.fr/~dumas     -- >

<!doctype linuxdoc system>

<article>

<title>NFS-Root Mini-HowTo
<author>par Andreas Kostyrka, <tt>andreas@ag.or.at</tt>
<date>Version 8, 8 Août 1997

<abstract>
(Adaptation française par Eric Dumas <tt>dumas@Linux.EU.Org</tt>).

	Ce mini HowTo présente comment configurer une station 
<bf>Linux</bf> "sans" disque, qui monte sa racine
via NFS. La dernière version de ce mini HowTo peut toujours être
trouvée et récupérée sur le site 
<tt>ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root</tt>,
ou sur n'importe quel miroir près de chez vous.

<sect>Copyright<p>

  &copy; 1996 Andreas Kostyrka (<tt>e9207884@student.tuwien.ac.at</tt> ou
  <tt>andreas@ag.or.at</tt>)
   
  Sauf indication contraire, les documents HowTo <bf>Linux</bf> sont 
  copyrightés
  par leurs auteurs respectifs. Les documents HowTo <bf>Linux</bf> peuvent être
  reproduits et diffusés d'une manière complète ou partielle, sur n'importe
  quel support, qu'il soit physique ou électronique, du moment où ce
  copyright se trouve sur toutes les copies. Les diffusions commerciales 
  sont autorisées et même encouragées. Toutefois, l'auteur aimerait
  bien être averti de ce genre de distributions.

  Toute traduction, travail dérivé, ou travaux plus généraux incluant
  n'importe quel document HowTo <bf>Linux</bf> doit être protégé par 
  ce copyright. De cette manière, vous ne pouvez pas créer un document
  dérivant d'un HowTo et imposer des restrictions supplémentaires sur sa
  distribution. Des exceptions à ces règles peuvent être  accordées
  sous certaines conditions. Contactez dans ce cas le coordinateur
  des HowTo <bf>Linux</bf> à l'adresse qui vous sera donnée à la fin de cette
  section.

  En résumé, nous souhaitons promouvoir la diffusion de ces informations
  à travers le maximum de moyens de communications. Toutefois, nous 
  souhaitons absolument conserver un copyright sur ces documents, et
  nous voulons être consultés pour toute redistribution des HowTos.

  Si vous avez des questions, contactez alors <em>Andreas Kostyrka</em>
  <tt>andreas@ag.or.at</tt>, l'auteur de ce mini-HOWTO, ou <em>Greg
  Hankins</em>, le coordinateur des HowTo pour <bf>Linux</bf>, 
  <tt>gregh@sunsite.unc.edu</tt> par courrier électronique.

  <sect1>Contributeurs<p>
 
  <itemize>
  <item> <em>Avery Pennarun</em> (<tt>apenwarr@foxnet.net</tt>) :
           comment amorcer la machine sans LILO ;
  <item>Ofer Maor (<tt>ofer@hadar.co.il</tt>) : a écrit un mini-HowTo bien
  meilleur pour configurer les stations de travail ne possédant pas de disque ;
  <item> Christian Leutloff (<tt>leutoff@sundancer.tng.oche.de</tt>) : informations
    sur netboot.
  </itemize>

  <sect>Présentation générale<p>

  En général, on peut rencontrer les problèmes suivants concernant 
  une station de travail :
  <itemize>
  <item>elle doit récupérer sa propre adresse IP, et si besoin,
  également le reste de la configuration Éthernet ;

  <item>elle doit connaître le serveur NFS et le chemin de montage
  de sa partition racine.
  </itemize>

  L'implémentation actuelle de <em>NFSROOT</em> dans le
  noyau <bf>Linux</bf> (à partir de la version 1.3.7x) autorise
  les <sq>solutions</sq> suivantes :
  <itemize>
  <item>l'adresse IP peut être trouvée par RARP, ou la configuration 
    Éthernet complète peut être passée au noyau via des paramètres 
    à LILO ou LOADLIN ;

  <item>le chemin NFS pour monter la partition peut être passé au noyau
   via des paramètres. Si cela n'est pas fait, alors le noyau suppose que
   le serveur RARP est également le serveur NFS, et utilise le 
   chemin par défaut (le chemin par défaut est codé en dur dans le 
   noyau : <tt>/tftpboot/</tt><em>adresse-IP de la machine</em>.).

   <item>la configuration du client peut être trouvée par BOOTP.
  </itemize>

  Avant de commencer à configurer un environnement sans disque, vous
  devez décider si vous allez amorcer la machine en utilisant LILO ou 
  LOADLIN. L'avantage de les utiliser est la souplesse. L'inconvénient est
  la rapidité. Amorcer un noyau <bf>Linux</bf> sans LILO est plus rapide. 

<sect>Configurer le serveur<p>

  <sect1>Compiler les noyaux<p>

  Inclure le support RARP dans le noyau du serveur est sûrement une très 
  bonne idée. Vous devez absolument l'inclure si vous allez amorcer sans 
  donner des paramètres au noyau. D'un autre côté, cela ne vous aidera
  pas vraiment si le client n'est pas sur le même sous réseau que le serveur.

  Le noyau de la station de travail doit posséder les éléments
  suivant au minimum :
  <itemize>
  <item>système de fichiers NFS inclu (ce n'est pas la peine de compiler 
    le système de fichiers ext2 : un module suffira) ;

  <item> <sq>Root on NFS</sq> doit être activé ;

  <item>le gestionnaire Éthernet pour la carte réseau de la station doit être
     inclue dans le noyau ;
  <item>en fonction de vos besoin, il est possible que vous ayez à inclure 
   les protocoles RARP ou BOOTBP pour Nfs-Root (voir les questions posées lors
   de la configuration du noyau après avoir activé NFS).
  </itemize>

  Si la station de travail sera amorcée sans aucun paramètre passé au
  noyau, vous devez également fixer le périphérique de la <em>racine</em> à 
  <tt>0:255</tt>. Pour faire cela, il suffit de créer un fichier 
  de périphérique avec : 

  <tt>mknod /dev/nfsroot b 0 255</tt>.

  Après avoir crée un tel fichier de périphérique, vous pouvez
  fixer le périphérique racine pour l'image du noyau avec :

  <tt>rdev</tt><em>image-noyau</em> <tt>/dev/nfsroot</tt>.

  <sect1>Création du système de fichiers racine<p>

  <sect2>Copier le système de fichiers<p>

Attention : bien ces instructions peuvent très bien fonctionner chez vous,
elles ne sont peut être pas très bien adaptées dans un environnement
de production. Consultez le mini-HowTo NFS-Root-Client de Ofer Maor 
(<tt>ofer@hadar.co.il</tt>) pour une meilleur solution.

  Après avoir décidé où placer la racine de l'arborescence, 
   il suffit de la créer avec par exemple :

  <tt>mkdir -p </tt><em>répertoire</em>

   et 

  <tt>tar cClf / - | tar xpCf </tt><em>répertoire</em> <tt>-</tt>.

  Si votre noyau s'amorce sans LILO, alors la racine 
  doit être <tt>/tftpboot/</tt><em>adresse-IP</em>. Si cela
  ne vous plait pas, il suffit de le changer dans le fichier Makefile
  dans les sources du noyau. Recherchez et modifiez la ligne 
  <tt>NFS_ROOT = -DNFS_ROOT</tt>. Si vous modifiez cela, vous devrez 
  alors recompiler le noyau.

  <sect2>Changer la racine du système de fichiers<p>
  
  Maintenant, supprimez les fichiers inutiles et vérifiez les 
  scripts situés dans <tt>/etc/rc.d</tt>. Certains points sont 
  vitaux : 
  <itemize>
     <item>il est important que le périphérique <tt>eth0</tt> soit configuré. 
     La station de travaille
     est lancée avec une interface <tt>eth0</tt> au moins configurée
     partiellement. Donner comme adresse IP à la station l'adresse
     du serveur n'est pas vraiment une chose vraiment intelligente 
     à faire (comme cela est arrivé une fois à l'auteur lors de ses
     essais...).

     <item> un autre point important concerne le fichier <tt>/etc/fstab</tt> de la 
      station de travail. Il doit être configuré pour 
      des systèmes de fichiers nfs.

      <item> ATTENTION : ne mélangez pas la racine du système de fichiers situé
      sur le serveur la racine du système de fichiers de la station 
      de travail (j'ai déjà patché un fichier <tt>rc.inet1</tt> sur le
      serveur et je me demandais pourquoi la station de travail ne fonctionnait
      toujours pas.).
  </itemize>

  <sect2>Exporter le système de fichiers<p>

  Exporter le répertoire racine de la station de travail. Consultez
  la page de manuel <tt>exports(5)</tt>. Vous devriez également
  relancer les démons <tt>nfsd</tt> et <tt>mountd</tt> après 
  ces modifications. Avec la RedHat, vous pouvez effectuer très simplement
  cette opération en lançant <tt>/etc/rc.d/init.d/nfs stop</tt>
  puis <tt>/etc/rc.d/init.d/nfs start</tt>.

  <sect2>Configuration RARP<p>

  Configurer le serveur RARP quelque part sur le réseau. Si vous 
  amorcez sans un paramètre <em>nfsroot</em>, le serveur 
  RARP doit également être un serveur NFS. En principe,
  ce sera le cas. Pour cela, vous devrez utiliser un noyau possédant
  le support RARP.

  Pour réaliser cette opération, lancez (et insérez-le quelque part 
  dans un fichier <tt>/etc/rc.d</tt> du serveur !) :

  <tt>/sbin/rarp -s </tt><em>adresse-ip adresse-matériel</em>

   où 
   <itemize>
   <item> <em>adresse-ip</em> : est l'adresse IP de la station de travail ;
   <item> <em>adresse-matériel</em> : est l'adresse Éthernet de la carte
       réseau de la station de travail.
   </itemize>
  Par exemple : <tt>/sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12</tt>

  Vous pouvez également utiliser un nom symbolique à la place de l'adresse
  IP, du moment où le serveur est capable de trouver l'adresse IP 
  (fichier <tt>/etc/hosts</tt> ou résolution par le DNS).

  <sect2>Configuration de BOOTP<p>

 Pour configurer BOOTP, vous devrez éditer le fichier <tt>/etc/bootptab</tt>.
Consultez les pages de manuel <em>bootpd(8)</em> et <em>bootptab(5)</em>.

  <sect2>Trouver les adresses matérielles<p>

	Je ne connais pas l'adresse de la carte ! Comment la trouver ?

  <itemize>  
  <item> amorcez avec la disquette de boot, et regardez la ligne où
     votre carte réseau est identifiée. Elle contient normalement 
     six octets en hexadécimal, qui devraient normalement correspondre
     à l'adresse de la carte.
  <item> amorcez la station avec un système d'exploitation qui 
     utilise TCP/IP. Ensuite, lancez un <tt>ping</tt> depuis le serveur
     sur la station. Regardez enfin le cache ARP en exécutant 
     <tt>/sbin/arp -a</tt>.
  </itemize>

  <sect>Amorcer la station de travail<p>

  <sect1>Utiliser une ROM bootable<p>

  Comme je ne l'ai pas utilisé par moi-même, je ne peut donc
vous donner que les conseils suivants (merci à Christian Leutloff,
<tt>leutloff@sundancer.tng.oche.de</tt>).
   <itemize>
   <item>utiliser des bootroms <sq>normale</sq> ;
   <item>utiliser le paquetage <tt>netboot</tt> écrit par Gero Kuhlmann,
   et qui est disponibles pour Linux, avec des informations supplémentaires.
   netboot est récupérable sur les miroirs Linux, ou dans le paquetage 
   de la Debian (<tt>netboot-0.4</tt>).
   <item>lire attentivement la documentation fournie avec votre bootrom ;
   <item>vous devrez probablement à activer le démon <tt>tftpd</tt> sur votre
   serveur, mais cela dépend un peu de la manière dont votre bootrom charge
   le noyau ;
   <item> toute information concernant les vendeurs de bootrom pour Linux sont
    les bienvenues,
    étant donné que tout le monde n'a pas forcément accès à un grossiste en prom
    (tout spécialement en Europe, puisque c'est là où je suis) 
   </itemize>

  <sect1>Utiliser simplement une disquette<p>

  Si vous avez exporté la racine du système de fichier avec un nom correcte
  et que votre serveur NFS est également le serveur RARP (ce qui implique
  que les deux machines soient sur le même sous-réseau), alors il suffit 
  tout simplement d'amorcer la machine en utilisant un noyau qui aura été
  copié sur la disquette (par exemple avec <tt>cat</tt>). Vous devez
  fixer le périphérique racine dans le noyau à 0:255. Cela suppose au préalable
  que le répertoire racine sur le serveur soit <tt>/tftpboot/IP-Address</tt> (cette
  valeur peut être modifée en recompilant le noyay).

  <sect1>Utiliser un <em>bootloader</em> et RARP<p>

  Donnez au noyau tous les paramètres nécessaire lorsque vous souhaitez  
  amorcer la machine, et ajoutez :

  <tt>nfsroot=</tt><em>adresse-ip-serveur</em><tt>:</tt><em>/chemin d'accès</em>

  où <em>adresse-ip-serveur</em> est l'adresse IP du serveur NFS et 
  <em>/chemin d'accès</em> est le chemin d'accès au répertoire racine.

  Quelques astuces :
  <itemize>
  <item> lorsque vous utilisez LILO, pensez à utiliser la caractéristique
     <sq>lock</sq>. Tapez une seule fois correctement tous les paramètres et
     ajoutez <sq>lock</sq>. La prochaine fois que vous amorcerez la machine,
     LILO lancera un timeout directement et amorcera la machine sans plus 
     attendre.

  <item> lorsque vous générez une disquette d'amorçage spécifique à une 
   station, vous pouvez également utiliser l'option  <tt>append=</tt>
   dans le fichier <tt>lilo.conf</tt>.
  </itemize>

  <sect1>Utiliser un <em>bootloader</em> sans RARP<p>

  En plus de <tt>nfsroot</tt>, il est nécessaire de donner en argument
  au noyau :

  <tt>nfsaddrs=</tt><em>wst-IP</em><tt>:</tt><em>srv-IP</em><tt>:</tt>
  <em>gw-IP</em><tt>:</tt><em>netm-IP</em><tt>:</tt><em>nommachine</em>

   Le noyau va alors configurer <tt>eth0</tt> avec les paramètres 
   donnés :
   <itemize>
   <item>wst-IP : adresse IP de la machine ;
   <item>srv-IP : adresse IP du serveur NFS ;
   <item>gw-IP  : adresse IP de la passerelle ; 
   <item>netm-IP : masque réseau ;
   <item>nommachine : nom de la machine.
   </itemize>

  <sect>Problèmes connus<p>

<sect1>/sbin/init ne se lance pas<p>

Un problème fréquent avec <tt>/sbin/init</tt> est que certaines distributions
récentes sont fournies avec une version du programme <tt>init</tt> 
dynamiquement lié. Donc, vous devez fournir une configuration
correcte concernant le répertoire <tt>/lib</tt> au client. Une solution
assez simple consiste à remplacer /sbin/init (pour le client) 
par un programme statiquement lié <sq>Hello World</sq>. De cette manière,
vous pouvez déterminer si c'est bien la cause du problème, ou bien
un problème plus grave.

<sect1>Problèmes avec le répertoire /dev<p>

Lors de l'amorçage de la machine, si vous obtenez tout un tas de messages
d'erreurs concernant les ttys, vous devriez alors lancer un 
<tt>MAKEDEV</tt> sur le client dans le répertoire <tt>/dev</tt>.
Certaines rumeurs font part que cela ne fonctionne pas avec certains
serveurs qui utilisent des numéros de périphériques codés sur 64 bits.
Contactez-moi si vous avez ce genre de problème. Une solution possible
consiste à créer un petit disque mapé en méoire (ram disc) contenant 
le répertoire <tt>/dev</tt> et de réinstaller les i-noeuds des périphériques
à chaque fois.

  <sect>Pour plus de renseignements...<p>

<itemize>
<item>il existe un client <tt>BOOTP</tt> : 
<em>ftp://sunsite.unc.edu/system/Network/admin/bootpc.v045.tgz</em>.

Avec <tt>initrd</tt> (inclus dans Linux 2.0), cela devrait fonctionner
assez simplement pour les stations sans disque. Ce démon est en fait
un choix judicieux surtout si vous avez besoin d'une configuration
particulière.

<item>Pour les amorçages basés sur bootpd, cela n'est pas vraiment nécessaire
puisque Linux 2.0 contient également l'option d'utiliser BOOTP au lieu de
RARP. Pour être plus précis, vous pouvez inclure les deux options
dans le noyau lors de sa configuration, et la réponse la plus rapide
sera celle choisie.

<item>dans le répertoire <tt>Documentation</tt> des sources du noyau, vous pourrez y trouver
un fichier documentant les systèmes NFS-Root ;

<item>il existe un patch quelque part qui permet de swapper <em>via</em> NFS.
On me l'a envoyé (durant une période très surchargée), mais j'ai comme qui 
dirait perdu le mail...
</itemize>

Vous le trouverez probablement sur le site <tt>http://www.linuxhq.com/</tt<
dans la partie <sq>patches non-officiels</sq>.

Ma clef PGP publique peut être consultée en effectuant un finger
à l'adresse <tt>andreas@ag.or.at</tt>. Il s'agit de :
<verb>
F1 F7 43 D5 07 C4 6C 87  BF 6B 33 A2 2C EE 5A F9
</verb>

</article>
