
                          NFS-Root-Client Mini-Howto

par Ofer Maor, ofer@hadar.co.il

   Version 4.1, le 02 Fvrier 1999
     _________________________________________________________________

   _(Adaptation franaise par Antoine Levavasseur levavass@efrei.fr, le 4
   mars 1999). L'objectif de ce mini-howto est d'expliquer comment crer
   l'arborescence racine d'un client pour le serveur qui gre des clients
   utilisant NFS-Root. La dernire version de ce mini Howto peut tre
   rcupre  : http://www.hcs.co.il/oferm/NFS-Root-Client/_
     _________________________________________________________________

1. Copyright

   (c) 1996 Ofer Maor (ofer@hadar.co.il)

   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 que 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 _Ofer Maor (
   ofer@hadar.co.il)_, l'auteur de ce Mini-Howto, ou _Greg Hankins_, le
   coordinateur des Howto pour _Linux_, gregh@sunsite.unc.edu par
   courrier lectronique ou au +1 404 853 9989.

   Si vous avez quelque chose  ajouter  ce Mini-Howto, envoyez par
   courrier lectronique  l'auteur (Ofer Maor ( ofer@hadar.co.il) vos
   informations. Toute information intressante sera apprcie.

1.1 Remerciements

   Je tiens  remercier l'auteur du Howto NFS-Root, Andreas Kostyrca (
   andreas@medman.ag.or.at). Son Mini-Howto m'a aid lors de mes premiers
   pas pour mettre en place un client avec le systme NFS-Root. Mon
   Mini-Howto ne cherche en aucun cas  remplacer ce travail, mais 
   l'amliorer grce  ma propre exprience.

   J'aimerais galement remercier Mark Kushinsky ( marc026@ibm.net)
   d'avoir relu et corriger les fautes de ce Howto, le rendant ainsi bien
   plus lisible.

2. Prface

   Ce Mini-Howto  t crit dans le but d'aider les gens qui veulent
   utiliser le montage par NFS-Root pour crer l'arborecence de leurs
   clients. Vous pourrez ainsi remarquer qu'il y a de nombreuses faon
   d'accomplir cela selon vos besoins et vos intentions. Si les clients
   sont individuels, et qu'ils ont tous leurs propres utilisateurs et
   administrateurs, il serai ncessaire de ne pas partager avec d'autres
   clients une partie significative des rpertoires. Dans le cas ou le
   client est destin  de multiples utilisateurs, et qu'ils sont tous
   administrs par la mme personne (par exemple les ordinateurs d'une
   cole), il faudrait partager le maximum de fichier afin de simplifier
   l'administration. Ce Howto, se concentre sur la deuxime possibilit.

2.1 Prsentation Gnrale

   Lorsque l'on construit le rpertoire racine d'un client, en essayant
   de nous limiter  la taille minimale, nous chercherons principalement
   quels fichiers nous pouvons partager ou monter  partir du serveur.
   Dans ce Howto, je recommendrai la configuration d'un client bas sur
   ma propre exprience. Mais avant de commencer, veuillez remarquer que
   :
     * Ce Mini-Howto n'explique pas comment effectuer le montage de
       partition par NFS-Root. Se rfrer au mini HOWTO NFS-Root si vous
       avez besoin de plus d'informations  ce sujet.
     * J'ai bas la configuration de la plupart de mes clients sur les
       montages et les liens symboliques. Bon nombre de ces liens
       symboliques peuvent tre remplacs par des liens durs. Chacun
       choisira selon ses prfrences personnelles. Mettre un lien dur 
       travers un fichier mont a ses avantages, mais peut prter 
       confusion. Un fichier ne sera pas effac tant que tous ses liens
       durs ne seront pas effacs. Ainsi, pour prvenir les cas ou vous
       mettez  jour un certain fichier, et que les liens durs
       rfrencent toujours l'ancienne version, vous devez tre trs
       attentifs et garder une trace de tous les liens que vous mettez.
     * Lorsque vous montez les informations  partir du serveur, il
       existe 2 possibilits. La premire (la plus courante), est de
       monter la totalit du rpertoire racine du serveur dans un
       rpertoire local, et de simplement changer le chemin ou mettre des
       liens vers les rpertoires correspondant. Personnellement, je
       n'aime pas monter la partition racine du serveur sur les clients.
       Ainsi, ce Howto suggre une faon de monter les rpertoires
       appropris du serveur aux endroits appropris du systme.
     * Ce Howto est bas sur mon exprience  construire les rpertoires
       clients sur la distribution Slackware 3.1. Certaines choses
       peuvent tre diffrentes (en particulier les fichiers rc.*), pour
       d'autres utilisateurs, cependant les concepts restent les mmes.

3. Crer le rpertoire racine du client

