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 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 (e9207884@student.tuwien.ac.at ou andreas@ag.or.at) 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 andreas@ag.or.at, l'auteur de ce mini-HOWTO, ou _G_r_e_g _H_a_n_k_i_n_s, le coordinateur des HowTo pour LLiinnuuxx, gregh@sunsite.unc.edu par courrier electronique. 11..11.. CCoonnttrriibbuutteeuurrss +o _A_v_e_r_y _P_e_n_n_a_r_u_n (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. 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 (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 _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, 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) 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 andreas@ag.or.at. Il s'agit de : F1 F7 43 D5 07 C4 6C 87 BF 6B 33 A2 2C EE 5A F9 .