Administration

Table of Contents

Choix du système démarré (boot, LILO)
Paramètres communiqués au noyau (LILO, loadlin)
Création d'une disquette d'amorçage de secours (boot, rescue)
Secteur d'amorçage (boot sector, démarrage, réinstallation secteur LILO)
Installation de paquetages d'une autre distribution (rpm, deb, pkg)
Mise à jour de RPM
Pourquoi mettre à jour ? (upgrade, update, mise à jour)
Versions du noyau
Message au démarrage: maximum mount count, check forced
Espace disque insuffisant (inodes)
Montage de systèmes de fichiers (disque, partition, accès, fstab, mount)
Formats de disques (FAT, MS-DOS, MacOS, HFS, FAT32, Joliet, UDF, NTFS)
Montage d'une partition NTFS (Windows NT, 2000, XP)
/proc (kcore)
Changement de partition (copie, déplacement, disque dur)
Partitionnement (FIPS, FAT)
Numéros des fichiers spéciaux
Fichiers spéciaux (/dev, périphérique)
Unable to get major
Identification du processus utilisant une ressource
Version d'exécutable, bibliothèques partagées
Lenteur du système
Utilisation de la mémoire
Limitations du noyau (RAM, processus, i-noeuds, fichiers ouverts)
Où se trouvent les modules ?
Locales : Perl, X Window ... (LANG)
Locales et Red Hat 8.0 (UTF-8)

Choix du système démarré (boot, LILO)

Question

(LILO) Comment changer le système d'exploitation lancé par défaut au démarrage ?

Réponse