3.1 Cration de l'arborescence

   Tout d'abord, vous devez crer la structure des rpertoires elle-mme.
   J'ai cr tous mes clients dans le rpertoire /clients/hostname et je
   l'utilise pour tous les exemples suivants. Cela peut toutefois tre
   remplac par n'importe quoi d'autre. La premire tape, est donc de
   crer les rpertoires appropris sur la racine. Vous devez crer les
   rpertoires suivants :

bin, dev, etc, home, lib, mnt, proc, sbin, serveur, tmp, usr, var

   et tous les autres rpertoires que vous souhaitez avoir sur votre
   systme.

   Les rpertoires locaux proc et dev doivent tre distincts pour chaque
   machine alors que le reste des rpertoires peut tre soit en partie
   soit compltement partag avec les autres clients.

3.2 Cration d'un systme de fichier minimal pour le boot

  Crer le rpertoire dev.

   Bien que le rpertoire dev puisse tre partag, il est prfrable d'en
   crer un diffrent pour chaque client. Vous pouvez crer le rpertoire
   dev de votre client avec le script MAKEDEV appropri, cependant dans
   la plupart des cas, il est plus simple de le recopier  partir du
   serveur :

cp -a /dev /clients/hostname

   Vous devez garder  l'esprit que /dev/mouse, /dev/cdrom et /dev/modem
   sont des liens vers les priphriques courants, il faut donc s'assurer
   qu'ils sont correctement relis pour correspondre au matriel du
   client.

  Copier les excutables indispensables.

   Bien que nous montons tout  partir du serveur, il y a un minimum que
   vous devez recopier pour chaque client. Avant tout, vous avez besoin
   de "init", car votre systme ne sera pas capable de faire marcher quoi
   que ce soit avant de s'tre initialis (l'auteur l'a difficilement
   trouv ;-). Donc premirement, vous devez copier /sbin/init dans le
   rpertoire sbin de votre client ensuite, pour que le fichier rc.S
   puisse tre lanc, vous devez copier /bin/sh dans le rpertoire
   binaire de votre client. Ensuite, de manire  monter tout ce dont
   vous avez besoin, vous devez copier /sbin/mount dans le rpertoire
   sbin de votre client. C'est le minimum,  partir du moment ou la
   premire ligne de votre rc.S _(rc.sysinit pour une distribution
   redhat)_ est mount -av.

   Cependant, je recommande de copier quelques autres fichiers : update,
   ls, rm, cp et umount comme cela, vous aurez les outils minimum au cas
   ou le client  des problmes de montage. Si vous choisissez d'utiliser
   votre swap avant de monter la racine, vous devez galement copier
   l'excutable swapon.

   Bien que la plupart de ces excutables ont eu une dition des liens
   dynamique, vous devez aussi copier une petite partie de /lib :

cp -a /lib/ld.* /lib/libc.* /lib/libcurses.* /client/hostname/lib

   _N.d.T. : sur certaines distributions (en particulier RedHat) ce sont
   les fichiers /lib/libtermcap* qu'il faut recopier  la place de
   /lib/libcurses.* selon la faon dont sont compils les excutables._

   Mettre des liens durs vers les fichiers eux-mmes, au lieu de les
   copier, est une solution  considrer. Relisez mes commentaires  ce
   sujet dans la partie 2.1 de ce Howto.

   Veuillez remarquer que toutes les informations prcdentes supposent
   que le noyau ai obtenu tous les paramtres lors du boot. Si vous
   pensez utiliser _rarp_ ou _bootp_, vous aurez probablement besoin des
   fichiers qui leurs correspondent.

   Gnralement, vous aurez besoin du minimum de fichiers qui vous
   permettent de configurer le rseau et d'excuter rc.S _(ou rc.sysinit
   sur Redhat)_ jusqu'au moment ou est mont le reste du systme de
   fichier. Assurez-vous que vous avez vrifixie vos fichiers /etc/init
   et rc.S, vrifiez qu'il n'y a pas de "surprises" ou quoi que ce soit
   d'autre qui aurait besoin d'accder  d'autres fichiers, avant que le
   premier montage ait lieu. Si vous le faites toutefois, retrouvez ces
   fichiers, vous pouvez soit les recopier galement, soit enlever les
   parties correspondantes de vos fichiers init ou rc.S.

  Le rpertoire var

   Le rpertoire var, dans la plupart des cas, doit tre spar pour
   chaque client. Cependant, bon nombre des donnes peuvent tres
   partages. Crez dans le rpertoire /serveur, un rpertoire appel
   var. Nous recopierons le rpertoire var du serveur  cet endroit. Pour
   crer le rpertoire var local, tapez simplement :

