  NFS-Root-Client Mini-Howto
  par Ofer Maor, ofer@hadar.co.il
  Version 4, le 1er juillet 1997

  (Adaptation francaise par Antoine Levavasseur levavass@efrei.fr, le 18
  septembre 1997).  L'objectif de ce mini-howto est d'expliquer  comment
  creer  l'arborescence  racine d'un client pour le serveur qui gere des
  clients utilisant NFS-Root. La derniere version de ce mini Howto  peut
  etre recuperee a l'URL: http://www.hadear.co.il/ofer/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 copyrightes
  par leurs auteurs respectifs. Les documents HHoowwttoo LLiinnuuxx  peuvent  etre
  reproduits  et  diffuses  d'une  maniere  complete  ou  partielle, sur
  n'importe quel support, qu'il soit physique ou electronique, du moment
  que  ce  copyright  se  trouve  sur  toutes les copies. Les diffusions
  commerciales sont autorisees et meme encouragees. Toutefois,  l'auteur
  aimerait bien etre averti de ce genre de distributions.

  Toute  traduction,  travail  derive, ou travaux plus generaux incluant
  n'importe  quel  document  HHoowwttoo  LLiinnuuxx  doit  etre  protege  par   ce
  copyright.  De  cette  maniere,  vous  ne pouvez pas creer un document
  derivant d'un Howto et imposer des restrictions supplementaires sur sa
  distribution.  Des exceptions a ces regles peuvent etre accordees sous
  certaines conditions. Contactez dans ce cas le coordinateur des  HHoowwttoo
  LLiinnuuxx a l'adresse qui vous sera donnee a la fin de cette section.

  En resume, nous souhaitons promouvoir la diffusion de ces informations
  a travers le maximum de  moyens  de  communications.  Toutefois,  nous
  souhaitons  absolument  conserver  un  copyright sur ces documents, et
  nous voulons etre consultes 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  courier
  electronique ou au +1 404 853 9989.

  Si  vous  avez  quelque  chose  a ajouter a ce Mini-Howto, envoyez par
  courier electronique a  l'auteur  (Ofer  Maor  (ofer@hadar.co.il)  vos
  informations.  Toute information interessante sera apreciee.

  11..11..  RReemmeerrcciieemmeennttss

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

  J'aimerais   egalement   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reeffaaccee

  Ce  Mini-Howto  a  ete  ecrit dans le but d'aider les gens qui veulent
  utiliser le montage par NFS-Root pour  creer  l'arborecence  de  leurs
  clients.  Vous  pourrez  ainsi remarquer qu'il y a de nombreuses facon
  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 necessaire de ne pas partager avec  d'autres
  clients  une  partie significative des repertoires.  Dans le cas ou le
  client est destine a de multiples utilisateurs, et  qu'ils  sont  tous
  administres  par  la  meme personne, il faudrai partager le maximum de
  fichier afin de simplifier l'administration. Ce  Howto,  se  concentre
  sur la deuxieme possiblite.

  22..11..  PPrreesseennttaattiioonn GGeenneerraallee

  Lorsque  l'on  construit le repertoire racine d'un client, en essayant
  de nous limiter a la taille minimale, nous chercherons  principalement
  quels  fichiers  nous  pouvons partager ou monter a partir du serveur.
  Dans ce Howto, je recommendrai la configuration d'un client  base  sur
  ma propre experience.  Mais avant de commencer, veuillez remarquer que
  :

  +o  Ce Mini-Howto  n'explique  pas  comment  effectuer  le  montage  de
     partition  par  NFS-Root. Se referer au mini HOWTO NFS-Root si vous
     avez besoin de plus d'informations a ce sujet.

  +o  J'ai base la configuration de la plupart de  mes  clients  sur  les
     montages  et  les  liens  symboliques.  Bon  nombre  de  ces  liens
     symboliques peuvent etre  remplaces  par  des  liens  durs.  Chacun
     choisira  selon  ses preferences personnelles. Mettre un lien dur a
     travers un fichier monte  a  ses  avantages,  mais  peut  preter  a
     confusion.  Un  fichier  ne sera pas efface tant que tous ses liens
     durs ne seront pas effaces. Ainsi, pour prevenir les  cas  ou  vous
     mettez  a jour un certan fichier, et que les liens durs referencent
     toujours l'ancienne version, vous  devez  etre  tres  attentifs  et
     garder une trace de tous les liens que vous mettez.

  +o  Lorsque vous montez les informations a partir du serveur, il existe
     2 possibilites. La premiere (la plus courante), est  de  monter  la
     totalite  du repertoire racine du serveur dans un repertoire local,
     et de simplement changer le chemin ou mettre  des  liens  vers  les
     repertoires  correspondant.   Personnellement, je n'aime pas monter
     la partition racine du serveur sur les  clients.  Ainsi,  ce  Howto
     suggere  une  facon  de monter les repertoires apropries du serveur
     aux endroits apropries du systeme.

  +o  Ce Howto est base sur mon experience a construire  les  repertoires
     clients sur la distribution Slackware 3.1. Certaines choses peuvent
     etre differentes (en particulier les fichiers rc.*), pour  d'autres
     utilisateurs, cependant les concepts restent les memes.

  33..  CCrreeeerr llee rreep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reea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 creer la structure des repertoires elle-meme.
  J'ai cree tous mes clients dans le repertoire /clients/hostname et  je
  l'utilise  pour  tous  les examples suivants. Cela peut toutefois etre
  remplace par n'importe quoi d'autre. La premiere etape, donc,  est  de
  creer  les repertoires apropries dans le repertoire racine. Vous devez
  creer les repertoires :

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

  et tous les autres repertoires que vous souhaitez avoir sur votre sys-
  teme.

  Les  repertoires  locaux  proc  et  dev  doivent distincts pour chaque
  machine alors que le reste des repertoires peut etre  soit  en  partie
  soit completement partage avec les autres clients.

  33..22..  CCrreeaattiioonn dd''uunn ssyysstteem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reeeerr llee rreeppeerrttooiirree ddeevv..

  Bien que le repertoire dev puisse etre partage, il est preferable d'en
  creer un different pour chaque client. Vous pouvez creer le repertoire
  dev  de  votre client avec le script MAKEDEV approprie, cependant dans
  la plupart des cas, il est plus simple de  le  recopier  a  partir  du
  serveur :

       cp -a /dev /clients/hostname

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

  33..22..22..  CCooppiieerr lleess eexxeec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 a partir du serveur, il y a un minimum  que
  vous  devez  recopier pour chaque client. Avant tout, vous avez besoin
  de "init", car votre systeme ne sera pas capable de faire marcher quoi
  que  ce  soit  avant de s'etre init'ialise (l'auteur l'a difficilement
  trouve ;-). Donc premierement, vous devez copier  /sbin/init  dans  le
  repertoire sbin de votre client.  Ensuite, de maniere a monter tout ce
  dont  vous  avez  besoin,  vous  devez  copier  /sbin/mount  dans   le
  repertoire  sbin de votre client. C'est le minimum, a partir du moment
  ou la premiere 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 a des problemes de montage. Si vous choisissez de laisser
  votre swap en route avant de monter la racine,  vous  devez  egalement
  copier l'executable swapon.

  Bien  que  la  plupart de ces executables ont eu une edition 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  _a  _l_a _p_l_a_c_e _d_e
  _/_l_i_b_/_l_i_b_c_u_r_s_e_s_._*

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

  Veuillez remarquer que toutes les informations  precedentes  supposent
  que le noyau a obtenu tous les parametres lors du boot. Si vous pensez
  utiliser rraarrpp ou bboooottpp, vous aurez probablement egalement  besoin  des
  fichiers qui leurs correspondent.

  Generalement,  vous  aurez  besoin  du  minimum  de  fichiers qui vous
  permettent de configurer le reseau et d'executer 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  monte  le reste du systeme de
  fichier.  Assurez-vous  que  vous  avez  regarde  dans  vos   fichiers
  /etc/init  et  rc.S,  assurez-  vous qu'il n'y a pas de "surprises" ou
  quoi que ce soit d'autre,  qui  aurait  besoin  d'acceder  a  d'autres
  fichiers,  avant  que  le premier montage ait lieu.  Si vous le faites
  toutefois, retrouvez ces  fichiers,  vous  pouvez  soit  les  recopier
  egalement,  soit  enlever  les parties correspondantes de vos fichiers
  init ou rc.S.

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

  Le repertoire var, dans la plupart des  cas,  doit  etre  separe  pour
  chaque  client.  Cependant,  bon  nombre  des  donnees  peuvent  etres
  partagees. Creez dans le repertoire  /serveur,  un  repertoire  appele
  var.   Nous  recopierons  le  repertoire var du serveur a cet endroit.
  Pour creer le repertoire var local, tapez simplement :

       cp -a /var /clients/hostname

  Maintenant, vous pouvez choisir ce que vous voulez separer, et ce  que
  vous  voulez  partager.  Pour  tout repertoire/fichier que vous voulez
  partager, enlevez-le simplement du repertoire var du client, et mettez
  un   lieu  symbolique  vers  le  repertoire  /serveur/var.  Cependant,
  veuillez remarquer que vous pouvez mettre lien  symbolique  soit  vers
  /serveur/var ou vers

  Generalement, je recommande de separer /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reeppeerrttooiirreess

  +o  etc est detaille dans la section suivante.

  +o  mnt et proc sont utilises localement

  +o  usr et home sont simplement des points de montage

  +o  tmp est  a  votre  bon  choix.  Vous  pouvez  creer  un  repertoire
     different  pour chaque client, ou creer un repertoire /clients/tmp,
     et le monter sur chaque client dans /tmp. Je recommande de  fournir
     un repertoire tmp pour chaque client

  33..33..  CCoonnssttrruuiirree llee rreep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

  Veuillez  Remarquer  -   cette  section traite de la facon de creer un
  repertoire etc qui est principalement separe  entre  les  clients.  Si
  votre  station  diskless a des administrateurs systemes differents, il
  est preferable de faire un repertoire etc separe 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reeppeerrttooiirree eettcc

  Bien  que  nous  separions  les  repertoires  etc  des  clients,  nous
  souhaitons  toujours  partager  une  bonne  partie des fichiers de cet
  endroit. D'une facon generale, je pense que partager les  fichiers  de
  etc avec le repertoire /etc du serveur est une mauvaise idee, et c'est
  pourquoi je  recommande  de  creer  un  repertoire  /clients/etc,  qui
  contiendra   les  informations  dont  les  clients  ont  besoin.  Pour
  commencer, recopier simplement le contenu de /etc du serveur  vers  le
  repertoire /client/etc.

  Vous devrez ajouter a ce repertoire tous les fichiers de configuration
  qui ne dependent pas de la machine, par example motd, issue, etc. mais
  aucun de ceux dependant du client (i.e. inittab ou fstab)

  Les  changements  les  plus  importants  doivent  etre  faits  dans le
  repertoire rc.d. Premierement, vous devez changer rc.inet1 pour  qu'il
  corresponde  a  votre  parametrage local. Je passe tous mes parametres
  reseau au noyau avec LILO/Loadlin, c'est pourquoi j'ai enleve  presque
  tout  de  mon fichier rc.inet1. La seule chose que j'ai laisse, est le
  iiffccoonnffiigg et la rroouuttee vers l'entree localhost. Si vous utilisez rarp ou
  bootp, vous devez en tenir compte lors de la creation du fichier.

  Deuxiemement,  vous  devez  editer  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 deja demarre.
  Ensuite, vous devez trouver la ligne ou est monte  votre  fstab.  Cela
  doit ressembler a :

       mount -avt nonfs

  Le  --tt  nnoonnffss.  etait  jusque  la normal puisque les client lancent en
  premier rc.S et seulement apres  rc.inet1  pour  configurer  Ethernet.
  Mais  comme cette ligne ne va pas monter les partitions NFS, elle doit
  etre detruite.  Il faut ensuite la remplacer par un  mount  -av  .  Si
  vous  avez  besoin d'utiliser rarp/bootp pour configurer votre reseau,
  faites le dans rc.S (ou appelez le script aproprie dans  rc.S),  avant
  de monter, et assurez vous que les repertoires bin et sbin contiennent
  les fichiers necessaires.

  Apres que le mount -av ait ete accompli, vous devez avoir  un  systeme
  de  fichier  operationel.  Creez  un fstab generique, que vous pourrez
  recopier sur chaque client.

  Votre fstab doit ressembler a :

       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-clef _default_ ne doit pas marcher 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 egalement que sur votre serveur le /etc/exports ressemble
  a :

       /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  a  part  la  premiere ligne qui doit etre differente pour chaque
  client, les autres lignes peuvent etre remplacees par un  masque  pour
  s'appliquer  a tout vos clients (comme pc*.domain - gardez a l'esprit,
  que * se substitue uniquement aux chaines de  caraceres  ne  contenant
  pas  de  point).  Je  propose de mettre la majorite des repertoires en
  lecture seule _r_o, mais c'est a  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 egalement
  a partir des clients, assurez-vous que /etc a les  permissions  rw  et
  non ro. Toutefois faites comme vous le souhaitez.

  Veuillez  notez  quelque  chose  d'autre en ce qui concerne le fichier
  rc.S. Sur la Slackware, par defaut, un fichier /etc/issue et /etc/motd
  sont crees a chaque exexcution. Cette fonction DOIT etre desactivee si
  ces fichiers sont montes en ro a  partir  du  serveur,  je  recommande
  qu'ils soient desactives dans tous les cas.

  Pour  termier,  si vous voulez avoir une base d'utilisateurs commune a
  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 separe 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   preferez   un   lien   symbolique,   reliant  /etc/passwd  vers
  /client/etc/passwd (et pas dans l'autre  sens  puisque  le  client  ne
  monte pas le repertoire etc du serveur). Faire de meme avec /etc/group

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

  Generalement, la plupart des fichiers  du  repertoire  etc  du  client
  doivent  avoir  des  liens  symboliques  vers /serveur/etc. Toutefois,
  certains fichiers sont differents pour  chaque  machine,  et  certains
  doivent  etre  la  lorsque  le noyau est charge.  Le minimum dont vous
  avez besoin dans le repertoire etc est :

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

  Puisque ces 5 fichiers peuvent etres 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  differents  pour
  chaque  client.  Vous  devez egalement separer etc/HOSTAME pour chaque
  client. Personellement, je recommande d'avoir  les  fichiers  de  rc.d
  distincts  pour  chaque client puisque la configuration et le materiel
  peuvent varier d'une machine a l'autre.

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

       /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 ou est monte /clients/etc).

  Assurez-vous que votre machine peut resoudre  correctement,  soit  par
  nnaammeedd  ou  grace a eettcc//hhoossttss. Ce n'est pas une mauvaise idee de garder
  l'adresse IP du serveur dans /etc/hosts, plutot que de compter sur  la
  resolution.  Si  vous comptez uniquement sur la resolution de noms, un
  probleme avec named empechera 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  demarrer  votre
  machine,  croisez  vos  doigts  et priez pour que tout marche comme il
  faut :-)

  44..  CCrreee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  etre
  facile - changer de repertoire vers /clients et tapez :
       cp -a hostname1 hostname2

  et verifiez bien les points suivants :

       Les fichiers rc.d/* correspondent au materiel 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...