Placer dans le fichier /etc/lilo.conf une déclaration default=nomImage (nomImage remplace ici le nom de l'une des configurations image= de ce fichier). Invoquer lilo.

Autre solution : utiliser l'option -D de lilo pour déterminer le système lancé par défaut. Exemple: lilo -D linux pour lancer par défaut le système nommé linux.

Pour choisir quel système démarrer uniquement au prochain démarrage, utiliser l'option -R de lilo.

Paramètres communiqués au noyau (LILO, loadlin)

Question

Comment fixer les paramètres que LILO ou loadlin devront passer au noyau?

Réponse

LILO dynamique (« à la main »)

Pour passer un paramètre au noyau via LILO il suffit, lors du démarrage, de l'obliger à afficher sa chaîne d'appel LILO boot:

Pour cela, verrouiller le mode « Numérique » (touche Verr Num) ou le haut de casse (« majuscules »), ou bien maintenir une touche morte (par exemple Control ou Shift) enfoncée durant le premier accès au disque.

Sitôt LILO boot: affiché, appuyer sur la touche TABulation. Les noms logiques des systèmes déclarés dans le fichier de configuration de LILO apparaissent. Choisir celui d'un noyau Linux stable, le composer puis insérer un espace et le paramètre souhaité.

Exemple (cas d'un noyau appelé lindis auquel on souhaite passer le paramètre single) :

  1. sitôt après les diagnostics du BIOS, maintenir la touche Control enfoncée alors que le démarrage sur disque commence. LILO prend la main et affiche:

           LILO boot:

  2. on peut alors appuyer sur TAB afin d'obtenir la liste des systèmes d'exploitation accessibles :

           LILO boot: ((appuyer sur la touche "TABulation"))
           lindis oldlin beta msdos ((noms des systèmes "bootables"))

  3. fournir à LILO le nom de l'un des systèmes, suivi, s'il s'agit d'une version de Linux, du nom du paramètre et, le cas échéant, de la valeur associée.

    Exemple :

          LILO boot: lindis single

LILO statique (fichier de config)

Pour figer un paramètre, placer dans la section adéquate du fichier /etc/lilo.conf une déclaration append="X", où X remplace le paramètre à transmettre au noyau. Le BootPrompt-HOWTO fournit toutes les précisions nécessaires.

loadlin

loadlin est un petit programme grâce auquel on peut lancer Linux àpartir d'une session MS-DOS.

S. Stephant:

La syntaxe générale de loadlin est:

     loadlin.exe ton_noyau root=ta_partition_racine [les paramètres du noyau]

Il suffit donc de mettre une ligne dans le config.sys. Exemple (cas d'une partition Linux sur /dev/hda1, noyau version 2.30) :

     shell=c:\loadlin\loadlin.exe c:\loadlin\vmlinuz.230 root=/dev/hda1 ro

Attention: la ligne shell=... de MS-DOS ne peut contenir que 127 caractères. La solution est de passer par un fichier de paramètres. config.sys devient alors :

     shell=c:\loadlin\loadlin.exe @c:\loadlin\params.dat

et le fichier params.dat contient, par exemple :

    c:\loadlin\vmlinuz.230 root=/dev/hda1 ro

Lire le fichier manual.txt livré avec loadlin.

Commentaires

LILO

  • Ajouter le mot-clé prompt au fichier de configuration /etc/lilo.conf pour que LILO affiche systématiquement sa chaîne d'appel ;

  • utiliser aussi, en ce cas, le paramètre timeout afin de limiter le nombre de secondes d'attente de LILO après affichage de sa chaîne d'appel. Exemple: timeout=50 provoque un délai de 5 secondes.

Création d'une disquette d'amorçage de secours (boot, rescue)

Secteur d'amorçage (boot sector, démarrage, réinstallation secteur LILO)

Question

Comment restaurer ou supprimer le secteur de démarrage de LILO ?

Réponse

A. Gomes-do-Vale :

Quand dans la suite il est question d'une disquette de démarrage, on peut en général utiliser le CD d'installation de la distribution.

S. Stephant :

Pour restaurer le secteur de démarrage installé par LILO :

  1. démarrer le système grâce à un jeu de disquettes boot/root ;

  2. monter sous /mnt la partition principale Linux du disque dur ;

  3. invoquer lilo -r /mnt. Il sera peut-être nécessaire d'utiliser /sbin/lilo -r /mnt, voire /mnt/sbin/lilo -r /mnt.

M. Boyer :

Sous Red Hat : amorcer grâce à la disquette rescue. Juste avant le démarrage une chaîne d'appel boot: apparaît, saisir à ce moment rescue linux root=Z (remplacer Z par le nom de la partition racine). Il faut ensuite invoquer lilo.

Pour remplacer le secteur de démarrage installé par LILO :

  • sous Linux :

    • lilo -u

    • dd if=NOM_FICHIER of=/dev/hda bs=446 count=1, où NOM_FICHIER remplace le nom du fichier abritant la sauvegarde du secteur de démarrage originel (dûment préservé sur une disquette !), souvent nommé /boot/boot.NUMERO_MAJEUR NUMERO_MAJEUR correspond au majeur périphérique, par exemple :

      • 0300 pour /dev/hda

      • 0306 pour /dev/hda6

      • 0800 pour /dev/sda

  • sans employer Linux:

    1. préparer une disquette MS-DOS système contenant FDISK.EXE;

    2. démarrer le système grâce à elle;

    3. invoquer FDISK /MBR.

En cas de problème (impossibilité d'écrire le secteur de démarrage) examiner le SETUP du BIOS afin d'autoriser son écriture.

Le mode de partitionnement ou de démarrage de Linux ne varie pas selon le type (FAT16, FAT32, NTFS ...) des éventuelles partitions (MS-Windows ou non) du disque.

Si LILO ne suffit pas employer GRUB ou MBoot

Installation de paquetages d'une autre distribution (rpm, deb, pkg)

Question

Comment profiter, sur une distribution X, des paquets destinés à une autre distribution ?

Réponse

Compiler et installer rpm. Se procurer les utilitaires alien, unrpm, rpm4everyone, rpm2targz (rpm2tgz)

E. David:

Un .deb n'est autre qu'une archive ar contenant (entre autres) le .tgz. Un petit coup de ar sur un .deb permet donc d'installer un package debian « à la main » sur une slackware.

A. Gomes-do-Vale:

Pas mal de problèmes peuvent se poser; outre les problèmes de dépendances évidents (les outils comme alien n'en tiennent pas compte), les différence dans la structure de /etc peuvent être gênantes. De plus, quand on convertit un paquet dans un format différent, on perd généralement les scripts de configuration ; il faut alors terminer l'installation à la main.

Mise à jour de RPM

Question

Quand j'essaie d'installer un paquet RPM, j'ai un message d'erreur me réclamant RPM version 4.

Réponse

A. Gomes-do-Vale :

Pour passer de RPM 3 à RPM 4 (ou pour toute autre mise à jour du même genre), il existe plusieurs solutions :

  • Recompiler et installer RPM à partir des sources sans utiliser le système RPM installé (peu recommandé) ;

  • Installer un paquet de transition (les versions 3.0.5 et suivantes de RPM reconnaissent le format de la version 4) ;

  • Installer les paquets disponibles sur ftp.rpm.org ; on y trouve entre autres un RPM 4 installable avec RPM 3.

Dans tous les cas, ne pas oublier de faire un rpm --rebuilddb après la mise à jour.

Pourquoi mettre à jour ? (upgrade, update, mise à jour)

Question

Dans quels cas de figure doit on passer à une nouvelle version d'un logiciel donné ?

Réponse

J.-C. Delépine (édité):

  • Tou l3 taN !!! L1nuX RuL3z, wInD0w2 5ucK5 !!!!! (traduction : parce que l'on est un ahuri ou un frimeur)

  • Quand la nouvelle version supporte un matériel ou a de nouvelles fonctionnalités qui vous intéresse.

  • Quand il s'agit d'un des logiciels sensibles vous reliant au reste du monde (noyau, popd, imapd, named, sendmail, ...). On corrige en effet souvent des trous de sécurité impliquant ces logiciels.

  • quand il s'agit de soft indispensable pour la sécurité de vos données comme les e2fstools, il est recomandé d'utiliser les versions les plus récentes qui prennent mieux en charge davantage de cas de figure.

De façon générale, la lecture des 'release notes' ou d'un éventuel fichier Changelog vous renseignera sur l'utilité que peut avoir pour vous telle ou telle version d'un logiciel.

D'autre part, les nouvelles versions des logiciels sensibles sont généralement annoncées sur freshmeat ou dans le forum comp.os.linux.announce, avec un résumé des nouvelles fonctionnalités, la liste des bugs corrigés, les nouveaux matériels gérés...

A. Gomes-do-Vale:

Ne pas oublier que les distributions modernes incluent souvent un outil de mise à jour automatique (apt, up2date, yup...). Les mises à jour installées par ces outils sont généralement suffisantes pour prévenir les problèmes les plus importants.

Versions du noyau

Question

Quelle version de noyau dois-je utiliser ?

Réponse

S. Écolivet, édité par A. Gomes-do-Vale :

La version du noyau apparait sous la forme de trois nombres : X.Y.Z.

  • X correspond à la version majeure du noyau. Depuis juin 1996, les versions des noyaux linux courants sont de la forme 2.Y.Z.

    Y indique la branche de développement du noyau. Si Y est pair, il s'agit d'un noyau de la branche stable. La branche stable actuelle correspond à la version 2.4 du noyau. Si Y est impair, il s'agit d'un noyau potentiellement instable et pouvant endommager le système. Il est très fortement déconseillé d'utiliser un noyau instable. Pour les personnes utilisant malgré tout un noyau instable, il est conseillé de suivre attentivement la liste de diffusion linux-kernel dont l'adresse est indiquée dans le fichier REPORTING-BUGS des sources du noyau.

    Z est le numéro de version mineur, correspondant principalement aux corrections de bugs.

Message au démarrage: maximum mount count, check forced

Question

Pendant le boot, de temps en temps, un message maximum mount count, check forced apparaît. Qu'est-ce?

Réponse

D. Segonds :

Le système de fichiers comporte un compteur qui est incrémenté à chaque fois qu'un montage est effectué. Lorsque le compteur atteint la valeur maximale, la vérification est lancée à l'appel de fsck. C'est un comportement normal. Vous pouvez modifier la valeur maximale du compteur en utilisant l'option -c de l'utilitaire tune2fs.

Espace disque insuffisant (inodes)

Question

Le système refuse de créer des fichiers "espace disque insuffisant". Pourtant df indique qu'il reste de la place sur la partition.

Réponse

Vérifier avec df -i qu'il reste des inodes disponibles. S'il n'y en plus, il faut faire du nettoyage en supprimant des fichiers inutiles.

Si la partition abrite beaucoup de petits fichiers, on peut choisir une solution plus radicale qui consiste à recréer le système de fichiers en allouant plus d'inode. Attention, le reformatage détruit tous les fichiers présents sur la partition. La commande à utiliser est mke2fs, avec l'une des options -T type, -i XXXX, ou -N YYYY. Pour en savoir plus, man mke2fs.

A. Gomes-do-Vale :

En pratique, l'option -T de mke2fs ne donne pas de très bons résultats quand on spécifie le type news, on se retrouve facilement à court d'i-noeuds si le système de fichiers est effectivement utilisé pour stocker un spool de news traditionnel (avec un fichier par article). Dans ce cas, il vaut mieux passer les options -i 1024 -b 1024.

Montage de systèmes de fichiers (disque, partition, accès, fstab, mount)

Réponse

Le simple ajout d'une ligne à /etc/fstab permet à n'importe quel utilisateur de monter/démonter un support amovible sans devoir employer tous les paramètres.

Voici, par exemple, un extrait de /etc/fstab (cas d'un CD-ROM ATAPI maître sur la seconde chaîne EIDE)

     /dev/hdc    /mnt/cd     iso9660   noauto,user,exec,ro,umask=033,unhide 0 0

Chaque ligne du fstab est composée de champs qui décrivent un système de fichiers montable. Des espaces ou tabulations séparent ces champs.

  • le premier champ (/dev/hdc) contient le nom du fichier spécial associé au périphérique ;

  • le deuxième (/mnt/cd) le nom du répertoire où le montage sera effectué (il DOIT exister !) ;

  • le troisième le type de système de fichiers, utiliser iso9660 pour un CD-ROM, vfat pour une partition MS-DOS ;

  • le quatrième (noauto,user [...]=033) les options de montage ;

    noauto :

    Pas de montage automatique lors du boot.

    user :

    Montable/démontable par un utilisateur (c'est ce qui nous intéresse).

    exec :

    Les binaires placés sur ce support seront exécutables.

    ro :

    Lecture seule ( Read-Only).

    umask :

    « permissions » du répertoire de montage. 033 (ou 000, si vfat) permet à tous de lire.

  • le cinquième (premier 0) la fréquence des sauvegardes par dump : laisser 0 dans le cas d'un volume amovible ;

  • le sixième (second 0) le rang de passage à fsck : laisser 0 dans le cas d'un volume amovible ;

Utiliser /dev/sr0 en lieu et place de /dev/hdc pour le premier CD SCSI.

N'importe quel utilisateur peut alors invoquer mount /mnt/cd puis umount /mnt/cd et obtenir satisfaction. ATTENTION : le binaire de mount doit être setuid root :

     chown root `which mount`
     chmod +s `which mount`

Autres exemples :

     /dev/hda1   /mnt/dos-c   vfat    umask=003,codepage=850,noauto,user,exec 0 0
     /dev/sda4   /mnt/jaz     ext2    noauto,user,exec 0 0
     /dev/fd0    /mnt/floppy  auto    sync,user,noauto,unhide 0 0

Documentation: commencer par les pages de manuel de mount et fstab.

S. Stephant :

Utiliser les options gid, uid et/ou umask pour limiter les possibilités des divers utilisateurs sur les systèmes de fichiers ainsi montés.

Afin de limiter l'accès de certaines partitions à un utilisateur ou à un groupe précis, on peut utiliser l'option de montage umask. Par exemple, pour que seuls les membres du groupe « dos » (gid=202) puissent accéder à votre partition vfat, on peut utiliser la ligne suivante dans le fstab :

     /dev/hda1   /diskc   vfat   noauto,user,noexec,gid=202,umask=0007 0

De même, pour autoriser seulement l'utilisateur « durand » (uid=100) à écrire sur cette partition, autoriser les membres du groupe « dos » (gid=202) à y lire, et interdire l'accès aux autres, on peut utiliser une entrée comme :

     /dev/hda1 /diskc vfat noauto,user,noexec,uid=100,gid=202,umask=0027 0 0

A. Gomes-do-Vale :

Les systèmes de fichier de type FAT n'ont pas de notion de droits. L'utilisation des options umask, uid et gid est nécessaire pour que des utilisateurs puissent y accéder.

Ne modifier que /etc/fstab, jamais/etc/mtab.

Formats de disques (FAT, MS-DOS, MacOS, HFS, FAT32, Joliet, UDF, NTFS)

Question

Comment exploiter les disques non écrits sous Linux ?

Réponse

Voir aussi the section called “Montage de systèmes de fichiers (disque, partition, accès, fstab, mount) ”.

  • Mac : HFS ou pilote HFS (intégré dans le noyau 2.2)

  • MS-DOS : mtools et pilote vfat intégré au noyau

  • FAT32 : Linux peut accéder aux partitions FAT32 (y compiler le code du système de fichiers vfat, puis l'utiliser), ou bien employer une version récente des mtools.

  • CDUD FRW (UDF)

  • V. Bernat :

    NTFS est très expérimental ; son développement a repris et il devrait donc s'améliorer. En attendant, il est capable de lire les données d'une partition NTFS mais est très dangereux pour y écrire : ne vous y aventurez pas.

Montage d'une partition NTFS (Windows NT, 2000, XP)

Question

J'aimerais accéder à mes partitions NTFS.

Réponse (A. Gomes-do-Vale)

Un support expérimental est inclus dans le noyau Linux. Apparemment, il fonctionne assez bien en lecture, mais son utilisation en écriture est peu sûre (pertes de données à prévoir). Le module correspondant s'appelle ntfs.o. Certaines distributions le fournissent en standard, pour d'autres (Red Hat 7.3 par exemple) il faudra recompiler le noyau. Ensuite, charger le module par un modprobe ntfs. Pour monter la partition automatiquement, insérer une ligne de ce genre dans /etc/fstab:

      /dev/hda1    /mnt/win     ntfs   defaults,ro      0 0
     
en remplaçant /dev/hda1 et /mnt/win par les bonnes valeurs.

Pour écrire des données depuis Linux sur une partition lisible par Windows, préférer le système de fichiers FAT. L'écriture sur du NTFS n'est réellement pas fiable.

/proc (kcore)

Question

Qu'abrite le répertoire /proc?

Réponse

Un ensemble de fichiers « virtuels » permettant de communiquer avec le noyau. Aucun d'eux n'occupe d'espace sur le disque.

Notamment, le fichier kcore, dont la taille peut effrayer, n'est qu'une image de la mémoire disponible sur la machine. N'essayez pas de le détruire pour « libérer » de l'espace disque...

Changement de partition (copie, déplacement, disque dur)

Question

J'ai tout d'abord installé Linux (Red Hat) sur le disque dur hda. Or, j'ai depuis acheté un autre disque dur plus gros que j'ai mis en maître sur ma première nappe, reléguant le précédent sur ma deuxième nappe IDE... Mon ancienne installation de Linux se retrouve donc maintenant en hdc... Que faut-il modifier pour arriver à la faire tourner comme avant mais en hdc...?

Réponse

Solution fournie par J.C. Richard :

  • boote sur une disquette rescue. Puisque tu as la Red Hat, utilise la disquette de boot fournie, mais tape rescue quand LILO te demande ce que tu veux;

  • on va supposer que ton root linux est passé de hda1 à hdc1 pour t'expliquer la méthode.

         mkdir /mnt/tmp
         mount /dev/hdc1 /mnt/tmp
         cd /mnt/tmp/etc
         vi fstab
    (remplace alors tes occurences de /dev/hda1,2,3,4 par /dev/hdc1,2,3,4)

  • ensuite :

    vi lilo.conf
  • tu devrais modifier de la manière suivante:

         boot=/dev/hda	(pour avoir LILO en MBR)
         map=/boot/map
         install=/boot/boot.b
         prompt
         image=/boot/vmlinuz
                 label=linux
                 root=/dev/hdc1
                 read-only
    et tout le reste de ton lilo.conf est à modifier dans le même sens, si tu as des partitions Dos, NT et autres à installer;

  • Ne lance pas immédiatement lilo, cela ne fonctionne pas toujours;

  • reboote avec la disquette (ou sous DOS). Si tu passes via DOS, utilises loadlin en lui indiquant le montage root=/dev/hdc1;

  • lors du démarrage effectué grâce à la disquette, au prompt LILO tape : mount root=/dev/hdc1

  • ensuite, tu te loges root et fais un lilo. Tout est réparé.

La solution indiquée ci-dessus n'est pas spécifique à Red Hat. Afin d'éviter de rebooter sous un autre système (ou s'il n'y en a pas), il suffit, après avoir correctement modifié lilo.conf, d'exécuter la commande suivante: lilo -C /mnt/tmp/etc/lilo.conf -r /mnt/tmp.

Partitionnement (FIPS, FAT)

Question

Comment repartitionner sans détruire de partition ?

Réponse

Sous Linux (ext2) : lire la doc d'ext2resize et de GNU parted.

Le logiciel MS-DOS FIPS permet cela, mais uniquement avec les FAT 16 bits. Une version plus récente traite les FAT32.

Numéros des fichiers spéciaux

Question

Les devices sont numérotés selon leur ordre d'apparition et non en fonction de leurs addresses comme sur les Unix classiques.

Si la config hardware change par rajout de carte ou de périphèriques, il faut modifier /etc/fstab pour pouvoir amorcer Linux... Penser aussi aux périphériques SCSI qui s'autoconfigurent en termes d'ID ou qui sont "hot pluggables".

Réponse

É. Dumas, édité par A. Gomes-do-Vale :

La solution s'appelle devfs. C'est intégré au noyau 2.4.

Fichiers spéciaux (/dev, périphérique)

Question

Comment ajouter une entrée dans /dev ?

Réponse

À chaque périphérique peut correspondre un (ou plusieurs) fichier spécial grâce auquel les programmes dialoguent avec le pilote de périphérique correspondant.

Règles:

  • créer les fichiers spéciaux grâce à MAKEDEV ou mknod. Lire le fichier Documentation/devices.txt livré avec les sources du noyau afin de déterminer les paramètres adéquats;

  • le nom du fichier spécial n'a aucune importance sur le plan logiciel, seuls comptent son type, sa majeure et sa mineure;

  • le fait que le fichier nécessaire existe dans /dev n'est pas suffisant, il faut aussi que le pilote de périphérique nécessaire soit disponible (compilé dans le noyau ou sous forme de module).

La liste des numéros majeur et mineur des fichiers spéciaux et leur signification se trouvent dans le fichier /usr/src/linux/Documentation/devices.txt (il faut avoir installé les sources du noyau).

Unable to get major

Question

Que signifie le message unable to get major suivi d'un nombre ?

Réponse

Un pilote de périphérique compilé dans le noyau (donc « intégré ») se trouve aussi disponible sous forme de module.

E. Decaen: utiliser modprobe -c pour étudier la liste des modules en ligne.

Identification du processus utilisant une ressource

Question

Comment déterminer quel processus utilise une ressource donnée (fichier, donc par extension périphérique)?

Réponse

Employer l'utilitaire fuser, livré avec l'ensemble psmisc.

Exemple commenté :

     $ fuser /dev/ttyS1     # qui donc utilise /dev/ttyS1 ?
     /dev/ttyS1:    245     # le processus numéro 245

     $ ps -auxw|grep 245   # quel est ce processus ?
     root       245  0.3  6.8  8336  4356  ?  S   10:34   1:29 X :0
     # c'est X Window !

     $ fuser /usr/bin/X11/X     # qui donc utilise "/usr/bin/X11/X" ?
     /usr/bin/X11/X:    245     # programme exécuté par le processus 245
On peut aussi installer lsof.

Version d'exécutable, bibliothèques partagées

Question

Comment déterminer le type d'un exécutable ou obtenir la liste des bibliothèques partagées qu'il emploie ?

Réponse

Commande ldd NOMFICHIER.

V. Bernat :

ldd ne donne pas le type de l'exécutable, il faut utiliser la commande file.

Lenteur du système

Question

Mon PC rame sous Linux.

Réponse

V. Bernat

Certaines distributions pensent que vous avez besoin de beaucoup de choses, comme un serveur httpd. Il est facile de gagner un peu de mémoire en désactivant les services dont vous n'avez pas usage, soit à l'aide de chkconfig, soit à l'aide de l'outil adéquat dans le panneau de contrôle. De plus, KDE et Gnome sont des environnements très complets disposant de beaucoup plus de fonctionnalités que l'explorateur de Windows : comparer les deux en terme de vitesse n'est pas une bonne idée. Vous pouvez essayer d'autres "interfaces" comme window maker ou fvwm2.

Utilisation de la mémoire

Question

Alors que mon système ne fait rien et que je n'ai quasiment pas de processus qui tournent, la commande free indique que quasiment toute ma mémoire est utilisée!

Réponse

O. Tharan:

C'est normal. Linux utilise la mémoire pour plusieurs choses. Tout d'abord pour le noyau lui-même, évidemment, c'est de la mémoire irrécupérable pour autre chose ; ensuite, la mémoire utilisée par les applications ; et puis tout le reste, en mémoire cache disque (dite "buffer cache").

La mémoire cache, c'est ce que le système a utilisé à un moment et n'utilise plus. Mais, il se pourrait que les données (programme, fichier) soient demandées par l'utilisateur d'ici peu, alors au lieu d'aller les rechercher sur le disque, on va chercher ces données dans la mémoire cache, ce qui est beaucoup plus rapide.

Linux utilise donc le maximum de mémoire disponible pour en faire du cache, mais s'il s'avère qu'une application a besoin de plus de mémoire, il libère une partie de la cache pour l'application. Donc, rien n'est perdu et tout le monde est satisfait. Avec un peu de recul, on comprendra qu'il n'est pas inutile d'investir dans de la RAM: plus on en aura, plus le système disposera de cache, et plus il paraîtra rapide (il faut mettre un bémol à ceci, car les performances se dégradent si on augmente la RAM sans augmenter par ailleurs le cache processeur).

Le test ultime pour vous faire prendre conscience de ceci: démarrez, lancez X puis Netscape; quittez et relancez Netscape et vous constaterez la différence de vitesse.

Limitations du noyau (RAM, processus, i-noeuds, fichiers ouverts)

Question

Linux ne prend pas en charge (commande free) plus de 64 Mo de RAM. Ou bien, le nombre de fichiers, d'i-noeuds ou de processus simultanément employés excède les limites du noyau.

Réponse

Plus de 64 Mo RAM : utiliser un noyau 2.0.36 ou postérieur suffit, avec certaines machines. À défaut employer le paramètre de démarrage mem=xMx remplace le nombre de Mo de mémoire installés (lire à ce propos the section called “Paramètres communiqués au noyau (LILO, loadlin)”).

SETUP de la machine : ne pas laisser de "memory hole" (à 15 Mo).

J. Bertrand:

Certaines cartes mères (dont les Micronics) possèdent une option dans le BIOS qui s'appelle je crois 'Gestion de la memoire OS/2 / non OS/2'. En activant la gestion de la memoire OS/2 (si on a plus de 64 Mo), les transferts d'information ne se font plus en 16 bits, et Linux reconnaît toute la mémoire.

R. Card :

Dans sa version 2.0, le noyau Linux ne gère plus les descripteurs d'i-noeuds en mémoire et de fichiers ouverts sous forme de tables statiques, mais utilise des listes dont la taille peut varier de manière dynamique.

La taille maximale de ces deux « tables » est définie par deux variables du noyau dont la valeur peut être modifiée grâce à l'appel système sysctl(2). Il est également possible d'accéder à la valeur de ces variables via les fichiers virtuels /proc/sys/kernel/file-max et /proc/sys/kernel/inode-max (fichiers accessibles en lecture comme en écriture).

Afin de modifier le nombre maximal de descripteurs d'i-noeuds en mémoire et de fichiers ouverts, il suffit donc de modifier le contenu de ces fichiers virtuels. Par exemple, sur ftp.lip6.fr, le fichier de commandes rc.local contient :

      echo 16384 > /proc/sys/kernel/inode-max
      echo  8192 > /proc/sys/kernel/file-max
     

Le nombre maximal de processus est défini par la constante NR_TASKS, déclarée dans le fichier d'en-tête <linux/task.h>. Sa valeur par défaut est 512, ce qui est assez raisonnable. Toutefois, si l'on souhaite modifier cette limite, il est nécessaire de recompiler le noyau car les processus sont gérés sous forme d'une table de taille statique.

Question

Quelles quantités de mémoire sont conseillées ?

Réponse

Tout dépend de l'usage recherché :

  • 4 Mo: c'est le grand minimum pour une machine utilisable. Utilisation simple en mode console, login distant sur d'autres machine. Prévoir entre 10 et 30 Mo de swap et une faible réactivité... L'installation ne se fera pas toute seule avec les distributions génériques récente : il faudra commencer par initialiser le swap (lire à ce propos the section called “Système x86 minimal”).

  • de 6 à 8 Mo: machine correctement utilisable en console, prévoir des problèmes d'installation similaires à la version 4 Mo et un swap de taille comparable.

  • de 12 à 16 Mo: configuration minimale pour utiliser un serveur X ou compiler (avec de la patience) des programmes élaborés et de taille toutefois réduite. L'utilisation d'un environnement graphique est peu confortable et demande de la patience au lancement. Prévoir un swap compris entre 8 et 40 Mo selon l'utilisation voulue.

  • de 16 à 24 Mo: machine pleinement fonctionnelle sous X, toutefois un peu légère par rapport aux « standards » d'aujourd'hui. Prévoir entre 8 et 48 Mo de swap...

  • de 32 à 128 Mo: machine standard d'aujourd'hui. Des environnements graphiques gourmands en mémoire (comme WMaker, Enlightment ou KDE) deviennent possibles ainsi que la compilation de gros projets.

  • de 128 Mo à 1 Go: pas de problèmes particulier sur du matériel récent. À noter que sur une machine ayant énormément (1 Go) de mémoire, il est possible d'avoir un délai d'une ou deux secondes entre l'appel d'une commande et son exécution effective. Il semble que ce phénomène soit lié à la recherche de l'exécutable dans le cache. Un moyen de contrer cet effet est de diminuer la taille du cache grâce à /proc/sys. Par exemple, sous root :

    echo "2 10 35" > /proc/sys/vm/buffermem

    pour limiter la taille maximale du cache à 35 % de la mémoire physique.

  • plus de 1 Go: il paraît que cela fonctionne bien ;-)

Où se trouvent les modules ?

Réponse

JC Delépine, édité par A. Gomes-do-Vale :

Le noyau fait appel à kmod (ou kerneld, si antérieur à 2.2), qui demande à modprobe, lequel recherche dans les répertoires définis dans le fichier /etc/modules.conf (ou /etc/conf.modules avec des anciennes versions des modutils) ou, à défaut dans les répertoires /lib/modules/`uname - r`/*

Configuration de modprobe: modprobe -c.

Documents

Module Howto, /usr/src/linux/Documentation/modules.txt

Locales : Perl, X Window ... (LANG)

Question

Message d'avertissement concernant 'locale' lors du lancement d'un script Perl ou d'un programme X11.

Invoquer locale -a afin d'obtenir la liste des fichiers installés, donc des valeurs possibles pour les variables d'environnement.

Réponse

P. Saratxaga :

Avec un système à libc5 il suffit de faire : localedef -f ISO-8859-1 -i en_DK en_DK puis localedef -f ISO-8859-1 -i fr_FR fr_FR

Avec la glibc 2.0 un simple localedef -f ISO-8859-1 -i fr_FR fr suffit. Avec la glibc 2.1 il faut en plus indiquer l'option -u.

Pour X11 il faut, pour certaines locales non supportées par défaut, une petite manipulation supplementaire. Par exemple pour le français en iso-8859-15 éditer le fichier /usr/X11R6/lib/X11/locale.alias pour vous assurer d'avoir ces lignes-ci:

    fr							fr_FR.ISO8859-1
    fr_FR						fr_FR.ISO8859-1
    fr_FR.iso88591					fr_FR.ISO8859-1
    fr_FR.iso885915					fr_FR.ISO8859-15

et dans /usr/X11R6/lib/X11/locale.dir avoir:

    iso8859-1/XLC_LOCALE	fr_FR.ISO8859-1
    iso8859-15/XLC_LOCALE	fr_FR.ISO8859-15

le principe est le même pour d'autres langues ou encodages non présents par défaut.

Documents

Document traitant des locales livrées en RPM

Locales et Red Hat 8.0 (UTF-8)

Question

L'encodage UTF-8 utilisé par défaut sous Red Hat 8.0 n'est pas supporté par certaines applications.

Réponse

Youri:

Pour remplacer le jeu de caractères UTF-8, sélectionné par défaut lors de l'installation de Redhat 8.0, par ISO-8859-15 (ou autre, ça doit être du même style, mais non testé), éditer le fichier /etc/sysconfig/i18n et remplacer toutes les occurences de UTF-8 par ISO8859-15. Exemple de contenu:

Avant

LANG="fr_FR.UTF-8"
SUPPORTED="en_GB.UTF-8:en_GB:en:fr_FR.UTF-8:fr_FR:fr"
SYSFONT="latarcyrheb-sun16"
     
Après
LANG="fr_FR.ISO8859-15"
SUPPORTED="en_GB.ISO8859-15:en_GB:en:fr_FR.ISO8859-15:fr_FR:fr"
SYSFONT="latarcyrheb-sun16"
     
(Je n'ai pas fait de tests plus poussés pour voir si ça marche dans d'autres cas de figure que le mien...)

A. Gilardoni:

Je n'ai pas de Redhat (ça te fait une belle jambe ;-)) mais à la lueur de la lecture des scripts d'init de la distribution et pour faire les choses dans les régles de l'art, soit, si j'étais root et que je veuille appliquer la modif à l'ensemble du système, j'éditerais le contenu du fichier /etc/sysconfig/i18n, soit, comme utilisateur lambda, je recopierais le fichier susnommé en $HOME/.i18n et j'y appliquerais mes modifs en m'aidant de la rubrique «/etc/sysconfig/i18n» du fichier sysconfig.txt qui devrait se trouver dans le répertoire /usr/share/doc/initscripts-6.95. Si j'en juge par le contenu du paquet glibc-common-2.2.93-5.i386.rpm et hors alias, les spécifications locales suivantes sont compilées par défaut pour le français de France : fr_FR, fr_FR@euro, fr_FR.utf8, fr_FR.utf8@euro. Ceci dit, utiliser l'utf8 ne me paraît pas une aussi mauvaise idée que ça à condition, entre autres, d'utiliser également des polices de caractères kivontbien (c).