5.3. Répertoires de /proc/

Les groupes communs d'informations sur le noyau sont regroupés en répertoires et sous-répertoires dans /proc/.

5.3.1. Répertoires de processus

Chaque répertoire /proc/ contient un certain nombre de répertoires nommés à partir de chiffres. Ci-dessous figure un exemple de début de listing:

dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666

Ces répertoires sont appelés répertoires de processus car ils font référence à un ID de processus et contiennent des informations se rapportant à ce processus. Le propriétaire et le groupe de chaque répertoire de processus est paramétré sur l'utilisateur qui exécute le processus. Lorsque le processus est terminé, son répertoire de processus /proc/ disparaît.

Chaque répertoire de processus contient les lignes suivantes:

5.3.1.1. /proc/self/

Le répertoire /proc/self/ est un lien vers le processus en cours d'exécution. Cela permet à un processus de se contrôler lui-même sans avoir à connaître son ID de processus.

Dans un environnement shell, le résultat est le même, que vous répertoriiez le contenu du répertoire /proc/self/ ou celui du répertoire de processus pour ce processus.

5.3.2. /proc/bus/

Ce répertoire contient des informations spécifiques aux divers bus disponibles sur le système. Ainsi, par exemple, sur un système standard comportant des bus ISA, PCI et USB, les informations actuelles relatives à chacun de ces bus se trouvent dans son répertoire sous /proc/bus/.

Le contenu des sous-répertoires et des fichiers disponibles diffère grandement selon la configuration précise de votre système. Cependant, chaque répertoire pour chacun des types de bus contient au moins un répertoire pour chaque bus de ce type. Ces répertoires individuels de bus, généralement indiqués par des chiffres, tels que 00, contiennent des fichiers binaires qui font référence aux divers périphériques disponibles sur ce bus.

Par exemple, un système ayant un bus USB auquel aucun périphérique n'est connecté, a un répertoire /proc/bus/usb/ qui contient plusieurs fichiers:

total 0
dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers

Le répertoire /proc/bus/usb/ contient des fichiers qui détectent les différents périphériques sur les bus USB, ainsi que les pilotes nécessaires pour les utiliser. Le répertoire /proc/bus/usb/001/ contient tous les périphériques présents sur le premier bus USB. En examinant le contenu du fichier devices vous pouvez identifier le concentrateur root USB sur la carte mère:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

5.3.3. /proc/driver/

Ce répertoire contient des informations sur des pilotes spécifiques utilisés par le noyau.

On peut y trouver un fichier commun, rtc, qui fournit une sortie provenant du pilote pour l'horloge temps réel (RTC) (Real Time Clock) du système, le dispositif qui maintient l'heure lorsque le système est éteint. Ci-après figure un exemple de sortie de /proc/driver/rtc:

rtc_time	: 01:38:43
rtc_date	: 1998-02-13
rtc_epoch	: 1900
alarm		: 00:00:00
DST_enable	: no
BCD		: yes
24hr		: yes
square_wave	: no
alarm_IRQ	: no
update_IRQ	: no
periodic_IRQ	: no
periodic_freq	: 1024
batt_status	: okay

Pour plus d'informations sur l'horloge temps réel (RTC), consultez /usr/src/linux-2.4/Documentation/rtc.txt.

5.3.4. /proc/fs

Ce répertoire montre quels fichiers système sont exportés. Si vous exécutez un serveur NFS, vous pouvez taper cat /proc/fs/nfs/exports afin d'afficher les systèmes de fichiers qui sont partagés ainsi que les autorisations accordées pour ces derniers. Pour plus d'informations sur le partage des fichiers système avec NFS, consultez Chapter 9 Le système de fichier réseau (NFS).

5.3.5. /proc/ide/

Ce répertoire contient des informations sur les périphériques IDE du système. Chaque canal IDE est représenté par un répertoire séparé, tel que /proc/ide/ide0 et /proc/ide/ide1. De plus, un fichier drivers est aussi disponible; il fournit le numéro de version des divers pilotes utilisés sur les canaux IDE:

ide-cdrom version 4.59
ide-floppy version 0.97
ide-disk version 1.10

Plusieurs jeux de puces ou chipsets fournissent également dans ce répertoire un fichier d'informations qui donne des renseignements supplémentaires sur lecteurs connectés via les canaux. Par exemple, un chipset générique Ultra 33 PIIX4 d'Intel produit un fichier /proc/ide/piix qui vous indiquera si DMA ou UDMA est activé pour les périphériques situés sur les canaux IDE:



                              Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
                 enabled                          enabled
------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no 
UDMA enabled:   yes              no              no                no 
UDMA enabled:   2                X               X                 X
UDMA
DMA
PIO

