
                              NFS-Root Mini-HowTo

par Andreas Kostyrka, andreas@ag.or.at

   Version 8, 8 Aot 1997
     _________________________________________________________________

   _(Adaptation franaise par Eric Dumas dumas@Linux.EU.Org). Ce mini
   HowTo prsente comment configurer une station Linux "sans" disque, qui
   monte sa racine via NFS. La dernire version de ce mini HowTo peut
   toujours tre trouve et rcupre sur le site
   ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root, ou sur
   n'importe quel miroir prs de chez vous._
     _________________________________________________________________

1. Copyright

    1996 Andreas Kostyrka (e9207884@student.tuwien.ac.at ou
   andreas@ag.or.at)

   Sauf indication contraire, les documents HowTo _Linux_ sont
   copyrights par leurs auteurs respectifs. Les documents HowTo _Linux_
   peuvent tre reproduits et diffuss d'une manire complte 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 autorises et mme
   encourages. Toutefois, l'auteur aimerait bien tre averti de ce genre
   de distributions.

   Toute traduction, travail driv, ou travaux plus gnraux incluant
   n'importe quel document HowTo _Linux_ doit tre protg par ce
   copyright. De cette manire, vous ne pouvez pas crer un document
   drivant d'un HowTo et imposer des restrictions supplmentaires sur sa
   distribution. Des exceptions  ces rgles peuvent tre accordes sous
   certaines conditions. Contactez dans ce cas le coordinateur des HowTo
   _Linux_  l'adresse qui vous sera donne  la fin de cette section.

   En rsum, 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 consults pour toute redistribution des HowTos.

   Si vous avez des questions, contactez alors _Andreas Kostyrka_
   andreas@ag.or.at, l'auteur de ce mini-HOWTO, ou _Greg Hankins_, le
   coordinateur des HowTo pour _Linux_, gregh@sunsite.unc.edu par
   courrier lectronique.

1.1 Contributeurs

     * _Avery Pennarun_ (apenwarr@foxnet.net) : comment amorcer la
       machine sans LILO ;
     * Ofer Maor (ofer@hadar.co.il) : a crit un mini-HowTo bien meilleur
       pour configurer les stations de travail ne possdant pas de disque
       ;
     * Christian Leutloff (leutoff@sundancer.tng.oche.de) : informations
       sur netboot.

2. Prsentation gnrale

   En gnral, on peut rencontrer les problmes suivants concernant une
   station de travail :
     * elle doit rcuprer sa propre adresse IP, et si besoin, galement
       le reste de la configuration thernet ;
     * elle doit connatre le serveur NFS et le chemin de montage de sa
       partition racine.

   L'implmentation actuelle de _NFSROOT_ dans le noyau _Linux_ ( partir
   de la version 1.3.7x) autorise les "solutions" suivantes :
     * l'adresse IP peut tre trouve par RARP, ou la configuration
       thernet complte peut tre passe au noyau via des paramtres 
       LILO ou LOADLIN ;
     * le chemin NFS pour monter la partition peut tre pass au noyau
       via des paramtres. Si cela n'est pas fait, alors le noyau suppose
       que le serveur RARP est galement le serveur NFS, et utilise le
       chemin par dfaut (le chemin par dfaut est cod en dur dans le
       noyau : /tftpboot/_adresse-IP de la machine_.).
     * la configuration du client peut tre trouve par BOOTP.

   Avant de commencer  configurer un environnement sans disque, vous
   devez dcider si vous allez amorcer la machine en utilisant LILO ou
   LOADLIN. L'avantage de les utiliser est la souplesse. L'inconvnient
   est la rapidit. Amorcer un noyau _Linux_ sans LILO est plus rapide.

3. Configurer le serveur

3.1 Compiler les noyaux

   Inclure le support RARP dans le noyau du serveur est srement une trs
   bonne ide. Vous devez absolument l'inclure si vous allez amorcer sans
   donner des paramtres au noyau. D'un autre ct, cela ne vous aidera
   pas vraiment si le client n'est pas sur le mme sous rseau que le
   serveur.

   Le noyau de la station de travail doit possder les lments suivant
   au minimum :
     * systme de fichiers NFS inclu (ce n'est pas la peine de compiler
       le systme de fichiers ext2 : un module suffira) ;
     * "Root on NFS" doit tre activ ;
     * le gestionnaire thernet pour la carte rseau de la station doit
       tre inclue dans le noyau ;
     * en fonction de vos besoin, il est possible que vous ayez  inclure
       les protocoles RARP ou BOOTBP pour Nfs-Root (voir les questions
       poses lors de la configuration du noyau aprs avoir activ NFS).

   Si la station de travail sera amorce sans aucun paramtre pass au
   noyau, vous devez galement fixer le priphrique de la _racine_ 
   0:255. Pour faire cela, il suffit de crer un fichier de priphrique
   avec :

   mknod /dev/nfsroot b 0 255.

   Aprs avoir cre un tel fichier de priphrique, vous pouvez fixer le
   priphrique racine pour l'image du noyau avec :

   rdev_image-noyau_ /dev/nfsroot.

