NFS-Root-Client Mini-Howto
par Ofer Maor,
[email protected]
Version 4.1, le 02 F�vrier 1999
(Adaptation fran�aise par Antoine Levavasseur
[email protected], le 4
mars 1999). L'objectif de ce mini-howto est d'expliquer comment cr�er
l'arborescence racine d'un client pour le serveur qui g�re des clients
utilisant NFS-Root. La derni�re version de ce mini Howto peut �tre
r�cup�r�e � :
http://www.hcs.co.il/oferm/NFS-Root-Client/
11.. CCooppyyrriigghhtt
(c) 1996 Ofer Maor (
[email protected])
Sauf indication contraire, les documents HHoowwttoo LLiinnuuxx sont copyright�s
par leurs auteurs respectifs. Les documents HHoowwttoo LLiinnuuxx peuvent �tre
reproduits et diffus�s d'une mani�re compl�te ou partielle, sur
n'importe quel support, qu'il soit physique ou �lectronique, du moment
que ce copyright se trouve sur toutes les copies. Les diffusions
commerciales sont autoris�es et m�me encourag�es. Toutefois, l'auteur
aimerait bien �tre averti de ce genre de distributions.
Toute traduction, travail d�riv�, ou travaux plus g�n�raux incluant
n'importe quel document HHoowwttoo LLiinnuuxx doit �tre prot�g� par ce
copyright. De cette mani�re, vous ne pouvez pas cr�er un document
d�rivant d'un Howto et imposer des restrictions suppl�mentaires sur sa
distribution. Des exceptions � ces r�gles peuvent �tre accord�es sous
certaines conditions. Contactez dans ce cas le coordinateur des HHoowwttoo
LLiinnuuxx � l'adresse qui vous sera donn�e � la fin de cette section.
En r�sum�, nous souhaitons promouvoir la diffusion de ces informations
� travers le maximum de moyens de communications. Toutefois, nous
souhaitons absolument conserver un copyright sur ces documents, et
nous voulons �tre consult�s 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 LLiinnuuxx,
[email protected] par courrier
�lectronique ou au +1 404 853 9989.
Si vous avez quelque chose � ajouter � ce Mini-Howto, envoyez par
courrier �lectronique � l'auteur (Ofer Maor (
[email protected]) vos
informations. Toute information int�ressante sera appr�ci�e.
11..11.. RReemmeerrcciieemmeennttss
Je tiens � remercier l'auteur du Howto NFS-Root, Andreas Kostyrca
(
[email protected]). Son Mini-Howto m'a aid� lors de mes
premiers pas pour mettre en place un client avec le syst�me NFS-Root.
Mon Mini-Howto ne cherche en aucun cas � remplacer ce travail, mais �
l'am�liorer gr�ce � ma propre exp�rience.
J'aimerais �galement remercier Mark Kushinsky (
[email protected])
d'avoir relu et corriger les fautes de ce Howto, le rendant ainsi bien
plus lisible.
22.. PPrr��ffaaccee
Ce Mini-Howto � �t� �crit dans le but d'aider les gens qui veulent
utiliser le montage par NFS-Root pour cr�er l'arborecence de leurs
clients. Vous pourrez ainsi remarquer qu'il y a de nombreuses fa�on
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 n�cessaire de ne pas partager avec d'autres
clients une partie significative des r�pertoires. Dans le cas ou le
client est destin� � de multiples utilisateurs, et qu'ils sont tous
administr�s par la m�me personne (par exemple les ordinateurs d'une
�cole), il faudrait partager le maximum de fichier afin de simplifier
l'administration. Ce Howto, se concentre sur la deuxi�me possibilit�.
22..11.. PPrr��sseennttaattiioonn GG��nn��rraallee
Lorsque l'on construit le r�pertoire racine d'un client, en essayant
de nous limiter � la taille minimale, nous chercherons principalement
quels fichiers nous pouvons partager ou monter � partir du serveur.
Dans ce Howto, je recommendrai la configuration d'un client bas� sur
ma propre exp�rience. Mais avant de commencer, veuillez remarquer que
:
� Ce Mini-Howto n'explique pas comment effectuer le montage de
partition par NFS-Root. Se r�f�rer au mini HOWTO NFS-Root si vous
avez besoin de plus d'informations � ce sujet.
� J'ai bas� la configuration de la plupart de mes clients sur les
montages et les liens symboliques. Bon nombre de ces liens
symboliques peuvent �tre remplac�s par des liens durs. Chacun
choisira selon ses pr�f�rences personnelles. Mettre un lien dur �
travers un fichier mont� a ses avantages, mais peut pr�ter �
confusion. Un fichier ne sera pas effac� tant que tous ses liens
durs ne seront pas effac�s. Ainsi, pour pr�venir les cas ou vous
mettez � jour un certain fichier, et que les liens durs r�f�rencent
toujours l'ancienne version, vous devez �tre tr�s attentifs et
garder une trace de tous les liens que vous mettez.
� Lorsque vous montez les informations � partir du serveur, il existe
2 possibilit�s. La premi�re (la plus courante), est de monter la
totalit� du r�pertoire racine du serveur dans un r�pertoire local,
et de simplement changer le chemin ou mettre des liens vers les
r�pertoires correspondant. Personnellement, je n'aime pas monter
la partition racine du serveur sur les clients. Ainsi, ce Howto
sugg�re une fa�on de monter les r�pertoires appropri�s du serveur
aux endroits appropri�s du syst�me.
� Ce Howto est bas� sur mon exp�rience � construire les r�pertoires
clients sur la distribution Slackware 3.1. Certaines choses peuvent
�tre diff�rentes (en particulier les fichiers rc.*), pour d'autres
utilisateurs, cependant les concepts restent les m�mes.
33.. CCrr��eerr llee rr��ppeerrttooiirree rraacciinnee dduu cclliieenntt
33..11.. CCrr��aattiioonn ddee ll''aarrbboorreesscceennccee
Tout d'abord, vous devez cr�er la structure des r�pertoires elle-m�me.
J'ai cr�� tous mes clients dans le r�pertoire /clients/hostname et je
l'utilise pour tous les exemples suivants. Cela peut toutefois �tre
remplac� par n'importe quoi d'autre. La premi�re �tape, est donc de
cr�er les r�pertoires appropri�s sur la racine. Vous devez cr�er les
r�pertoires suivants :
bin, dev, etc, home, lib, mnt, proc, sbin, serveur, tmp, usr, var
et tous les autres r�pertoires que vous souhaitez avoir sur votre
syst�me.
Les r�pertoires locaux proc et dev doivent �tre distincts pour chaque
machine alors que le reste des r�pertoires peut �tre soit en partie
soit compl�tement partag� avec les autres clients.
33..22.. CCrr��aattiioonn dd''uunn ssyysstt��mmee ddee ffiicchhiieerr mmiinniimmaall ppoouurr llee bboooott
33..22..11.. CCrr��eerr llee rr��ppeerrttooiirree ddeevv..
Bien que le r�pertoire dev puisse �tre partag�, il est pr�f�rable d'en
cr�er un diff�rent pour chaque client. Vous pouvez cr�er le r�pertoire
dev de votre client avec le script MAKEDEV appropri�, cependant dans
la plupart des cas, il est plus simple de le recopier � partir du
serveur :
cp -a /dev /clients/hostname
Vous devez garder � l'esprit que /dev/mouse, /dev/cdrom et /dev/modem
sont des liens vers les p�riph�riques courants, il faut donc s'assurer
qu'ils sont correctement reli�s pour correspondre au mat�riel du
client.
33..22..22.. CCooppiieerr lleess eexx��ccuuttaabblleess iinnddiissppeennssaabblleess..
Bien que nous montons tout � partir du serveur, il y a un minimum que
vous devez recopier pour chaque client. Avant tout, vous avez besoin
de "init", car votre syst�me ne sera pas capable de faire marcher quoi
que ce soit avant de s'�tre initialis� (l'auteur l'a difficilement
trouv� ;-). Donc premi�rement, vous devez copier /sbin/init dans le
r�pertoire sbin de votre client ensuite, pour que le fichier rc.S
puisse �tre lanc�, vous devez copier /bin/sh dans le r�pertoire
binaire de votre client. Ensuite, de mani�re � monter tout ce dont
vous avez besoin, vous devez copier /sbin/mount dans le r�pertoire
sbin de votre client. C'est le minimum, � partir du moment ou la
premi�re 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 � des probl�mes de montage. Si vous choisissez d'utiliser
votre swap avant de monter la racine, vous devez �galement copier
l'ex�cutable swapon.
Bien que la plupart de ces ex�cutables ont eu une �dition 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 _� _l_a _p_l_a_c_e _d_e
_/_l_i_b_/_l_i_b_c_u_r_s_e_s_._* _s_e_l_o_n _l_a _f_a_�_o_n _d_o_n_t _s_o_n_t _c_o_m_p_i_l_�_s _l_e_s _e_x_�_c_u_t_a_b_l_e_s_.
Mettre des liens durs vers les fichiers eux-m�mes, au lieu de les
copier, est une solution � consid�rer. Relisez mes commentaires � ce
sujet dans la partie 2.1 de ce Howto.
Veuillez remarquer que toutes les informations pr�c�dentes supposent
que le noyau ai obtenu tous les param�tres lors du boot. Si vous
pensez utiliser rraarrpp ou bboooottpp, vous aurez probablement besoin des
fichiers qui leurs correspondent.
G�n�ralement, vous aurez besoin du minimum de fichiers qui vous
permettent de configurer le r�seau et d'ex�cuter 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 mont� le reste du syst�me de
fichier. Assurez-vous que vous avez v�rifixi�e vos fichiers /etc/init
et rc.S, v�rifiez qu'il n'y a pas de "surprises" ou quoi que ce soit
d'autre qui aurait besoin d'acc�der � d'autres fichiers, avant que le
premier montage ait lieu. Si vous le faites toutefois, retrouvez ces
fichiers, vous pouvez soit les recopier �galement, soit enlever les
parties correspondantes de vos fichiers init ou rc.S.
33..22..33.. LLee rr��ppeerrttooiirree vvaarr
Le r�pertoire var, dans la plupart des cas, doit �tre s�par� pour
chaque client. Cependant, bon nombre des donn�es peuvent �tres
partag�es. Cr�ez dans le r�pertoire /serveur, un r�pertoire appel�
var. Nous recopierons le r�pertoire var du serveur � cet endroit.
Pour cr�er le r�pertoire var local, tapez simplement :
cp -a /var /clients/hostname
Maintenant, vous pouvez choisir ce que vous voulez s�parer, et ce que
vous voulez partager. Pour tout r�pertoire/fichier que vous voulez
partager, enlevez-le simplement du r�pertoire var du client, et mettez
un lien symbolique vers le r�pertoire /serveur/var. Cependant, vous
remarquerez que vous pouvez mettre un lien symbolique vers
/serveur/var ou vers ../serveur/var mais surtout PAS vers
/clients/hostname/serveur/varpuisque cela ne marchera plus lorsque la
racine aura chang�.
G�n�ralement, je recommande de s�parer /var/run, /var/lock, /var/spool
et /var/log.
33..22..44.. LLee ccaass ddeess aauuttrreess rr��ppeerrttooiirreess
� etc est d�taill� dans la section suivante.
� mnt et proc sont utilis�s localement
� usr et home sont simplement des points de montage
� tmp est � votre bon choix. Vous pouvez cr�er un r�pertoire
diff�rent pour chaque client, ou cr�er un r�pertoire /clients/tmp,
et le monter sur chaque client dans /tmp. Je recommande de fournir
un r�pertoire tmp pour chaque client
33..33.. CCoonnssttrruuiirree llee rr��ppeerrttooiirree eettcc eett ccoonnffiigguurreerr llee cclliieenntt
Remarque - cette section traite de la fa�on de cr�er un r�pertoire
etc qui est principalement s�par� entre les clients. Si votre station
diskless a des administrateurs syst�mes diff�rents, il est pr�f�rable
de faire un r�pertoire etc s�par� pour chaque client.
33..33..11.. MMeettttrree uunn ggrraanndd rr��ppeerrttooiirree eettcc
Bien que nous s�parions les r�pertoires etc des clients, nous
souhaitons toujours partager une bonne partie des fichiers de cet
endroit. D'une fa�on g�n�rale, je pense que partager les fichiers de
etc avec le r�pertoire /etc du serveur est une mauvaise id�e, et c'est
pourquoi je recommande de cr�er un r�pertoire /clients/etc, qui
contiendra les informations dont les clients ont besoin. Pour
commencer, recopier simplement le contenu de /etc du serveur vers le
r�pertoire /client/etc.
Vous devrez ajouter � ce r�pertoire tous les fichiers de configuration
qui ne d�pendent pas de la machine, par exemple motd, issue, etc. mais
aucun de ceux d�pendant du client (i.e. inittab ou fstab)
Les changements les plus importants doivent �tre faits dans le
r�pertoire rc.d. Premi�rement, vous devez changer rc.inet1 pour qu'il
corresponde � votre param�trage local. Je passe tous mes param�tres
r�seau au noyau avec LILO/Loadlin, c'est pourquoi j'ai enlev� presque
tout de mon fichier rc.inet1. La seule chose que j'ai laiss�, est le
iiffccoonnffiigg et la rroouuttee vers l'entr�e localhost. Si vous utilisez rarp ou
bootp, vous devez en tenir compte lors de la cr�ation du fichier.
Deuxi�mement, vous devez �diter 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 d�j� d�marr�.
Ensuite, vous devez trouver la ligne ou est mont� votre fstab. Cela
doit ressembler � :
mount -avt nonfs
Le --tt nnoonnffss. est jusque l� normal puisque les client lancent en
premier rc.S et seulement apr�s rc.inet1 pour configurer l'Ethernet.
Mais comme cette ligne ne va pas monter les partitions NFS, elle doit
�tre d�truite. Il faut ensuite la remplacer par un mount -av . Si
vous avez besoin d'utiliser rarp/bootp pour configurer votre r�seau,
faites le dans rc.S (ou appelez le script appropri� dans rc.S), avant
de monter, et assurez vous que les r�pertoires bin et sbin contiennent
les fichiers n�cessaires.
Apr�s que le mount -av ait �t� accompli, vous devez avoir un syst�me
de fichier op�rationnel. Cr�ez un fstab g�n�rique, que vous pourrez
recopier sur chaque client.
Votre fstab doit ressembler � :
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 cl� _default_ ne doit pas fonctionner
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 �galement que sur votre serveur le /etc/exports ressemble
� :
/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 � part la premi�re ligne qui doit �tre diff�rente pour chaque
client, les autres lignes peuvent �tre remplac�es par un masque pour
s'appliquer � tout vos clients (comme pc*.domain - gardez � l'esprit,
que * se substitue uniquement aux cha�nes de caract�res ne contenant
pas de point). Je propose de mettre la majorit� des r�pertoires en
lecture seule _r_o, mais c'est � 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 ppaasssswwdd �galement
� partir des clients, assurez-vous que /etc ai les permissions rw et
non ro. Toutefois faites comme vous le souhaitez.
Vouz remarquerez aussi, en ce qui concerne le fichier rc.S que sur la
Slackware, par d�faut, un fichier /etc/issue et /etc/motd sont cr��s �
chaque ex�cution. Cette fonction DOIT �tre d�sactiv�e si ces fichiers
sont mont�s en ro � partir du serveur, je recommande de les d�sactiver
dans tous les cas.
Pour terminer, si vous voulez avoir une base d'utilisateurs commune �
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 s�par� 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 pr�f�rez un lien symbolique, reliant /etc/passwd vers
/client/etc/passwd (et pas dans l'autre sens puisque le client ne
monte pas le r�pertoire etc du serveur). Faire de m�me avec /etc/group
33..33..22.. CCrr��eerr llee rr��ppeerrttooiirree eettcc dduu cclliieenntt
G�n�ralement, la plupart des fichiers du r�pertoire etc du client
doivent avoir des liens symboliques vers /serveur/etc. Toutefois,
certains fichiers sont diff�rents pour chaque machine, et certains
doivent �tre l� lorsque le noyau est charg�. Le minimum dont vous
avez besoin dans le r�pertoire etc est :
resolv.conf
hosts
inittab
rc.d/rc.S
fstab
Puisque ces 5 fichiers peuvent �tres 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 diff�rents pour
chaque client. Vous devez �galement s�parer etc/HOSTAME pour chaque
client. Personnellement, je recommande d'avoir les fichiers de rc.d
distincts pour chaque client puisque la configuration et le mat�riel
peuvent varier d'une machine � l'autre.
Pour chaque client, ajouter dans la fstab la ligne swap appropri�e :
/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 o� est mont� /clients/etc).
Assurez-vous que votre machine peut r�soudre correctement, soit par
nnaammeedd ou gr�ce � eettcc//hhoossttss. Ce n'est pas une mauvaise id�e de garder
l'adresse IP du serveur dans /etc/hosts, plut�t que de compter sur la
r�solution. Si vous comptez uniquement sur la r�solution de noms, un
probl�me avec named emp�chera vos clients de booter.
33..44.. BBooootteerr llaa mmaacchhiinnee
Maintenant que vous avez fait tout ce qu'il faut pour d�marrer votre
machine, croisez vos doigts et priez pour que tout marche comme il
faut :-)
44.. CCrr��eerr dd''aauuttrreess cclliieennttss
Si vous avez suivi mes instructions jusqu'ici, cela devrait �tre
facile - changer de r�pertoire vers /clients et tapez :
cp -a hostname1 hostname2
et v�rifiez bien les points suivants :
Les fichiers rc.d/* correspondent au mat�riel et la configu�
ration logicielle eettcc//HHOOSSTTNNAAMMEE est correcte, la ligne de
swap de fstab est correcte, les liens symboliques dev/mouse,
dev/modem et /dev/cdrom sont corrects.
Bonne Chance...