En examinant le répertoire d'un canal IDE, tel que ide0, vous pouvez obtenir des informations supplémentaires. Le fichier channel indique le numéro de canal, alors que model vous indique le type de bus (tel que pci).

5.3.5.1. Le répertoire de périphérique

À l'intérieur de chaque répertoire de canal IDE se trouve un répertoire de périphérique. Le nom du répertoire de périphérique correspond à la lettre du périphérique dans le répertoire /dev/. Par exemple, le premier périphérique IDE sur ide0 serait hda.

NoteRemarque
 

Il existe un lien symbolique pour chacun de ces répertoires de périphériques dans le répertoire /proc/ide/.

Chaque répertoire de périphérique contient un recueil d'informations et de statistiques. Le contenu de ces répertoires varient selon le type de périphérique connecté. Parmi les fichiers les plus utiles communs à beaucoup de périphériques se trouvent:

  • cache — le cache du périphérique;

  • capacity — la capacité du périphérique, en blocs de 512 octets;

  • driver — le pilote et la version utilisés pour contrôler le périphérique;

  • geometry — la géométrie physique et logique du périphérique;

  • media — le type de périphérique, comme par exemple disk.

  • model — le nom ou le numéro de modèle du périphérique;

  • settings — un ensemble de paramètres courants du périphérique. Ce fichier contient normalement un certain nombre d'informations techniques utiles. Un exemple de fichier settings pour un disque dur IDE standard ressemble à l'extrait ci-dessous:

    name                value          min          max          mode
    ----                -----          ---          ---          ----
    bios_cyl            784            0            65535        rw
    bios_head           255            0            255          rw
    bios_sect           63             0            63           rw
    breada_readahead    4              0            127          rw
    bswap               0              0            1            r
    current_speed       66             0            69           rw
    file_readahead      0              0            2097151      rw
    ide_scsi            0              0            1            rw
    init_speed          66             0            69           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_kb_per_request  64             1            127          rw
    multcount           8              0            8            rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    slow                0              0            1            rw
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw

5.3.6. /proc/irq/

Ce répertoire est utilisé pour paramétrer l'association IRQ-CPU, qui permet de connecter un IRQ donné à une seule unité centrale. Vous pouvez également empêcher qu'une unité centrale gère un IRQ.

Chaque IRQ a son propre répertoire, ce qui permet une configuration individuelle de chacun d'eux. Le fichier /proc/irq/prof_cpu_mask est un masque de bit qui contient les valeurs par défaut pour le fichier smp_affinity dans le répertoire IRQ. Les valeurs de smp_affinity spécifient quelles unités centrales gèrent cet IRQ spécifique.

Pour obtenir davantage d'informations sur le répertoire /proc/irq/ consultez:
/usr/src/linux-2.4/Documentation/filesystems/proc.txt

5.3.7. /proc/net/

Ce répertoire fournit une vision exhaustive de nombreux paramètres et statistiques réseau. Chaque fichier couvre une gamme spécifique d'informations relatives à la gestion du réseau sur le système. Vous trouverez ci-dessous une liste partielle de ces fichiers virtuels:

5.3.8. /proc/scsi/

Ce répertoire est analogue au répertoire /proc/ide/ à la seule différence près qu'il est réservé aux périphériques SCSI.

Le fichier principal est /proc/scsi/scsi, qui contient une liste de tous les périphériques SCSI reconnus. Cette liste fournit également des informations sur le type de périphérique, ainsi que le nom de modèle, le fabricant, le canal et les données ID SCSI disponibles.

Par exemple, si un système disposait d'un lecteur de CD-ROM, d'un lecteur de bande, de disques durs ainsi que d'un contrôleur RAID, ce fichier ressemblerait à ceci:

Attached devices: 
Host: scsi1 Channel: 00 Id: 05 Lun: 00
  Vendor: NEC      Model: CD-ROM DRIVE:466 Rev: 1.06
  Type:   CD-ROM                           ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 06 Lun: 00
  Vendor: ARCHIVE  Model: Python 04106-XXX Rev: 7350
  Type:   Sequential-Access                ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 06 Lun: 00
  Vendor: DELL     Model: 1x6 U2W SCSI BP  Rev: 5.35
  Type:   Processor                        ANSI SCSI revision: 02
Host: scsi2 Channel: 02 Id: 00 Lun: 00
  Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01
  Type:   Direct-Access                    ANSI SCSI revision: 02