3.2 Cration du systme de fichiers racine

  Copier le systme de fichiers

   Attention : bien ces instructions peuvent trs bien fonctionner chez
   vous, elles ne sont peut tre pas trs bien adaptes dans un
   environnement de production. Consultez le mini-HowTo NFS-Root-Client
   de Ofer Maor (ofer@hadar.co.il) pour une meilleur solution.

   Aprs avoir dcid o placer la racine de l'arborescence, il suffit de
   la crer avec par exemple :

   mkdir -p _rpertoire_

   et

   tar cClf / - | tar xpCf _rpertoire_ -.

   Si votre noyau s'amorce sans LILO, alors la racine doit tre
   /tftpboot/_adresse-IP_. 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 NFS_ROOT = -DNFS_ROOT. Si vous modifiez cela,
   vous devrez alors recompiler le noyau.

  Changer la racine du systme de fichiers

   Maintenant, supprimez les fichiers inutiles et vrifiez les scripts
   situs dans /etc/rc.d. Certains points sont vitaux :
     * il est important que le priphrique eth0 soit configur. La
       station de travaille est lance avec une interface eth0 au moins
       configure 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...).
     * un autre point important concerne le fichier /etc/fstab de la
       station de travail. Il doit tre configur pour des systmes de
       fichiers nfs.
     * ATTENTION : ne mlangez pas la racine du systme de fichiers situ
       sur le serveur la racine du systme de fichiers de la station de
       travail (j'ai dj patch un fichier rc.inet1 sur le serveur et je
       me demandais pourquoi la station de travail ne fonctionnait
       toujours pas.).

  Exporter le systme de fichiers

   Exporter le rpertoire racine de la station de travail. Consultez la
   page de manuel exports(5). Vous devriez galement relancer les dmons
   nfsd et mountd aprs ces modifications. Avec la RedHat, vous pouvez
   effectuer trs simplement cette opration en lanant
   /etc/rc.d/init.d/nfs stop puis /etc/rc.d/init.d/nfs start.

  Configuration RARP

   Configurer le serveur RARP quelque part sur le rseau. Si vous amorcez
   sans un paramtre _nfsroot_, le serveur RARP doit galement tre un
   serveur NFS. En principe, ce sera le cas. Pour cela, vous devrez
   utiliser un noyau possdant le support RARP.

   Pour raliser cette opration, lancez (et insrez-le quelque part dans
   un fichier /etc/rc.d du serveur !) :

   /sbin/rarp -s _adresse-ip adresse-matriel_

   o
     * _adresse-ip_ : est l'adresse IP de la station de travail ;
     * _adresse-matriel_ : est l'adresse thernet de la carte rseau de
       la station de travail.

   Par exemple : /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

   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 /etc/hosts ou rsolution par le DNS).

  Configuration de BOOTP

   Pour configurer BOOTP, vous devrez diter le fichier /etc/bootptab.
   Consultez les pages de manuel _bootpd(8)_ et _bootptab(5)_.

  Trouver les adresses matrielles

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

     * amorcez avec la disquette de boot, et regardez la ligne o votre
       carte rseau est identifie. Elle contient normalement six octets
       en hexadcimal, qui devraient normalement correspondre  l'adresse
       de la carte.
     * amorcez la station avec un systme d'exploitation qui utilise
       TCP/IP. Ensuite, lancez un ping depuis le serveur sur la station.
       Regardez enfin le cache ARP en excutant /sbin/arp -a.

4. Amorcer la station de travail

4.1 Utiliser une ROM bootable

   Comme je ne l'ai pas utilis par moi-mme, je ne peut donc vous donner
   que les conseils suivants (merci  Christian Leutloff,
   leutloff@sundancer.tng.oche.de).
     * utiliser des bootroms "normale" ;
     * utiliser le paquetage netboot crit par Gero Kuhlmann, et qui est
       disponibles pour Linux, avec des informations supplmentaires.
       netboot est rcuprable sur les miroirs Linux, ou dans le
       paquetage de la Debian (netboot-0.4).
     * lire attentivement la documentation fournie avec votre bootrom ;
     * vous devrez probablement  activer le dmon tftpd sur votre
       serveur, mais cela dpend un peu de la manire dont votre bootrom
       charge le noyau ;
     * toute information concernant les vendeurs de bootrom pour Linux
       sont les bienvenues, tant donn que tout le monde n'a pas
       forcment accs  un grossiste en prom (tout spcialement en
       Europe, puisque c'est l o je suis)

4.2 Utiliser simplement une disquette

   Si vous avez export la racine du systme 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 mme sous-rseau),
   alors il suffit tout simplement d'amorcer la machine en utilisant un
   noyau qui aura t copi sur la disquette (par exemple avec cat). Vous
   devez fixer le priphrique racine dans le noyau  0:255. Cela suppose
   au pralable que le rpertoire racine sur le serveur soit
   /tftpboot/IP-Address (cette valeur peut tre modife en recompilant le
   noyay).