cp -a /var /clients/hostname

   Maintenant, vous pouvez choisir ce que vous voulez sparer, et ce que
   vous voulez partager. Pour tout rpertoire/fichier que vous voulez
   partager, enlevez-le simplement du rpertoire var du client, et mettez
   un lien symbolique vers le rpertoire /serveur/var. Cependant, vous
   remarquerez que vous pouvez mettre un lien symbolique vers
   /serveur/var ou vers ../serveur/var mais surtout PAS vers
   /clients/hostname/serveur/varpuisque cela ne marchera plus lorsque la
   racine aura chang.

   Gnralement, je recommande de sparer /var/run, /var/lock, /var/spool
   et /var/log.

  Le cas des autres rpertoires

     * etc est dtaill dans la section suivante.
     * mnt et proc sont utiliss localement
     * usr et home sont simplement des points de montage
     * tmp est  votre bon choix. Vous pouvez crer un rpertoire
       diffrent pour chaque client, ou crer un rpertoire /clients/tmp,
       et le monter sur chaque client dans /tmp. Je recommande de fournir
       un rpertoire tmp pour chaque client

3.3 Construire le rpertoire etc et configurer le client

   Remarque - cette section traite de la faon de crer un rpertoire etc
   qui est principalement spar entre les clients. Si votre station
   diskless a des administrateurs systmes diffrents, il est prfrable
   de faire un rpertoire etc spar pour chaque client.

  Mettre un grand rpertoire etc

   Bien que nous sparions les rpertoires etc des clients, nous
   souhaitons toujours partager une bonne partie des fichiers de cet
   endroit. D'une faon gnrale, je pense que partager les fichiers de
   etc avec le rpertoire /etc du serveur est une mauvaise ide, et c'est
   pourquoi je recommande de crer un rpertoire /clients/etc, qui
   contiendra les informations dont les clients ont besoin. Pour
   commencer, recopier simplement le contenu de /etc du serveur vers le
   rpertoire /client/etc.

   Vous devrez ajouter  ce rpertoire tous les fichiers de configuration
   qui ne dpendent pas de la machine, par exemple motd, issue, etc. mais
   aucun de ceux dpendant du client (i.e. inittab ou fstab)

   Les changements les plus importants doivent tre faits dans le
   rpertoire rc.d. Premirement, vous devez changer rc.inet1 pour qu'il
   corresponde  votre paramtrage local. Je passe tous mes paramtres
   rseau au noyau avec LILO/Loadlin, c'est pourquoi j'ai enlev presque
   tout de mon fichier rc.inet1. La seule chose que j'ai laiss, est le
   _ifconfig_ et la _route_ vers l'entre localhost. Si vous utilisez rarp
   ou bootp, vous devez en tenir compte lors de la cration du fichier.

   Deuximement, vous devez diter le fichier rc.S. D'abord, enlever
   toutes les parties qui sont responsable d'une recherche d'erreur avec
   fsck, puisque fsck aura lieu alors que le serveur est dj dmarr.
   Ensuite, vous devez trouver la ligne ou est mont votre fstab. Cela
   doit ressembler  :

mount -avt nonfs

   Le _-t nonfs_. est jusque l normal puisque les client lancent en
   premier rc.S et seulement aprs rc.inet1 pour configurer l'Ethernet.
   Mais comme cette ligne ne va pas monter les partitions NFS, elle doit
   tre dtruite. Il faut ensuite la remplacer par un mount -av . Si vous
   avez besoin d'utiliser rarp/bootp pour configurer votre rseau, faites
   le dans rc.S (ou appelez le script appropri dans rc.S), avant de
   monter, et assurez vous que les rpertoires bin et sbin contiennent
   les fichiers ncessaires.

   Aprs que le mount -av ait t accompli, vous devez avoir un systme
   de fichier oprationnel. Crez un fstab gnrique, que vous pourrez
   recopier sur chaque client.

   Votre fstab doit ressembler  :

serveur:/clients/hostname    /               nfs     default  1 1
serveur:/bin                 /bin            nfs     default  1 1
serveur:/usr                 /usr            nfs     default  1 1
serveur:/sbin                /sbin           nfs     default  1 1
serveur:/home                /home           nfs     default  1 1
serveur:/lib                 /lib            nfs     default  1 1
serveur:/clients/etc         /serveur/etc    nfs     default  1 1
serveur:/clients/var         /serveur/var    nfs     default  1 1
none                         /proc           proc    default  1 1

   Veuillez remarquer, que le mot cl _default_ ne doit pas fonctionner
   avec toutes les versions de mount. Vous devrez alors le changer en
   _rw_ ou _ro_ ou enlever toute la partie _default 1 1_ .

   Assurez vous galement que sur votre serveur le /etc/exports ressemble
    :

