NFS-Root Mini-HowTo
 par Andreas Kostyrka, [email protected]
 Version 8, 8 Aout 1997

 (Adaptation  francaise  par  Eric  Dumas [email protected]).  Ce mini
 HowTo presente comment configurer une station LLiinnuuxx "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.

 11..  CCooppyyrriigghhtt

 (c)   1996   Andreas   Kostyrka   ([email protected]    ou
 [email protected])

 Sauf  indication contraire, les documents HowTo LLiinnuuxx sont copyrightes
 par leurs auteurs respectifs. Les documents HowTo LLiinnuuxx  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  LLiinnuuxx  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
 LLiinnuuxx 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   _A_n_d_r_e_a_s   _K_o_s_t_y_r_k_a
 [email protected],  l'auteur  de  ce  mini-HOWTO,  ou  _G_r_e_g _H_a_n_k_i_n_s, le
 coordinateur des HowTo pour LLiinnuuxx, [email protected] par  courrier
 electronique.

 11..11..  CCoonnttrriibbuutteeuurrss

 +o  _A_v_e_r_y  _P_e_n_n_a_r_u_n  ([email protected]) : comment amorcer la machine
    sans LILO ;

 +o  Ofer Maor ([email protected]) : a ecrit un mini-HowTo bien  meilleur
    pour  configurer les stations de travail ne possedant pas de disque
    ;

 +o  Christian Leutloff ([email protected])  :  informations
    sur netboot.

 22..  PPrreesseennttaattiioonn ggeenneerraallee

 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 _N_F_S_R_O_O_T dans le noyau LLiinnuuxx (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/_a_d_r_e_s_s_e_-_I_P _d_e _l_a _m_a_c_h_i_n_e.).

 +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 LLiinnuuxx sans LILO est plus rapide.

 33..  CCoonnffiigguurreerr llee sseerrvveeuurr

 33..11..  CCoommppiilleerr lleess nnooyyaauuxx

 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  _r_a_c_i_n_e  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 :

 rdev_i_m_a_g_e_-_n_o_y_a_u /dev/nfsroot.

 33..22..  CCrreeaattiioonn dduu ssyysstteemmee ddee ffiicchhiieerrss rraacciinnee

 33..22..11..  CCooppiieerr llee ssyysstteemmee ddee ffiicchhiieerrss

 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 ([email protected]) pour une meilleur solution.

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

 mkdir -p _r_e_p_e_r_t_o_i_r_e

 et

 tar cClf / - | tar xpCf _r_e_p_e_r_t_o_i_r_e -.

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

 33..22..22..  CChhaannggeerr llaa rraacciinnee dduu ssyysstteemmee ddee ffiicchhiieerrss

 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.).

 33..22..33..  EExxppoorrtteerr llee ssyysstteemmee ddee ffiicchhiieerrss

 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.

 33..22..44..  CCoonnffiigguurraattiioonn RRAARRPP

 Configurer le serveur RARP quelque part sur le reseau. Si vous amorcez
 sans un parametre _n_f_s_r_o_o_t, 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 _a_d_r_e_s_s_e_-_i_p _a_d_r_e_s_s_e_-_m_a_t_e_r_i_e_l

 ou

 +o  _a_d_r_e_s_s_e_-_i_p : est l'adresse IP de la station de travail ;

 +o  _a_d_r_e_s_s_e_-_m_a_t_e_r_i_e_l  : 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).

 33..22..55..  CCoonnffiigguurraattiioonn ddee BBOOOOTTPP

 Pour configurer BOOTP, vous devrez editer  le  fichier  /etc/bootptab.
 Consultez les pages de manuel _b_o_o_t_p_d_(_8_) et _b_o_o_t_p_t_a_b_(_5_).

 33..22..66..  TTrroouuvveerr lleess aaddrreesssseess mmaatteerriieelllleess

 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.

 44..  AAmmoorrcceerr llaa ssttaattiioonn ddee ttrraavvaaiill

 44..11..  UUttiilliisseerr uunnee RROOMM bboooottaabbllee

 Comme je ne l'ai pas utilise par moi-meme, je ne peut donc vous donner
 que    les    conseils   suivants   (merci   a   Christian   Leutloff,
 [email protected]).

 +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)

 44..22..  UUttiilliisseerr ssiimmpplleemmeenntt uunnee ddiissqquueettttee

 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).

 44..33..  UUttiilliisseerr uunn _b_o_o_t_l_o_a_d_e_r eett RRAARRPP

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

 nfsroot=_a_d_r_e_s_s_e_-_i_p_-_s_e_r_v_e_u_r:_/_c_h_e_m_i_n _d_'_a_c_c_e_s

 ou  _a_d_r_e_s_s_e_-_i_p_-_s_e_r_v_e_u_r  est  l'adresse  IP  du  serveur NFS et _/_c_h_e_m_i_n
 _d_'_a_c_c_e_s 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.

 44..44..  UUttiilliisseerr uunn _b_o_o_t_l_o_a_d_e_r ssaannss RRAARRPP

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

 nfsaddrs=_w_s_t_-_I_P:_s_r_v_-_I_P: _g_w_-_I_P:_n_e_t_m_-_I_P:_n_o_m_m_a_c_h_i_n_e

 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.

 55..  PPrroobblleemmeess ccoonnnnuuss

 55..11..  //ssbbiinn//iinniitt nnee ssee llaannccee ppaass

 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.

 55..22..  PPrroobblleemmeess aavveecc llee rreeppeerrttooiirree //ddeevv

 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.

 66..  PPoouurr pplluuss ddee rreennsseeiiggnneemmeennttss......

 +o  il         existe         un         client         BOOTP         :
    _f_t_p_:_/_/_s_u_n_s_i_t_e_._u_n_c_._e_d_u_/_s_y_s_t_e_m_/_N_e_t_w_o_r_k_/_a_d_m_i_n_/_b_o_o_t_p_c_._v_0_4_5_._t_g_z.

    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 _v_i_a 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 [email protected]. Il s'agit de :

 F1 F7 43 D5 07 C4 6C 87  BF 6B 33 A2 2C EE 5A F9