4.3 Utiliser un _bootloader_ et RARP

   Donnez au noyau tous les paramtres ncessaire lorsque vous souhaitez
   amorcer la machine, et ajoutez :

   nfsroot=_adresse-ip-serveur_:_/chemin d'accs_

   o _adresse-ip-serveur_ est l'adresse IP du serveur NFS et _/chemin
   d'accs_ est le chemin d'accs au rpertoire racine.

   Quelques astuces :
     * lorsque vous utilisez LILO, pensez  utiliser la caractristique
       "lock". Tapez une seule fois correctement tous les paramtres et
       ajoutez "lock". La prochaine fois que vous amorcerez la machine,
       LILO lancera un timeout directement et amorcera la machine sans
       plus attendre.
     * lorsque vous gnrez une disquette d'amorage spcifique  une
       station, vous pouvez galement utiliser l'option append= dans le
       fichier lilo.conf.

4.4 Utiliser un _bootloader_ sans RARP

   En plus de nfsroot, il est ncessaire de donner en argument au noyau :

   nfsaddrs=_wst-IP_:_srv-IP_: _gw-IP_:_netm-IP_:_nommachine_

   Le noyau va alors configurer eth0 avec les paramtres donns :
     * wst-IP : adresse IP de la machine ;
     * srv-IP : adresse IP du serveur NFS ;
     * gw-IP : adresse IP de la passerelle ;
     * netm-IP : masque rseau ;
     * nommachine : nom de la machine.

5. Problmes connus

5.1 /sbin/init ne se lance pas

   Un problme frquent avec /sbin/init est que certaines distributions
   rcentes sont fournies avec une version du programme init
   dynamiquement li. Donc, vous devez fournir une configuration correcte
   concernant le rpertoire /lib au client. Une solution assez simple
   consiste  remplacer /sbin/init (pour le client) par un programme
   statiquement li "Hello World". De cette manire, vous pouvez
   dterminer si c'est bien la cause du problme, ou bien un problme
   plus grave.

5.2 Problmes avec le rpertoire /dev

   Lors de l'amorage de la machine, si vous obtenez tout un tas de
   messages d'erreurs concernant les ttys, vous devriez alors lancer un
   MAKEDEV sur le client dans le rpertoire /dev. Certaines rumeurs font
   part que cela ne fonctionne pas avec certains serveurs qui utilisent
   des numros de priphriques cods sur 64 bits. Contactez-moi si vous
   avez ce genre de problme. Une solution possible consiste  crer un
   petit disque map en moire (ram disc) contenant le rpertoire /dev et
   de rinstaller les i-noeuds des priphriques  chaque fois.

6. Pour plus de renseignements...

     * il existe un client BOOTP :
       _ftp://sunsite.unc.edu/system/Network/admin/bootpc.v045.tgz_. Avec
       initrd (inclus dans Linux 2.0), cela devrait fonctionner assez
       simplement pour les stations sans disque. Ce dmon est en fait un
       choix judicieux surtout si vous avez besoin d'une configuration
       particulire.
     * Pour les amorages bass sur bootpd, cela n'est pas vraiment
       ncessaire puisque Linux 2.0 contient galement l'option
       d'utiliser BOOTP au lieu de RARP. Pour tre plus prcis, vous
       pouvez inclure les deux options dans le noyau lors de sa
       configuration, et la rponse la plus rapide sera celle choisie.
     * dans le rpertoire Documentation des sources du noyau, vous
       pourrez y trouver un fichier documentant les systmes NFS-Root ;
     * il existe un patch quelque part qui permet de swapper _via_ NFS.
       On me l'a envoy (durant une priode trs surcharge), mais j'ai
       comme qui dirait perdu le mail...

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

   Ma clef PGP publique peut tre consulte en effectuant un finger 
   l'adresse andreas@ag.or.at. Il s'agit de :
F1 F7 43 D5 07 C4 6C 87  BF 6B 33 A2 2C EE 5A F9
