/usr/share/doc/HOWTO/fr-html/NFS-Root-Client-mini-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>NFS-Root-Client Mini-Howto</title>
</head>
<body>
<h1>NFS-Root-Client Mini-Howto</h1>
<h2>par <a href="http://www.hcs.co.il/oferm/">Ofer Maor</a>,
<a href="mailto:oferm@hcs.co.il">ofer@hadar.co.il</a></h2>
Version 4.1, le 02 Février 1999
<hr>
<em>(Adaptation française par Antoine Levavasseur
<code>levavass@efrei.fr</code>, 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 à : <a href=
"http://www.hcs.co.il/oferm/NFS-Root-Client/">http://www.hcs.co.il/oferm/NFS-Root-Client/</a></em>
<hr>
<h2><a name="s1">1. Copyright</a></h2>
<p>(c) 1996 Ofer Maor (<code>ofer@hadar.co.il</code>)</p>
<p>Sauf indication contraire, les documents <b>Howto Linux</b> sont
copyrightés par leurs auteurs respectifs. Les documents <b>Howto
Linux</b> 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.</p>
<p>Toute traduction, travail dérivé, ou travaux plus généraux
incluant n'importe quel document <b>Howto Linux</b> 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 <b>Howto Linux</b> à l'adresse qui vous
sera donnée à la fin de cette section.</p>
<p>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.</p>
<p>Si vous avez des questions, contactez alors <em>Ofer Maor (
<a href="mailto:oferm@hcs.co.il">ofer@hadar.co.il</a>)</em>,
l'auteur de ce Mini-Howto, ou <em>Greg Hankins</em>, le
coordinateur des Howto pour <b>Linux</b>, <a href=
"mailto:gregh@sunsite.unc.edu">gregh@sunsite.unc.edu</a> par
courrier électronique ou au +1 404 853 9989.</p>
<p>Si vous avez quelque chose à ajouter à ce Mini-Howto, envoyez
par courrier électronique à l'auteur (Ofer Maor ( <a href=
"mailto:oferm@hcs.co.il">ofer@hadar.co.il</a>) vos informations.
Toute information intéressante sera appréciée.</p>
<h2><a name="ss1.1">1.1 Remerciements</a></h2>
<p>Je tiens à remercier l'auteur du Howto NFS-Root, Andreas
Kostyrca ( <a href=
"mailto:andreas@medman.ag.or.at">andreas@medman.ag.or.at</a>). 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.</p>
<p>J'aimerais également remercier Mark Kushinsky ( <a href=
"mailto:mark026@ibm.net">marc026@ibm.net</a>) d'avoir relu et
corriger les fautes de ce Howto, le rendant ainsi bien plus
lisible.</p>
<h2><a name="s2">2. Préface</a></h2>
<p>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é.</p>
<h2><a name="ss2.1">2.1 Présentation Générale</a></h2>
<p>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 :</p>
<ul>
<li>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.</li>
<li>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.</li>
<li>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.</li>
<li>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.</li>
</ul>
<h2><a name="s3">3. Créer le répertoire racine du client</a></h2>
<h2><a name="ss3.1">3.1 Création de l'arborescence</a></h2>
<p>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
<code>/clients/hostname</code> 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
:</p>
<blockquote>
<pre><code>
bin, dev, etc, home, lib, mnt, proc, sbin, serveur, tmp, usr, var
</code></pre></blockquote>
et tous les autres répertoires que vous souhaitez avoir sur votre
système.
<p>Les répertoires locaux <code>proc</code> et <code>dev</code>
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.</p>
<h2><a name="ss3.2">3.2 Création d'un système de fichier minimal
pour le boot</a></h2>
<h3>Créer le répertoire dev.</h3>
<p>Bien que le répertoire <code>dev</code> 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 :</p>
<blockquote>
<pre><code>
cp -a /dev /clients/hostname
</code></pre></blockquote>
<p>Vous devez garder à l'esprit que <code>/dev/mouse</code>,
<code>/dev/cdrom</code> et <code>/dev/modem</code> 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.</p>
<h3>Copier les exécutables indispensables.</h3>
<p>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 <code>/sbin/init</code> 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 <code>/sbin/mount</code> dans le répertoire sbin
de votre client. C'est le minimum, à partir du moment ou la
première ligne de votre rc.S <em>(rc.sysinit pour une distribution
redhat)</em> est <code>mount -av</code>.</p>
<p>Cependant, je recommande de copier quelques autres fichiers :
<code>update, ls, rm, cp et umount</code> 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 <code>swapon</code>.</p>
<p>Bien que la plupart de ces exécutables ont eu une édition des
liens dynamique, vous devez aussi copier une petite partie de /lib
:</p>
<blockquote>
<pre><code>
cp -a /lib/ld.* /lib/libc.* /lib/libcurses.* /client/hostname/lib
</code></pre></blockquote>
<p><em>N.d.T. : sur certaines distributions (en particulier RedHat)
ce sont les fichiers /lib/libtermcap* qu'il faut recopier à la
place de /lib/libcurses.* selon la façon dont sont compilés les
exécutables.</em></p>
<p>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.</p>
<p>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 <b>rarp</b> ou <b>bootp</b>, vous aurez
probablement besoin des fichiers qui leurs correspondent.</p>
<p>Généralement, vous aurez besoin du minimum de fichiers qui vous
permettent de configurer le réseau et d'exécuter rc.S <em>(ou
rc.sysinit sur Redhat)</em> jusqu'au moment ou est monté le reste
du système de fichier. Assurez-vous que vous avez vérifixiée vos
fichiers <code>/etc/init</code> et <code>rc.S</code>, 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 <code>init</code> ou
<code>rc.S</code>.</p>
<h3>Le répertoire var</h3>
<p>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 <code>/serveur</code>, un
répertoire appelé <code>var</code>. Nous recopierons le répertoire
<code>var</code> du serveur à cet endroit. Pour créer le répertoire
<code>var</code> local, tapez simplement :</p>
<blockquote>
<pre><code>
cp -a /var /clients/hostname
</code></pre></blockquote>
<p>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
<code>/serveur/var</code>. Cependant, vous remarquerez que vous
pouvez mettre un lien symbolique vers <code>/serveur/var</code> ou
vers <code>../serveur/var</code> mais surtout PAS vers
<code>/clients/hostname/serveur/var</code>puisque cela ne marchera
plus lorsque la racine aura changé.</p>
<p>Généralement, je recommande de séparer <code>/var/run,
/var/lock, /var/spool</code> et <code>/var/log</code>.</p>
<h3>Le cas des autres répertoires</h3>
<ul>
<li>etc est détaillé dans la section suivante.</li>
<li>mnt et proc sont utilisés localement</li>
<li>usr et home sont simplement des points de montage</li>
<li>tmp est à votre bon choix. Vous pouvez créer un répertoire
différent pour chaque client, ou créer un répertoire
<code>/clients/tmp</code>, et le monter sur chaque client dans
<code>/tmp</code>. Je recommande de fournir un répertoire tmp pour
chaque client</li>
</ul>
<h2><a name="ss3.3">3.3 Construire le répertoire etc et configurer
le client</a></h2>
<p>Remarque - cette section traite de la façon de créer un
répertoire <code>etc</code> 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
<code>etc</code> séparé pour chaque client.</p>
<h3>Mettre un grand répertoire etc</h3>
<p>Bien que nous séparions les répertoires <code>etc</code> 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 <code>/etc</code>
du serveur est une mauvaise idée, et c'est pourquoi je recommande
de créer un répertoire <code>/clients/etc</code>, qui contiendra
les informations dont les clients ont besoin. Pour commencer,
recopier simplement le contenu de /etc du serveur vers le
répertoire <code>/client/etc</code>.</p>
<p>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)</p>
<p>Les changements les plus importants doivent être faits dans le
répertoire <code>rc.d</code>. 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
<code>rc.inet1</code>. La seule chose que j'ai laissé, est le
<b>ifconfig</b> et la <b>route</b> vers l'entrée localhost. Si vous
utilisez rarp ou bootp, vous devez en tenir compte lors de la
création du fichier.</p>
<p>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 à :</p>
<blockquote>
<pre><code>
mount -avt nonfs
</code></pre></blockquote>
<p>Le <b>-t nonfs</b>. 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
<code>mount -av</code> . 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.</p>
<p>Après que le <code>mount -av</code> 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.</p>
<p>Votre <code>fstab</code> doit ressembler à :</p>
<blockquote>
<pre><code>
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
</code></pre></blockquote>
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_ .
<p>Assurez vous également que sur votre serveur le
<code>/etc/exports</code> ressemble à :</p>
<blockquote>
<pre><code>
/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)
</code></pre></blockquote>
<p>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 <em>ro</em>, mais c'est à
vous de choisir. Le <code>no_root_squash</code> assure que le
super-utilisateur aura sur les clients les permissions
correspondantes avec nfsd. Jetez un coup d'oeil au <code>man
exports(5)</code>. Si vous souhaitez que vos utilisateurs puissent
utiliser <b>passwd</b> également à partir des clients, assurez-vous
que /etc ai les permissions rw et non ro. Toutefois faites comme
vous le souhaitez.</p>
<p>Vouz remarquerez aussi, en ce qui concerne le fichier rc.S que
sur la Slackware, par défaut, un fichier <code>/etc/issue</code> et
<code>/etc/motd</code> 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.</p>
<p>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 <code>/etc/passwd</code> et <code>/etc/group</code> 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 <code>/client/etc/passwd</code> vers
<code>/etc/passwd</code>, ou si vous préférez un lien symbolique,
reliant <code>/etc/passwd</code> vers
<code>/client/etc/passwd</code> (et pas dans l'autre sens puisque
le client ne monte pas le répertoire etc du serveur). Faire de même
avec <code>/etc/group</code></p>
<h3>Créer le répertoire etc du client</h3>
<p>Généralement, la plupart des fichiers du répertoire etc du
client doivent avoir des liens symboliques vers
<code>/serveur/etc</code>. 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 :</p>
<blockquote>
<pre><code>
resolv.conf
hosts
inittab
rc.d/rc.S
fstab
</code></pre></blockquote>
<p>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
<code>fstab</code> et <code>rc.S</code> différents pour chaque
client. Vous devez également séparer <code>etc/HOSTAME</code> pour
chaque client. Personnellement, je recommande d'avoir les fichiers
de <code>rc.d</code> distincts pour chaque client puisque la
configuration et le matériel peuvent varier d'une machine à
l'autre.</p>
<p>Pour chaque client, ajouter dans la <code>fstab</code> la ligne
swap appropriée :</p>
<blockquote>
<pre><code>
/dev/swap_partition swap swap default 1 1
</code></pre></blockquote>
<p>Pour le reste des fichiers de /etc du client, vous pouvez soit
mettre des liens durs vers <code>/clients/etc/*</code> , ou mettre
des liens symboliques vers <code>/serveur/etc</code> (qui est
l'endroit où est monté <code>/clients/etc</code>).</p>
<p>Assurez-vous que votre machine peut résoudre correctement, soit
par <b>named</b> ou grâce à <b>etc/hosts</b>. Ce n'est pas une
mauvaise idée de garder l'adresse IP du serveur dans
<code>/etc/hosts</code>, plutôt que de compter sur la résolution.
Si vous comptez uniquement sur la résolution de noms, un problème
avec <code>named</code> empêchera vos clients de booter.</p>
<h2><a name="ss3.4">3.4 Booter la machine</a></h2>
<p>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 :-)</p>
<h2><a name="s4">4. Créer d'autres clients</a></h2>
<p>Si vous avez suivi mes instructions jusqu'ici, cela devrait être
facile - changer de répertoire vers <code>/clients</code> et tapez
:</p>
<blockquote>
<pre><code>
cp -a hostname1 hostname2
</code></pre></blockquote>
<p>et vérifiez bien les points suivants :</p>
<blockquote>Les fichiers rc.d/* correspondent au matériel et la
configuration logicielle <b>etc/HOSTNAME</b> est correcte, la ligne
de swap de fstab est correcte, les liens symboliques
<code>dev/mouse, dev/modem</code> et <code>/dev/cdrom</code> sont
corrects.</blockquote>
<pre>
Bonne Chance...
</pre>
</body>
</html>
|