  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1..  CCooppyyrriigghhtt


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

  Sauf indication contraire, les documents HHoowwttoo LLiinnuuxx sont copyrights
  par leurs auteurs respectifs. Les documents HHoowwttoo LLiinnuuxx 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 HHoowwttoo LLiinnuuxx 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 HHoowwttoo
  LLiinnuuxx  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 _O_f_e_r _M_a_o_r
  _(_o_f_e_r_@_h_a_d_a_r_._c_o_._i_l_), l'auteur de ce Mini-Howto, ou  _G_r_e_g _H_a_n_k_i_n_s, le
  coordinateur des Howto pour LLiinnuuxx, 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..11..  RReemmeerrcciieemmeennttss


  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2..  PPrrffaaccee


  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2..11..  PPrrsseennttaattiioonn GGnnrraallee


  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3..  CCrreerr llee rrppeerrttooiirree rraacciinnee dduu cclliieenntt



  33..11..  CCrraattiioonn ddee ll''aarrbboorreesscceennccee


  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3..22..  CCrraattiioonn dd''uunn ssyyssttmmee ddee ffiicchhiieerr mmiinniimmaall ppoouurr llee bboooott



  33..22..11..  CCrreerr llee rrppeerrttooiirree ddeevv..


  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.


  33..22..22..  CCooppiieerr lleess eexxccuuttaabblleess iinnddiissppeennssaabblleess..

  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 _(_r_c_._s_y_s_i_n_i_t _p_o_u_r _u_n_e _d_i_s_t_r_i_b_u_t_i_o_n _r_e_d_h_a_t_)
  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_. _: _s_u_r _c_e_r_t_a_i_n_e_s _d_i_s_t_r_i_b_u_t_i_o_n_s _(_e_n _p_a_r_t_i_c_u_l_i_e_r _R_e_d_H_a_t_) _c_e _s_o_n_t
  _l_e_s _f_i_c_h_i_e_r_s _/_l_i_b_/_l_i_b_t_e_r_m_c_a_p_* _q_u_'_i_l _f_a_u_t _r_e_c_o_p_i_e_r _ _l_a _p_l_a_c_e _d_e
  _/_l_i_b_/_l_i_b_c_u_r_s_e_s_._*  _s_e_l_o_n _l_a _f_a__o_n _d_o_n_t _s_o_n_t _c_o_m_p_i_l__s _l_e_s _e_x__c_u_t_a_b_l_e_s_.

  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 rraarrpp ou bboooottpp, 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 _(_o_u _r_c_._s_y_s_i_n_i_t
  _s_u_r _R_e_d_h_a_t_) 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.


  33..22..33..  LLee rrppeerrttooiirree vvaarr

  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.





  33..22..44..  LLee ccaass ddeess aauuttrreess rrppeerrttooiirreess


    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..33..  CCoonnssttrruuiirree llee rrppeerrttooiirree eettcc eett ccoonnffiigguurreerr llee cclliieenntt


  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.


  33..33..11..  MMeettttrree uunn ggrraanndd rrppeerrttooiirree eettcc

  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
  iiffccoonnffiigg et la rroouuttee 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t nnoonnffss. 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 _r_o, 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 ppaasssswwdd 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


  33..33..22..  CCrreerr llee rrppeerrttooiirree eettcc dduu cclliieenntt


  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
  nnaammeedd ou grce  eettcc//hhoossttss. 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3..44..  BBooootteerr llaa mmaacchhiinnee


  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4..  CCrreerr dd''aauuttrreess cclliieennttss

  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 configu
       ration logicielle eettcc//HHOOSSTTNNAAMMEE est correcte, la ligne de
       swap de fstab est correcte, les liens symboliques dev/mouse,
       dev/modem et /dev/cdrom sont corrects.







  Bonne Chance...









































