<!-- Mini-HOWTO Small Memory pour Linux en francais, source SGML             -->
<!-- Version anglaise : Todd Burgess (tburgess@uoguelph.ca)                  -->
<!-- Version francaise: David Cotton (dcotton@nat.fr)                        -->

<!doctype linuxdoc system>

<article>
<title>Comment réduire la consommation mémoire sous Linux.
<author>
<bf>Todd Burgess (tburgess@uoguelph.ca)</bf> <newline>
<em>adaptation française&nbsp;:</em> David Cotton (dcotton@nat.fr)
<date>v0.1, dernière mise à jour le 21 mars 1998.

<abstract>
L'objet de ce mini HowTo est de décrire comment utiliser Linux avec un système 
disposant de peu de mémoire. En considérant que l'achat de plus de mémoire est 
hors de question, il existe de nombreux moyens de réduire la consommation de 
mémoire sous Linux.

De nombreuses distributions Linux sont, telles qu'elles sont livrées, sont
boulimiques du point de vue de la mémoire. Elles lancent plus de services et 
offrent plus de fonctionnalités que ce dont la plupart d'entre nous aura 
jamais besoin. En supprimant beaucoup de ces services vous pouvez libérer 
plusieurs mégas de véritable mémoire. 

Mon propre système est un 486DX2-66 avec 12Mo de mémoire physique et 12Mo de 
fichier d'échange. Il fait tourner Linux avec bonheur depuis les trois 
dernières années et, on peut l'espérer, il continuera à faire tourner Linux pendant encore quelques années. :)


<toc>
<sect>Le noyau de Linux.
<p>

Tous les noyaux Linux fournis avec les distributions sont assez bouffis et 
contiennent plus de fonctions que ce qu'aucun d'entre nous utilisera jamais. 
Si vous n'avez pas recompilé votre propre noyau, il est fortement recommandé de 
le faire. Comment recompiler un noyau est en dehors du domaine de ce document 
mais d'excellents livres et guides sur Linux couvrent ce sujet en détails.

Si vous recompilez votre noyau, pensez à ne pas inclure plus de fonctions que 
ce dont vous avez besoin. Par exemple&nbsp;: combien d'entre vous ont inclus le 
support de PLIP dans leur noyau ? Combien de ceux qui l'ont inclus l'utilisent 
effectivement ? Les noyaux plus petits requièrent moins de temps pour se 
charger, utilisent moins de mémoire et de cycles CPU.

Autre possibilité&nbsp;: les modules. Je ne les utilise pas personnellement 
parce que je les trouve encombrants. Si vous les utilisez et les aimez alors 
ils peuvent aider à soulager "l'embonpoint du noyau".

<sect>Les consoles virtuelles
<p>

Les consoles virtuelles sont un merveilleux moyen de libérer de la mémoire. La 
majorité des distributions de Linux lance environ 6 consoles par défaut. En 
moyenne l'exécution de 6 consoles nécessite à peu près 4Mo de mémoire. En 
retirer deux ou trois peut libérer quelques mégas de mémoire.

La plupart des utilisateurs peuvent démarrer en ne lançant que 3 ou 4 consoles. 
Combien vous choisirez d'en retirer est une question de préférences 
personnelles. Souvenez vous simplement que moins vous en exécuterez, plus vos 
applications auront de la mémoire pour tourner.

Le fichier qui indique combien de consoles virtuelles doivent être lancées est 
<tt>/etc/inittab</tt>. Pour désactiver des consoles&nbsp;:

<enum>
<item>Chargez <tt>/etc/inittab</tt> dans un éditeur de texte.
<item>Recherchez une ligne ressemblant à (le point clé étant une ligne 
commençant par c1)&nbsp;:

<tt>c1:12345:respawn:/sbin/getty tty1 38400 linux</tt>

Commencez par le nombre le plus élevé (ici c6) et commentez la ligne en 
insérant un '<tt>&num;</tt>' à la première colonne. Répétez cette étape autant de 
fois que nécessaire. Souvenez vous que chaque ligne que vous mettez en 
commentaire est une console virtuelle de moins.
<item>Relancez votre machine pour que les changements prennent effet.
</enum>

<sect>Les démons
<p>

Beaucoup de distributions de Linux lancent de nombreux démons dont la majorité 
d'entre nous n'aura jamais l'usage. La plupart de ces démons se charge par 
des scripts. La localisation de ces scripts, ainsi que leur nom dépendent de votre 
distribution de Linux. Les scripts de démarrage de la Slackware sont regroupés 
dans <tt>/etc/rc.d/rc.*</tt> .

