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