
  NFS-Root Mini-HowTo
  par Andreas Kostyrka, andreas@ag.or.at
  Version 8, 8 Aout 1997

  (Adaptation  francaise  par  Eric  Dumas dumas@Linux.EU.Org).  Ce mini
  HowTo presente comment configurer une station Linux "sans" disque, qui
  monte  sa  racine  via  NFS. La derniere version de ce mini HowTo peut
  toujours  etre  trouvee  et   recuperee   sur   le   site   ftp://sun-
  site.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root, ou sur n'importe quel
  miroir pres de chez vous.

  1.  Copyright

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

  Sauf  indication contraire, les documents HowTo Linux sont copyrightes
  par leurs auteurs respectifs. Les documents HowTo Linux  peuvent  etre
  reproduits  et  diffuses  d'une  maniere  complete  ou  partielle, sur
  n'importe quel support, qu'il soit physique ou electronique, du moment
  ou  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  HowTo  Linux  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  HowTo
  Linux 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   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
  electronique.

  1.1.  Contributeurs

  o  Avery  Pennarun  (apenwarr@foxnet.net) : comment amorcer la machine
     sans LILO ;

  o  Ofer Maor (ofer@hadar.co.il) : a ecrit un mini-HowTo bien  meilleur
     pour  configurer les stations de travail ne possedant pas de disque
     ;

  o  Christian Leutloff (leutoff@sundancer.tng.oche.de)  :  informations
     sur netboot.

  2.  Presentation generale

  En  general,  on peut rencontrer les problemes suivants concernant une
  station de travail :

  o  elle doit recuperer sa propre adresse IP, et si  besoin,  egalement
     le reste de la configuration Ethernet ;

  o  elle  doit  connaitre  le serveur NFS et le chemin de montage de sa
     partition racine.

  L'implementation actuelle de NFSROOT dans le noyau Linux (a partir  de
  la version 1.3.7x) autorise les "solutions" suivantes :

  o  l'adresse  IP  peut  etre  trouvee  par  RARP,  ou la configuration
     Ethernet complete peut etre passee au noyau via  des  parametres  a
     LILO ou LOADLIN ;

  o  le chemin NFS pour monter la partition peut etre passe au noyau via
     des parametres. Si cela n'est pas fait, alors le noyau suppose  que
     le  serveur RARP est egalement le serveur NFS, et utilise le chemin
     par defaut (le chemin par defaut est code en dur dans  le  noyau  :
     /tftpboot/adresse-IP de la machine.).

  o  la configuration du client peut etre trouvee par BOOTP.

  Avant  de  commencer  a  configurer un environnement sans disque, vous
  devez decider si vous allez amorcer la machine en  utilisant  LILO  ou
  LOADLIN.  L'avantage  de les utiliser est la souplesse. L'inconvenient
  est la rapidite. 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 surement une tres
  bonne idee. Vous devez absolument l'inclure si vous allez amorcer sans
  donner des parametres au noyau. D'un autre cote, cela ne  vous  aidera
  pas  vraiment  si  le  client n'est pas sur le meme sous reseau que le
  serveur.

  Le noyau de la station de travail doit posseder les  elements  suivant
  au minimum :

  o  systeme de fichiers NFS inclu (ce n'est pas la peine de compiler le
     systeme de fichiers ext2 : un module suffira) ;

  o  "Root on NFS" doit etre active ;

  o  le gestionnaire Ethernet pour la carte reseau de  la  station  doit
     etre inclue dans le noyau ;

  o  en  fonction de vos besoin, il est possible que vous ayez a inclure
     les protocoles RARP ou BOOTBP pour  Nfs-Root  (voir  les  questions
     posees lors de la configuration du noyau apres avoir active NFS).

  Si  la  station  de travail sera amorcee sans aucun parametre passe au
  noyau, vous devez egalement fixer  le  peripherique  de  la  racine  a
  0:255.  Pour faire cela, il suffit de creer un fichier de peripherique
  avec :

  mknod /dev/nfsroot b 0 255.

  Apres avoir cree un tel fichier de peripherique, vous pouvez fixer  le
  peripherique racine pour l'image du noyau avec :

  rdevimage-noyau /dev/nfsroot.

  3.2.  Creation du systeme de fichiers racine

  3.2.1.  Copier le systeme de fichiers

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

  Apres avoir decide ou placer la racine de l'arborescence, il suffit de
  la creer avec par exemple :

  mkdir -p repertoire

  et

  tar cClf / - | tar xpCf repertoire -.

  Si  votre  noyau  s'amorce  sans  LILO,  alors  la  racine  doit  etre
  /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.

  3.2.2.  Changer la racine du systeme de fichiers

  Maintenant,  supprimez  les  fichiers inutiles et verifiez les scripts
  situes dans /etc/rc.d. Certains points sont vitaux :

  o  il est important que  le  peripherique  eth0  soit  configure.   La
     station  de  travaille  est lancee avec une interface eth0 au moins
     configuree partiellement. Donner comme  adresse  IP  a  la  station
     l'adresse   du  serveur  n'est  pas  vraiment  une  chose  vraiment
     intelligente a faire (comme cela est arrive  une  fois  a  l'auteur
     lors de ses essais...).

  o  un  autre  point  important  concerne  le  fichier /etc/fstab de la
     station de travail. Il doit etre configure  pour  des  systemes  de
     fichiers nfs.

  o  ATTENTION  : ne melangez pas la racine du systeme de fichiers situe
     sur le serveur la racine du systeme de fichiers de  la  station  de
     travail  (j'ai deja patche un fichier rc.inet1 sur le serveur et je
     me  demandais  pourquoi  la  station  de  travail  ne  fonctionnait
     toujours pas.).

  3.2.3.  Exporter le systeme de fichiers

  Exporter  le  repertoire racine de la station de travail. Consultez la
  page de manuel exports(5). Vous devriez egalement relancer les  demons
  nfsd  et  mountd  apres ces modifications. Avec la RedHat, vous pouvez
  effectuer    tres    simplement    cette    operation    en    lancant
  /etc/rc.d/init.d/nfs stop puis /etc/rc.d/init.d/nfs start.

  3.2.4.  Configuration RARP

  Configurer le serveur RARP quelque part sur le reseau. Si vous amorcez
  sans un parametre nfsroot, le serveur  RARP  doit  egalement  etre  un
  serveur  NFS.  En  principe,  ce  sera  le cas. Pour cela, vous devrez
  utiliser un noyau possedant le support RARP.

  Pour realiser cette operation, lancez (et inserez-le quelque part dans
  un fichier /etc/rc.d du serveur !) :

  /sbin/rarp -s adresse-ip adresse-materiel

  ou

  o  adresse-ip : est l'adresse IP de la station de travail ;

  o  adresse-materiel  : est l'adresse Ethernet de la carte reseau de la
     station de travail.

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

  Vous pouvez egalement  utiliser  un  nom  symbolique  a  la  place  de
  l'adresse IP, du moment ou le serveur est capable de trouver l'adresse
  IP (fichier /etc/hosts ou resolution par le DNS).

  3.2.5.  Configuration de BOOTP

  Pour configurer BOOTP, vous devrez editer  le  fichier  /etc/bootptab.
  Consultez les pages de manuel bootpd(8) et bootptab(5).

  3.2.6.  Trouver les adresses materielles

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

  o  amorcez  avec  la  disquette de boot, et regardez la ligne ou votre
     carte reseau est identifiee. Elle contient normalement  six  octets
     en  hexadecimal, qui devraient normalement correspondre a l'adresse
     de la carte.

  o  amorcez la station  avec  un  systeme  d'exploitation  qui  utilise
     TCP/IP.  Ensuite,  lancez un ping depuis le serveur sur la station.
     Regardez enfin le cache ARP en executant /sbin/arp -a.

  4.  Amorcer la station de travail

  4.1.  Utiliser une ROM bootable

  Comme je ne l'ai pas utilise par moi-meme, je ne peut donc vous donner
  que    les    conseils   suivants   (merci   a   Christian   Leutloff,
  leutloff@sundancer.tng.oche.de).

  o  utiliser des bootroms "normale" ;

  o  utiliser le paquetage netboot ecrit par Gero Kuhlmann, et  qui  est
     disponibles  pour  Linux,  avec  des  informations supplementaires.
     netboot est recuperable sur les miroirs Linux, ou dans le paquetage
     de la Debian (netboot-0.4).

  o  lire attentivement la documentation fournie avec votre bootrom ;

  o  vous  devrez  probablement  a  activer  le  demon  tftpd  sur votre
     serveur, mais cela depend un peu de la maniere dont  votre  bootrom
     charge le noyau ;

  o  toute  information  concernant  les  vendeurs de bootrom pour Linux
     sont les  bienvenues,  etant  donne  que  tout  le  monde  n'a  pas
     forcement  acces  a  un  grossiste  en  prom  (tout specialement en
     Europe, puisque c'est la ou je suis)

  4.2.  Utiliser simplement une disquette

  Si vous avez exporte la racine du  systeme  de  fichier  avec  un  nom
  correcte  et  que  votre serveur NFS est egalement le serveur RARP (ce
  qui implique que les deux machines soient sur  le  meme  sous-reseau),
  alors  il  suffit tout simplement d'amorcer la machine en utilisant un
  noyau qui aura ete copie sur la disquette (par exemple avec cat). Vous
  devez fixer le peripherique racine dans le noyau a 0:255. Cela suppose
  au  prealable  que  le  repertoire  racine   sur   le   serveur   soit
  /tftpboot/IP-Address (cette valeur peut etre modifee en recompilant le
  noyay).

  4.3.  Utiliser un bootloader et RARP

  Donnez au noyau tous les parametres necessaire lorsque vous  souhaitez
  amorcer la machine, et ajoutez :

  nfsroot=adresse-ip-serveur:/chemin d'acces

  ou  adresse-ip-serveur  est  l'adresse  IP  du  serveur NFS et /chemin
  d'acces est le chemin d'acces au repertoire racine.

  Quelques astuces :

  o  lorsque vous utilisez LILO, pensez a  utiliser  la  caracteristique
     "lock".  Tapez  une  seule fois correctement tous les parametres et
     ajoutez "lock". La prochaine fois que vous  amorcerez  la  machine,
     LILO  lancera  un  timeout  directement et amorcera la machine sans
     plus attendre.

  o  lorsque vous generez une  disquette  d'amorcage  specifique  a  une
     station,  vous  pouvez egalement utiliser l'option  append= dans le
     fichier lilo.conf.

  4.4.  Utiliser un bootloader sans RARP

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

  nfsaddrs=wst-IP:srv-IP: gw-IP:netm-IP:nommachine

  Le noyau va alors configurer eth0 avec les parametres donnes :

  o  wst-IP : adresse IP de la machine ;

  o  srv-IP : adresse IP du serveur NFS ;

  o  gw-IP  : adresse IP de la passerelle ;

  o  netm-IP : masque reseau ;

  o  nommachine : nom de la machine.

  5.  Problemes connus

  5.1.  /sbin/init ne se lance pas

  Un  probleme  frequent avec /sbin/init est que certaines distributions
  recentes  sont  fournies  avec   une   version   du   programme   init
  dynamiquement lie. Donc, vous devez fournir une configuration correcte
  concernant le repertoire /lib au client.  Une  solution  assez  simple
  consiste  a  remplacer  /sbin/init  (pour  le client) par un programme
  statiquement  lie  "Hello  World".  De  cette  maniere,  vous   pouvez
  determiner  si  c'est  bien  la cause du probleme, ou bien un probleme
  plus grave.

  5.2.  Problemes avec le repertoire /dev

  Lors de l'amorcage 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 repertoire /dev.  Certaines rumeurs font
  part  que  cela ne fonctionne pas avec certains serveurs qui utilisent
  des numeros de peripheriques codes sur 64 bits.  Contactez-moi si vous
  avez  ce  genre de probleme. Une solution possible consiste a creer un
  petit disque mape en meoire (ram disc) contenant le repertoire /dev et
  de reinstaller les i-noeuds des peripheriques a chaque fois.

  6.  Pour plus de renseignements...

  o  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 demon est en fait un
     choix judicieux surtout si vous  avez  besoin  d'une  configuration
     particuliere.

  o  Pour  les  amorcages  bases  sur  bootpd,  cela  n'est pas vraiment
     necessaire puisque Linux 2.0 contient egalement l'option d'utiliser
     BOOTP  au  lieu de RARP. Pour etre plus precis, vous pouvez inclure
     les deux options dans le noyau lors  de  sa  configuration,  et  la
     reponse la plus rapide sera celle choisie.

  o  dans le repertoire Documentation des sources du noyau, vous pourrez
     y trouver un fichier documentant les systemes NFS-Root ;

  o  il existe un patch quelque part qui permet de swapper via NFS.   On
     me l'a envoye (durant une periode tres surchargee), 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 etre consultee en effectuant un finger a
  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