Avant de poursuivre, une connaissance de la programmation de shell-scripts
Unix serait un avantage certain. Si toutefois vous n'avez aucune expérience 
dans l'écriture de scripts pour Unix, ce qui suit est probablement la plus 
courte introduction à la programmation de scripts jamais écrite.

Prenez le script suivant&nbsp;:

<tscreen><verb>
#!/bin/sh
echo "salut tout le monde"
#echo "adieu monde cruel"
</verb></tscreen>

Ce script va afficher la chaîne <tt>"salut tout le monde"</tt>. Les shell scripts
doivent contenir la ligne 
<tt>"&num;!/bin/sh"</tt> en toute première ligne. Après cela chaque ligne sera 
exécutée comme si vous l'aviez tapée au clavier (considérez les scripts comme 
rien d'autre que des macros du clavier améliorées).

Les lignes qui commencent par un '<tt>&num;</tt>' sont dites commentées car 
elles ne sont pas exécutées par l'interpréteur de commande. Beaucoup de scripts 
de démarrage, quand ils chargent des démons, ressemblent à&nbsp;:

<tscreen><verb>
if conditionquelconque
  do quelquechose
fi
</verb></tscreen>

Ce que vous voulez faire, c'est mettre en commentaire toutes les lignes allant 
de la marque <tt>if</tt> à la marque <tt>fi</tt>.

Vouloir localiser où un démon est chargé c'est rechercher le nom du démon dans 
les scripts de démarrage. Si je voulais trouver où <tt>inetd</tt> est chargé 
dans la Slackware je ferais&nbsp;:

<tscreen><verb>
cd /etc/rc.d
grep -n inetd rc.*
</verb></tscreen>

<sect1>inetd
<p>

<tt>inetd</tt> permet de faire des choses telles que telnet, ftp et envoyer des 
requêtes de type <tt>talk</tt> à votre machine. Si vous n'utilisez pas votre système en 
tant que serveur et que vous n'avez pas besoin d'accéder à l'un de ces services 
à distance vous pouvez supprimer <tt>inetd</tt>.

<sect1>lpd
<p>

<tt>lpd</tt> est utilisé pour imprimer des fichiers sur votre imprimante en 
employant la commande <tt>lpr</tt>. Si vous n'imprimez jamais à partir de votre 
station Linux vous pouvez retirer <tt>lpd</tt>. Si toutefois vous possédez une 
imprimante HP Deskjet et aimeriez imprimer je recommande fortement l'ensemble 
<tt>dj-printcap</tt> disponible sur le site 
<url url="ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz">

<sect1>nfsd et mountd
<p>

Ces deux démons sont utilisés pour lancer un serveur NFS. Si vous n'utilisez 
jamais votre système Linux comme serveur NFS vous pouvez les retirer en toute 
sécurité.

<sect1>portmap
<p>

Le démon <tt>portmap</tt> permet de gérer les services RPC (NdT&nbsp;:
Remote Procedure Call = Exécution de fonctions sur une autre
machine). Si vous ne lancez pas de serveur NFS ou tout autre
programme RPC, vous pouvez enlever <tt>portmap</tt>.

<sect1>sendmail
<p>

<tt>sendmail</tt> est un autre démon nécessitant pas mal de mémoire. Si vous 
n'utilisez jamais votre station Linux pour relayer l'envoi de courrier 
électronique et que vous ne recevez jamais de courrier vous pouvez probablement 
le retirer. Si vous envoyez du courrier de votre station Linux, la plupart des 
logiciels clients peuvent être configurés pour poster le courrier à partir d'un 
autre serveur.

<sect1>les autres
<p>

Il peut y avoir d'autres démons lancés par votre système dont vous n'avez pas 
besoin. Retirez ce que vous jugez inutile. Deux démons doivent impérativement 
être lancés&nbsp;: <tt>syslogd</tt> et <tt>klogd</tt>.

<sect>Conclusion
<p>

Ce qui précède illustre le chemin que j'ai suivi pour économiser la mémoire sur 
ma station Linux. J'espère vous avoir fourni quelques clés pour vous permettre 
de conserver toute la mémoire de votre station Linux.

Bonne chance et bon bidouillage !

Todd Burgess

<url url="tburgess@uoguelph.ca">

<url url="http://eddie.cis.uoguelph.ca/~tburgess">

</article>