Chaque pilote SCSI utilisé par le système a son propre répertoire dans /proc/scsi/, qui contient des fichiers spécifiques à chaque contrôleur SCSI qui utilise ce pilote. Par conséquent, dans le cas de l'exemple ci-dessus, les répertoires aic7xxx et megaraid sont présents, car ces deux pilotes sont utilisés. Les fichiers situés dans chacun des répertoires contiennent généralement la plage d'adresses E/S, les IRQ ainsi que les statistiques relatives au contrôleur SCSI qui utilise ce pilote. Chaque contrôleur peut rapporter différents types et quantités d'informations. Le fichier du contrôleur SCSI Adaptec AIC-7880 Ultra produit dans cet exemple la sortie suivante:

Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
  TCQ Enabled By Default : Disabled
  AIC7XXX_PROC_STATS     : Enabled
  AIC7XXX_RESET_DELAY    : 5

Adapter Configuration:
           SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
                           Ultra Narrow Controller
    PCI MMAPed I/O Base: 0xfcffe000
 Adapter SEEPROM Config: SEEPROM found and used.
      Adaptec SCSI BIOS: Enabled
                    IRQ: 30
                   SCBs: Active 0, Max Active 1,
                         Allocated 15, HW 16, Page 255
             Interrupts: 33726
      BIOS Control Word: 0x18a6
   Adapter Control Word: 0x1c5f
   Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
     Ultra Enable Flags: 0x0020
 Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
    Tagged Queue By Device array for aic7xxx host instance 1:
      {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
    Actual queue depth per device for aic7xxx host instance 1:
      {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:


(scsi1:0:5:0)
  Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
  Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 0 (0 reads and 0 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       0       0       0       0       0


(scsi1:0:6:0)
  Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
  Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 132 (0 reads and 132 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       1     131       0       0       0

Cet écran vous permet de visualiser la vitesse de transfert des différents périphériques SCSI connectés au contrôleur en fonction de l'ID de canal, ainsi que des statistiques détaillées concernant la quantité et la taille des fichiers lus ou écrits par ces périphériques. Par exemple, à partir de la sortie ci-dessus, vous pouvez voir que ce contrôleur communique avec le lecteur de CD-ROM à une vitesse de 20 Mo par seconde, alors que le lecteur de bande n'est connecté lui qu'à 10 Mo par secondes.

5.3.9. /proc/sys/

Le répertoire /proc/sys/ est différent des autres répertoires de /proc/ car, en plus de fournir des informations relatives au système, il vous permet d'apporter des modifications à la configuration du noyau. Ceci permet à l'administrateur de l'ordinateur d'activer et de désactiver immédiatement des fonctions du noyau.

WarningAvertissement
 

Soyez prudent lorsque vous modifiez les paramètres sur un système de production à l'aide des différents fichiers du répertoire /proc/sys/. La modification d'un mauvais paramètre peut rendre le noyau instable et nécessiter le redémarrage du système.

Pour cette raison, avant de changer une valeur dans /proc/sys/, assurez-vous que les options de ce fichier sont bien valides.

Pour savoir si un fichier donné peut être configuré ou s'il est uniquement conçu pour fournir des informations, vous pouvez l'afficher dans le terminal à l'aide de l'option -l entrée à l'invite du shell. option at the shell prompt. Si le fichier peut être modifié, vous pouvez alors l'utiliser pour configurer le noyau. Voici par exemple un affichage partiel de /proc/sys/fs:

-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr

Dans cet exemple, les fichiers dir-notify-enable et file-max peuvent être modifiés et, par conséquent, peuvent être utilisés pour configurer le noyau. Les autres fichiers ne fournissent que des informations sur les paramètres actuels.

Pour changer une valeur dans un fichier /proc/sys/, il faut enregistrer la nouvelle valeur dans le fichier à l'aide de la commande echo. Par exemple, pour activer la touche d'interrogation système sur un noyau en cours d'exécution, tapez la commande :

echo 1 > /proc/sys/kernel/sysrq

Cette opération aura pour effet de modifier la valeur sysrq du fichier, qui passera de 0 (off) à 1(on).

La touche d'interrogation système a été conçue pour vous permettre d'indiquer au noyau d'exécuter un certain nombre d'opérations importantes au moyen d'une simple combinaison de touches, comme par exemple arrêter ou redémarrer immédiatement un système, synchroniser tous les systèmes de fichiers montés ou vider des informations importantes sur votre console. Cette fonction est particulièrement utile lorsque vous utilisez un noyau de développement ou si vous rencontrez des blocages de système. Elle est toutefois considérée comme un risque de sécurité pour une console automatique et est donc désactivée par défaut sous Red Hat Linux.

Reportez-vous à /usr/src/linux-2.4/Documentation/sysrq.txt afin d'obtenir davantage d'informations sur la touche d'interrogation système.

Quelques fichiers de configuration /proc/sys/ contiennent plus d'une valeur. Placez un caractère d'espacement entre chaque valeur transmise à l'aide de la commande echo, afin d'envoyer correctement les nouvelles valeurs, comme c'est le cas l'exemple suivant:

echo 4 2 45 > /proc/sys/kernel/acct

NoteRemarque
 

Toute modification de configuration effectuée à l'aide de la commande echo disparaîtra lorsque le système est redémarré. Pour faire en sorte que vos modifications soient appliquées au démarrage, reportez-vous à Section 5.4 Utilisation de la commande sysctl.

Le répertoire /proc/sys/ contient plusieurs sous-répertoires qui contrôlent différents aspects d'un noyau en cours d'exécution.

5.3.9.1. /proc/sys/dev/

Ce répertoire fournit des paramètres pour des périphériques particuliers du système. La plupart des systèmes ont au moins deux répertoires, à savoir cdrom et raid. Les noyaux personnalisés eux peuvent en avoir d'autres, tels que parport, qui donne la possibilité de partager un port parallèle entre plusieurs pilotes de périphériques.

Le répertoire cdrom contient un fichier appelé info, qui indique un certain nombre de paramètres importants pour le lecteur de CD-ROM:

CD-ROM information, Id: cdrom.c 3.12 2000/10/18

drive name:		hdc
drive speed:		32
drive # of slots:	1
Can close tray:		1
Can open tray:		1
Can lock tray:		1
Can change speed:	1
Can select disk:	0
Can read multisession:	1
Can read MCN:		1
Reports media changed:	1
Can play audio:		1
Can write CD-R:		0
Can write CD-RW:	0
Can read DVD:		0
Can write DVD-R:	0
Can write DVD-RAM:	0

Ce fichier peut être examiné rapidement pour découvrir les qualités d'un lecteur de CD-ROM inconnu, pour le noyau tout au moins. Si plusieurs lecteurs de CD-ROM sont disponibles sur un système, chaque périphérique dispose de sa propre colonne d'informations.

De nombreux fichiers de /proc/sys/dev/cdrom, tels que autoclose et checkmedia, peuvent être utilisés pour contrôler le lecteur de CD-ROM du système. Utilisez simplement la commande echo pour activer ou désactiver ces fonctions.

Si la prise en charge de RAID est compilée dans le noyau, un répertoire /proc/sys/dev/raid/ sera disponible et contiendra au moins deux fichiers: speed_limit_min et speed_limit_max. Ces paramètres permettent de déterminer quelle augmentation de vitesse appliquer au périphérique RAID pour des tâches E/S particulièrement intensives, telles que la re-synchronisation des disques.

5.3.9.2. /proc/sys/fs/

Ce répertoire contient une gamme d'options et d'informations relatives à divers aspects des systèmes de fichiers, y compris, quota, indicateur de fichier, inode et dentry.

Le répertoire binfmt_misc est utilisé pour fournir au noyau la prise en charge de formats binaires divers.

Les fichiers importants du répertoire /proc/sys/fs comprennent:

  • dentry-state — donne l'état du cache du répertoire. Le fichier ressemble à ceci:

    57411	52939	45	0	0	0

    Le premier nombre indique le nombre total d'entrées dans le cache du répertoire, alors que le deuxième indique le nombre d'entrées non utilisées. Le troisième indique le nombre de secondes entre le moment où un répertoire a été libéré et le moment où il peut être récupéré et le quatrième mesure les pages actuellement demandées par le système. Les deux derniers nombres ne sont pas utilisés et n'affichent actuellement que des zéros.

  • dquot-nr — indique le nombre maximum d'entrées de quota de disque en cache.

  • file-max — vous permet de changer le nombre maximum d'indicateurs de fichier alloués par le noyau. Si vous augmentez la valeur dans ce fichier, vous pourrez résoudre des erreurs causées par le manque d'indicateurs de fichier disponibles.

  • file-nr — affiche le nombre d'indicateurs de fichier alloués, utilisés et maximum.

  • overflowgid et overflowuid — définissent respectivement l'ID groupe et l'ID utilisateur fixes; ils sont utilisés avec des systèmes de fichiers qui ne prennent en charge que des ID groupe et utilisateur 16 bits.

  • super-max — contrôle le nombre maximum de superblocs disponibles.

  • super-nr — affiche le nombre actuel de superblocs utilisés.

5.3.9.3. /proc/sys/kernel/

Ce répertoire contient divers fichiers de configuration qui affectent directement le fonctionnement du noyau. Parmi les fichiers les plus importants, on trouve:

  • acct — contrôle la suspension de la comptabilisation du processus sur la base du pourcentage d'espace libre disponible sur le système de fichiers contenant le journal. Par défaut, ce fichier ressemble à ceci:

    4	2	30

    La deuxième valeur définit le seuil de suspension de la journalisation en pourcentage d'espace libre, alors que la première valeur indique le pourcentage nécessaire pour reprendre la journalisation. La troisième valeur indique l'intervalle en secondes entre les interrogations du système de fichiers par le noyau pour savoir si la journalisation doit être suspendue ou reprise.

  • cap-bound — contrôle les paramètres de délimitation des capacités qui fournit la liste des capacités de tout processus du système. Si une capacité n'est pas incluse dans cette liste, aucun processus, quels que soient ses privilèges, ne peut l'exécuter. L'objectif est d'améliorer la sécurité du système en s'assurant que certaines choses ne peuvent se produire, du moins au-delà d'un point donné du processus de démarrage.

    Pour obtenir une liste des valeurs acceptables pour ce fichier virtuel, consultez /usr/src/linux-2.4/include/linux/capability.h. De plus amples informations sur la délimitation des capacités sont disponibles en ligne à l'adresse suivante: http://lwn.net/1999/1202/kernel.php3.

  • ctrl-alt-del — Contrôle si [Ctrl]-[Alt]-[Supprimer] redémarre correctement l'ordinateur à l'aide d'init (valeur 0) ou force un redémarrage immédiat sans synchroniser les tampons erronés vers le disque (valeur1).

  • domainname — vous permet de configurer le nom de domaine du système, tel que example.com.

  • hostname — vous permet de configurer le nom d'hôte du système, tel que www.example.com.

  • hotplug — configure l'utilitaire à utiliser lorsqu'un changement de configuration est détecté par le système. Il est surtout utilisé avec USB et Cardbus PCI. La valeur par défaut de /sbin/hotplug ne devrait pas être modifiée, à moins que vous ne testiez un nouveau programme pour jouer ce rôle.

  • modprobe — définit l'emplacement du programme à utiliser pour charger des modules du noyau lorsque cela s'avère nécessaire. La valeur par défaut de /sbin/modprobe signifie que kmod l'appelle pour charger un module lorsqu'une unité d'exécution du noyau appelle kmod.

  • msgmax — définit la taille maximum de tout message envoyé d'un processus à un autre; sa valeur par défaut est 8192 octets. Soyez prudent lorsque vous décidez d'augmenter cette valeur car les messages mis en file d'attente entre les processus sont stockés dans la mémoire non échangeable du noyau; Toute augmentation de msgmax augmentera également la demande de mémoire vive du système.

  • msgmnb — définit le nombre maximum d'octets dans une file d'attente de messages. La valeur par défaut est 16384.

  • msgmni — définit le nombre maximum d'identificateurs de file d'attente de messages. Par défaut, la valeur est 16.

  • osrelease — fournit le numéro de version du noyau Linux. Ce fichier ne peut être modifié qu'en changeant la source du noyau et en recompilant.

  • ostype — affiche le type de système d'exploitation. Par défaut, ce fichier est paramétré sur Linux; cette valeur ne peut être modifiée qu'en changeant la source du noyau et en recompilant.

  • overflowgid et overflowuid — définissent respectivement l'ID groupe et l'ID utilisateur fixes; ils sont utilisés avec des appels système sur des architectures qui ne prennent en charge que des ID groupe et utilisateur 16 bits.

  • panic — définit le nombre de secondes de report du redémarrage par le noyau, lorsque le système subit une panique du noyau. Par défaut, la valeur est de 0, ce qui désactive le redémarrage automatique après une panique.

  • printk — ce fichier contrôle toute une série de paramètres relatifs à l'affichage ou à la journalisation de messages d'erreur. Chaque message d'erreur rapporté par le noyau a un niveau journal (loglevel) qui lui est associé et qui définit son importance. Les valeurs du niveau journal se répartissent dans l'ordre suivant:

    • 0 — Urgence du noyau. Le système est inutilisable.

    • 1 — Alerte du noyau. Une action immédiate est requise.

    • 2 — La condition du noyau est considérée comme critique.

    • 3 — Condition générale d'erreur du noyau.

    • 4 — Condition générale d'avertissement du noyau.

    • 5 — Avis du noyau d'une condition normale, mais importante.

    • 6 — Message d'information du noyau.

    • 7 — Messages de niveau débogage du noyau.

    Le fichier printk comporte quatre valeurs:

    6	4	1	7

    Chacune de ces valeurs définit une règle différente de traitement des messages d'erreur. La première valeur, appelée niveau journal de la console (console loglevel), spécifie la plus basse priorité de messages qui sera affichée sur la console (veuillez noter que plus la priorité est basse, plus le numéro du niveau journal est élevé). La deuxième valeur définit le niveau journal par défaut pour les messages dépourvus de niveau journal explicite. La troisième valeur spécifie la plus basse configuration de niveau journal possible pour le niveau journal de la console. La dernière valeur définit la valeur par défaut pour le niveau journal de la console.

  • rtsig-max — configure le nombre maximum de signaux POSIX en temps réel que le système peut avoir mis simultanément en file d'attente. La valeur par défaut est 1024.

  • rtsig-nr — le nombre actuel de signaux POSIX en temps réel mis en file d'attente par le noyau.

  • sem — ce fichier configure les paramètres de sémaphores dans le noyau. Un sémaphore est un objet IPC System V utilisé pour contrôler l'utilisation d'un processus spécifique.

  • shmall — définit la quantité totale de mémoire partagée, en octets, qui peut être utilisée à un moment précis sur le système. Par défaut, cette valeur est de 2097152.

  • shmmax — Définit la plus grande taille autorisée par le noyau d'un segment de mémoire partagée, en octets. Par défaut, cette valeur est de 33554432. Le noyau prend cependant en charge des valeurs beaucoup plus élevées.

  • shmmni — définit le nombre maximum de segments de mémoire partagée pour l'ensemble du système. Par défaut, cette valeur est de 4096

  • sysrq — active la touche d'interrogation système, si cette valeur est différente de la valeur par défaut, qui est de 0. Reportez-vous à Section 5.3.9 /proc/sys/ afin d'obtenir des informations détaillées sur la touche d'interrogation système.

  • threads-max — définit le nombre maximum d'unités d'exécution devant être utilisées par le noyau, avec une valeur par défaut de 2048.

  • version — affiche la date et l'heure de la dernière compilation du noyau. Le premier champ dans ce fichier, par exemple #3, fait référence au nombre de fois que le noyau a été construit à partir de la source.

Le répertoire random stocke un certain nombre de valeurs relatives à la génération de numéros aléatoires pour le noyau.

5.3.9.4. /proc/sys/net/

Ce répertoire contient des répertoires variés relatifs à des éléments réseau. Diverses configurations lors de la compilation du noyau déterminent la présence ou non de différents répertoires à cet endroit, comme par exemple appletalk, ethernet, ipv4, ipx et ipv6. Dans ces répertoires, vous pouvez ajuster les diverses valeurs réseau pour cette configuration sur un système en cours d'exécution.

Étant donné le nombre important d'options réseau possibles et disponibles sous Linux, ainsi que la grande quantité d'espace nécessaire pour en parler, nous n'aborderons que les répertoires /proc/sys/net/ les plus communs.

Le répertoire /proc/sys/net/core/ contient une série de paramètres qui contrôlent l'interaction entre le noyau et les couches réseau. Les fichiers les plus importants de ce répertoire sont:

  • message_burst — la durée, en dixièmes de seconde, nécessaire pour écrire un nouveau message d'avertissement. Ceci est utilisé pour empêcher les attaques de refus de service (DoS). La valeur par défaut est de 50.

  • message_cost — aussi utilisé pour empêcher les attaques de refus de service, en indiquant un coût sur chaque message d'avertissement. Plus la valeur de ce fichier est élevée (5 par défaut), plus il est probable que le message d'avertissement sera ignoré.

    L'idée de base d'une attaque DoS est de bombarder votre système de requêtes qui génèrent des erreurs et remplissent les partitions de disque de fichiers journaux ou qui accaparent toutes les ressources de votre système pour gérer la journalisation des erreurs. Les paramètres de message_burst et message_cost sont conçus pour être modifiés en fonction des risques acceptables de votre système par rapport au besoin d'une journalisation exhaustive.

  • netdev_max_backlog — définit le nombre maximum de paquets pouvant être mis en file d'attente lorsqu'une interface spécifique reçoit des paquets plus rapidement que le noyau ne peut les traiter. La valeur par défaut de ce fichier est de 300.

  • optmem_max — configure la taille maximum des tampons auxiliaires autorisée par socket.

  • rmem_default — définit la taille par défaut en octets du tampon de socket de réception.

  • rmem_max — définit la taille maximum en octets du tampon de réception.

  • wmem_default — définit la taille par défaut en octets du tampon d'envoi.

  • wmem_max — définit la taille maximum en octets du tampon d'envoi.

Le répertoire /proc/sys/net/ipv4/ contient des paramètres de mise en réseau supplémentaires. Bon nombre de ces paramètres, utilisés en connexion les uns avec les autres, sont très utiles pour empêcher des attaques contre votre système ou pour utiliser le système en tant que routeur.

CautionAttention
 

Une modification inappropriée de ces fichiers pourrait avoir un effet néfaste sur votre connectivité distante au système.

Ci-dessous sont énumérés quelques-uns des fichiers les plus importants du répertoire /proc/sys/net/ipv4/:

  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate et icmp_timeexeed_rate — définissent le délai maximum d'envoi, en centièmes de seconde, de paquets ICMP aux hôtes sous certaines conditions. La valeur 0 élimine tout délai, ce qui n'est pas une bonne idée.

  • icmp_echo_ignore_all et icmp_echo_ignore_broadcasts — permet au noyau d'ignorer les paquets ECHO ICMP de tous les hôtes ou uniquement ceux qui proviennent, respectivement, d'adresses de diffusion ou de multidiffusion. Une valeur de 0 permet au noyau de répondre, alors qu'une valeur de 1 elle, lui fait ignorer les paquets.

  • ip_default_ttl — définit la durée de vie (TTL) (de l'anglais, 'Time To Live') par défaut, qui limite le nombre de sauts qu'un paquet peut faire avant d'atteindre sa destination. L'augmentation de cette valeur peut réduire les performances du système.

  • ip_forward — permet aux interfaces du système de réacheminer des paquets aux autres interfaces. Par défaut, ce fichier est défini sur 0. En paramétrant ce fichier sur 1 vous activez le réacheminement des paquets réseau.

  • ip_local_port_range — spécifie la plage de ports que TCP ou UDP doivent utiliser lorsqu'un port local est requis. Le premier nombre correspond au port le plus bas à utiliser et le second au port le plus élevé. Tout système sur lequel on s'attend à un nombre de ports requis supérieur aux valeurs 1024 à 4999 par défaut devrait utiliser la plage 32768 à 61000 dans ce fichier.

  • tcp_syn_retries — fournit une limite du nombre de fois que votre système retransmet un paquet SYN lorsqu'il essaie d'effectuer une connexion.

  • tcp_retries1 — définit le nombre de retransmissions permises, essayant de répondre à une connexion entrante. La valeur par défaut est de 3.

  • tcp_retries2 — définit le nombre de retransmissions permises de paquets TCP. La valeur par défaut est de 15.

Le /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt contient une liste exhaustive des fichiers ainsi que des options disponibles dans le répertoire /proc/sys/net/ipv4/.

De nombreux autres répertoires existent dans le répertoire /proc/sys/net/ipv4/ et couvrent des sujets spécifiques. Le répertoire /proc/sys/net/ipv4/conf/ permet de configurer chaque interface du système de façon différente et d'utiliser des paramètres par défaut pour des périphériques non configurés (dans le sous-répertoire /proc/sys/net/ipv4/conf/default/) ainsi que des paramètres qui annulent toutes les configurations spéciales (dans le sous-répertoire /proc/sys/net/ipv4/conf/all/).

Le répertoire /proc/sys/net/ipv4/neigh/ contient non seulement des paramètres nécessaires pour la communication avec un hôte connecté directement au système (que l'on appelle voisin réseau) mais également des paramètres relatifs aux systèmes qui se trouvent à plusieurs sauts de distance.

Le routage via IPV4 dispose également de son propre répertoire, appelé /proc/sys/net/ipv4/route/. Contrairement à conf/ et neigh/, le répertoire /proc/sys/net/ipv4/route/ contient des spécifications qui s'appliquent au routage avec toutes les interfaces du système. Bon nombre de ces paramètres, tels que max_size, max_delay et min_delay, font référence au contrôle de la taille du cache de routage. Pour libérer le cache de routage, spécifiez simplement une valeur quelconque dans le fichier flush.

Vous trouverez plus d'informations supplémentaires sur ces répertoires et les valeurs possibles pour leurs fichiers de configuration dans /usr/src/linux-2.4/Documentation/filesystems/proc.txt.

5.3.9.5. /proc/sys/vm/

Ce répertoire facilite la configuration du sous-système de la mémoire virtuelle (VM) du noyau Linux. Le noyau utilise de façon exhaustive et intelligente la mémoire virtuelle, que l'on appelle communément l'espace swap.

Les fichiers suivants se trouvent généralement dans le répertoire /proc/sys/vm/:

  • bdflush — définit différentes valeurs liées au démon noyau bdflush.

  • buffermem — vous permet de contrôler la quantité en pourcentage de la mémoire totale du système devant être utilisée comme mémoire tampon. La sortie de ce fichier ressemble à ceci:

    2       10       60

    La première et la dernière valeur définissent le pourcentage minimum et maximum de mémoire à utiliser comme mémoire tampon. La valeur au milieu indique le pourcentage de mémoire système dédié à la mémoire tampon à partir duquel le sous-système de gestion de la mémoire commencera à libérer davantage le cache tampon que les autres types de mémoire pour compenser le manque général de mémoire libre.

  • kswapd — définit différentes valeurs relatives au démon de permutation du noyau kswapd. Ce fichier contient trois valeurs, à savoir:

    512	32	8

    La première valeur indique le nombre maximum de pages que kswapd essaiera de libérer en une seule tentative. Plus cette valeur est élevée, plus le noyau peut agir rapidement pour libérer des pages. La deuxième valeur définit le nombre minimum d'essais de libération d'une page par kswapd. La troisième valeur indique le nombre de pages que kswapd essaie d'écrire en une seule tentative. Un réglage précis de la valeur finale permet d'améliorer les performances des systèmes qui utilisent beaucoup d'espace swap en indiquant au noyau d'écrire les pages en blocs de grande taille, ce qui minimise le nombre de recherches disque.

  • max_map_count — configure le nombre maximum de zones de topographie mémoire qu'un processus peut avoir. La valeur par défaut de 65536 est appropriée dans la plupart des cas.

  • overcommit_memory — lorsque sa valeur par défaut est 0 le noyau estime la quantité de mémoire disponible et fait échouer les requêtes qui sont de toute évidence invalides. Malheureusement, étant donné que la mémoire est allouée à l'aide d'un algorithme heuristique plutôt que précis, cela peut parfois provoquer une surcharge du système.

    Si overcommit_memory a la valeur 1, le risque de surcharge du système est accru, mais cela permet également de développer les performances au niveau des tâches nécessitant beaucoup de mémoire, telles que celles effectuées par certains logiciels scientifiques.

    Les deux options suivantes ont été ajoutées pour les clients qui souhaitent prendre moins de risque au niveau d'un surengagement de la mémoire. Donner à overcommit_memory la valeur 2 échoue si une demande de mémoire est supérieure à la moitié de la mémoire vive, plus le swap. Lui donner une valeur de 3 échoue si la demande de mémoire est supérieure à ce que le swap seul peut garder.

  • pagecache — contrôle la quantité de mémoire utilisée par le cache de page. Les valeurs de pagecache sont exprimées en pourcentage et fonctionnent de façon semblable à buffermem pour appliquer des valeurs minimales et maximales de mémoire cache de page disponible.

  • page-cluster — définit le nombre de pages lues en une seule tentative. La valeur par défaut est 4 et se rapporte en fait à 16 pages; cette valeur est adéquate pour la plupart des systèmes.

  • pagetable_cache — contrôle le nombre de tables de pages mises en cache par processeur. La première et la deuxième valeur font respectivement référence au nombre minimal et maximal de tables de pages à ne pas prendre en compte.

Le fichier /usr/src/linux-2.4/Documentation/sysctl/vm.txt contient des informations supplémentaires sur ces divers fichiers.

5.3.10. /proc/sysvipc/

Ce répertoire contient des informations sur les ressources IPC System V. Les fichiers de ce répertoire concernent les appels IPC System V de messages (msg), sémaphores (sem) et mémoire partagée (shm).

5.3.11. /proc/tty/

Ce répertoire contient des informations sur les périphériques tty disponibles et actuellement utilisés sur le système. Appelés à l'origine périphériques téléimprimeurs (ou télétypes), tout terminal basé sur les caractères est un périphérique tty.

Sous Linux, il existe trois types différents de périphérique tty. Les périphériques série sont utilisés avec les connexions série, par exemple par modem ou câble série. Les terminaux virtuels créent la connexion console commune, telle que les consoles virtuelles disponibles lorsque vous appuyez sur [Alt]-[<F-key>] sur la console système. Les pseudo-terminaux créent une communication à double sens utilisée par certaines applications de niveau supérieur, telles que XFree86. Le fichier drivers une liste des périphériques tty actuellement utilisés:

serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console

Le fichier /proc/tty/driver/serial répertorie les statistiques d'utilisation et l'état de chaque ligne tty série.

Pour que les périphériques tty puissent être utilisés de façon semblable aux périphériques réseau, le noyau Linux applique une procédure de transmission sur les périphériques. Cela permet au pilote de placer un type spécifique d'en-tête sur chaque bloc de données transmis via un périphérique donné; ainsi, l'extrémité distante de la connexion voit ce bloc de données comme un tout unique dans un flux de blocs de données. SLIP et PPP sont des procédures de transmission courantes et sont communément utilisées pour connecter des systèmes via un lien série.

Les procédures de transmission enregistrées sont stockées dans le fichier ldiscs et des informations détaillées sont disponibles dans le répertoire ldisc.