/clients/hostname   hostname.domainname(rw,no_root_squash)
/clients/etc        hostname.domainname(ro,no_root_squash)
/clients/var        hostname.domainname(ro,no_root_squash)
/usr                hostname.domainname(ro,no_root_squash)
/sbin               hostname.domainname(ro,no_root_squash)
/bin                hostname.domainname(ro,no_root_squash)
/lib                hostname.domainname(ro,no_root_squash)
/home               hostname.domainname(rw,no_root_squash)

   Mise  part la premire ligne qui doit tre diffrente pour chaque
   client, les autres lignes peuvent tre remplaces par un masque pour
   s'appliquer  tout vos clients (comme pc*.domain - gardez  l'esprit,
   que * se substitue uniquement aux chanes de caractres ne contenant
   pas de point). Je propose de mettre la majorit des rpertoires en
   lecture seule _ro_, mais c'est  vous de choisir. Le no_root_squash
   assure que le super-utilisateur aura sur les clients les permissions
   correspondantes avec nfsd. Jetez un coup d'oeil au man exports(5). Si
   vous souhaitez que vos utilisateurs puissent utiliser _passwd_
   galement  partir des clients, assurez-vous que /etc ai les
   permissions rw et non ro. Toutefois faites comme vous le souhaitez.

   Vouz remarquerez aussi, en ce qui concerne le fichier rc.S que sur la
   Slackware, par dfaut, un fichier /etc/issue et /etc/motd sont crs 
   chaque excution. Cette fonction DOIT tre dsactive si ces fichiers
   sont monts en ro  partir du serveur, je recommande de les dsactiver
   dans tous les cas.

   Pour terminer, si vous voulez avoir une base d'utilisateurs commune 
   votre serveur et vos clients, vous pouvez choisir entre 1), utiliser
   NIS (lire le NIS-Howto), et ainsi, chaque client aura un /etc/passwd
   et /etc/group spar puisqu'il les recevra du serveur. 2) Dans la
   plupart des cas, un lien symbolique suffira. Pour cela, vous pourrez
   soit mettre un lien dur de /client/etc/passwd vers /etc/passwd, ou si
   vous prfrez un lien symbolique, reliant /etc/passwd vers
   /client/etc/passwd (et pas dans l'autre sens puisque le client ne
   monte pas le rpertoire etc du serveur). Faire de mme avec /etc/group

  Crer le rpertoire etc du client

   Gnralement, la plupart des fichiers du rpertoire etc du client
   doivent avoir des liens symboliques vers /serveur/etc. Toutefois,
   certains fichiers sont diffrents pour chaque machine, et certains
   doivent tre l lorsque le noyau est charg. Le minimum dont vous avez
   besoin dans le rpertoire etc est :

resolv.conf
hosts
inittab
rc.d/rc.S
fstab

   Puisque ces 5 fichiers peuvent tres identiques sur les clients, vous
   pouvez simplement les recopier ou mettre des liens durs. Cependant, il
   est judicieux de garder les fichiers fstab et rc.S diffrents pour
   chaque client. Vous devez galement sparer etc/HOSTAME pour chaque
   client. Personnellement, je recommande d'avoir les fichiers de rc.d
   distincts pour chaque client puisque la configuration et le matriel
   peuvent varier d'une machine  l'autre.

   Pour chaque client, ajouter dans la fstab la ligne swap approprie :

/dev/swap_partition                             swap     swap   default 1 1

   Pour le reste des fichiers de /etc du client, vous pouvez soit mettre
   des liens durs vers /clients/etc/* , ou mettre des liens symboliques
   vers /serveur/etc (qui est l'endroit o est mont /clients/etc).

   Assurez-vous que votre machine peut rsoudre correctement, soit par
   _named_ ou grce  _etc/hosts_. Ce n'est pas une mauvaise ide de
   garder l'adresse IP du serveur dans /etc/hosts, plutt que de compter
   sur la rsolution. Si vous comptez uniquement sur la rsolution de
   noms, un problme avec named empchera vos clients de booter.

3.4 Booter la machine

   Maintenant que vous avez fait tout ce qu'il faut pour dmarrer votre
   machine, croisez vos doigts et priez pour que tout marche comme il
   faut :-)

4. Crer d'autres clients

   Si vous avez suivi mes instructions jusqu'ici, cela devrait tre
   facile - changer de rpertoire vers /clients et tapez :

cp -a hostname1 hostname2

   et vrifiez bien les points suivants :

     Les fichiers rc.d/* correspondent au matriel et la configuration
     logicielle _etc/HOSTNAME_ est correcte, la ligne de swap de fstab
     est correcte, les liens symboliques dev/mouse, dev/modem et
     /dev/cdrom sont corrects.





Bonne Chance...
