Comment réduire la consommation mémoire sous Linux.

_Todd Burgess (tburgess@uoguelph.ca)_
_adaptation française :_ David Cotton (dcotton@nat.fr)

   v0.1, dernière mise à jour le 21 mars 1998.
     _________________________________________________________________

   _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. :)_
     _________________________________________________________________

1. Le noyau de Linux.

   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 : 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é : 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".

2. Les consoles virtuelles

   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 /etc/inittab. Pour désactiver des consoles :

    1. Chargez /etc/inittab dans un éditeur de texte.
    2. Recherchez une ligne ressemblant à (le point clé étant une ligne
       commençant par c1) : c1:12345:respawn:/sbin/getty tty1 38400 linux
       Commencez par le nombre le plus élevé (ici c6) et commentez la
       ligne en insérant un '#' à 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.
    3. Relancez votre machine pour que les changements prennent effet.

3. Les démons

   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 /etc/rc.d/rc.* .

   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 :

#!/bin/sh
echo "salut tout le monde"
#echo "adieu monde cruel"

   Ce script va afficher la chaîne "salut tout le monde". Les shell
   scripts doivent contenir la ligne "#!/bin/sh" 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 '#' 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 à :

if conditionquelconque
  do quelquechose
fi

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

   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ù inetd
   est chargé dans la Slackware je ferais :

cd /etc/rc.d
grep -n inetd rc.*

3.1 inetd

   inetd permet de faire des choses telles que telnet, ftp et envoyer des
   requêtes de type talk à 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 inetd.

3.2 lpd

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

3.3 nfsd et mountd

   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é.

3.4 portmap

   Le démon portmap permet de gérer les services RPC (NdT : 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 portmap.

3.5 sendmail

   sendmail 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.

3.6 les autres

   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 : syslogd et klogd.

4. Conclusion

   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

   tburgess@uoguelph.ca

   http://eddie.cis.uoguelph.ca/~tburgess