Répertoires dans /proc

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

Répertoires de processus

Chaque répertoire /proc contient un certain nombre de répertoires nommés à l'aide d'un chiffre. Voici comment se présente une liste de ces répertoires :

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 concernant 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. Toutefois, pendant l'exécution du processus, de nombreuses informations spécifiques à ce processus sont contenues dans les différents fichiers du répertoire de processus.

Chaque répertoire de processus contient les fichiers suivants :

/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 devoir savoir son ID de processus.

Dans un environnement shell, la génération de la liste du répertoire /proc/self produit le même contenu que la génération de la liste du répertoire de processus pour ce processus.

/proc/bus

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

Le contenu des sous-répertoires et fichiers disponibles diffère grandement selon la configuration 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 spécifiés par des chiffres, tels que 00, contiennent des fichiers binaires qui font référence aux divers périphériques disponibles sur les bus en question.

Exemple : un système ayant un bus USB auquel aucun périphérique n'est branché, 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
[root@thoth /]# ls -l /proc/bus/usb/001
total 1
-rw-r--r--    1 root     root           18 May  3 16:25 001

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 001 contient tous les périphériques sur le premier (et le seul) bus USB. En examinant le contenu du fichier devices, nous constatons qu'il s'agit du 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

/proc/driver

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

Un fichier commun se trouvant à cet endroit est rtc, qui fournit une sortie provenant du pilote pour l'horloge interne du système, le dispositif qui maintient l'heure lorsque le système est éteint. Voici un exemple de ce à quoi peut ressembler /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 interne, consultez /usr/src/linux-2.4/Documentation/rtc.txt.

/proc/ide

Ce répertoire contient une gamme variée d'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 circuits fournissent également un fichier d'informations dans ce répertoire, donnant ainsi d'autres renseignements sur les lecteurs branchés via les différents canaux. Exemple : un jeu de circuits générique Ultra 33 PIIX4 d'Intel produit un fichier /proc/ide/piix qui vous indique si DMA et UDMA sont activés pour les périphériques 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

Si vous examinez le répertoire d'un canal IDE, tel que ide0 pour le premier canal, vous obtenez des informations additionnelles. Le fichier channel indique le numéro de canal, alors que model vous indique le type de bus pour le canal (tel que pci).

Répertoires de périphérique

A l'intérieur de chaque répertoire de canal IDE se trouve un répertoire périphérique. Le nom du répertoire 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 symlink 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 — Cache du périphérique.

  • capacity — Capacité du périphérique, en blocs de 512 octets.

  • driver — Pilote et version utilisés pour contrôler le périphérique.

  • geometry — Géométrie physique et logique du périphérique.

  • media — Type de périphérique, tel que disk.

  • model — Nom ou numéro de modèle du périphérique.

  • settings — Ensemble de paramètres courants du périphérique. Ce fichier contient normalement pas mal d'informations techniques utiles. Voici un exemple de fichier settings pour un disque dur IDE standard :

    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

/proc/irq

Ce répertoire est utilisé pour régler l'affinité IRQ-CPU, qui permet de connecter un IRQ particulier à une seule unité centrale. Ou bien, vous pouvez empêcher qu'une unité centrale traite les IRQ.

Chaque IRQ a son propre répertoire, ce qui permet à chaque IRQ d'être configuré différemment par rapport aux autres. 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 d'IRQ. Les valeurs dans smp_affinity spécifient quelles unités centrales traitent cet IRQ spécifique.

Vous trouverez plus de renseignements dans le fichier /usr/src/linux-2.4/Documentation/filesystems/proc.txt.

/proc/net

Ce répertoire fournit une vision exhaustive de nombreux paramètres réseau et des statistiques. Chaque fichier couvre une gamme spécifique d'informations relatives au réseau sur le système :

/proc/scsi

Tout comme le répertoire /proc/ide n'existe que si un contrôleur IDE est connecté au système, le répertoire /proc/scsi n'est disponible que si vous avez une carte hôte d'interface pour petits systèmes informatiques (SCSI).

Le fichier principal est /proc/scsi/scsi, qui contient une liste de tous les périphériques SCSI reconnus. Exemple : si un système a un lecteur de CD-ROM SCSI, une unité de bande, des disques durs et un contrôleur RAID SCSI, ce fichier ressemblera à 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

Cette liste fournit également le type de périphérique, de même que le nom de modèle, le fabricant et le canal/ID SCSI.

En outre, 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. Donc, 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 dans chacun des répertoires contient l'éventail d'adresses E/S, les IRQ et des statistiques sur le contrôleur SCSI qui utilise le pilote. Bien que chaque contrôleur rapporte différents types (et quantités) d'information, la sortie de la plupart de ces fichiers vous sera très utile et facile à lire. Le fichier de la carte hôte SCSI Adaptec AIC-7880 Ultra, dans l'exemple, produit 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 branché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 les périphériques. En examinant le fichier /proc/scsi/scsi, nous pouvons voir que ce contrôleur communique avec le lecteur de CD-ROM à une vitesse de 20 Mo par seconde, alors que la vitesse n'est que de 10 Mo par seconde dans le cas de l'unité de bande.

/proc/sys

Le répertoire /proc/sys/ est spécial et différent des autres répertoires de /proc ; non seulement est-il rempli d'informations sur le système, il vous permet aussi d'effectuer des modifications à la configuration d'un noyau en cours d'exécution.

AvertissementAttention
 

N'essayez pas d'améliorer les paramètres de votre noyau sur un système de production à l'aide des différents fichiers du répertoire /proc/sys. Il arrive parfois que la modification d'un paramètre rende le noyau instable et nécessite le redémarrage du système.

Pour cette raison, avant de changer une valeur dans /proc/sys, assurez-vous de bien connaître les options valides de ce fichier et les résultats attendus.

Une bonne façon pour savoir si un fichier donné peut servir à configurer le noyau ou est conçu uniquement pour fournir de l'information consiste à en faire la liste. Si le fichier peut être écrit, vous pouvez alors l'utiliser pour configurer le noyau d'une certaine manière. Voici par exemple une liste partielle 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 cette liste, les fichiers dir-notify-enable et file-max peuvent être écrits 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 du noyau.

Pour changer une valeur dans un fichier /proc/sys il faut écrire la nouvelle valeur dans le fichier à l'aide de la commande echo. Par exemple, si vous souhaitez activer la touche d'appel système (System Request Key) sur un noyau en cours d'exécution, entrez la commande suivante :

[root@bleach /]# echo "1" > /proc/sys/kernel/sysrq

Cela aura pour effet de changer la valeur sysrq du fichier, qui passera de 0 (off) à 1 (on).

La touche d'appel système est conçue pour vous permettre d'indiquer au noyau d'exécuter certaines opérations importantes au moyen d'une simple combinaison de touches, telles que d'arrêter ou redémarrer le système, synchroniser tous les systèmes de fichiers montés ou mettre des informations importantes sur votre console. Cette fonction est utile lorsque vous utilisez un noyau de développement ou si vous avez des blocages de système. Pour en savoir plus sur la touche d'appel système, reportez-vous à /usr/src/linux-2.4/Documentation/sysrq.txt.

Quelques fichiers de configuration /proc/sys contiennent plus d'une valeur. Placez un caractère d'espacement entre chaque valeur passée à l'aide de la commande echo, afin d'envoyer correctement les nouvelles valeurs. Exemple :

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

NoteRemarque
 

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

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

/proc/sys/dev

Ce répertoire fournit des paramètres pour des périphériques particuliers sur le système. La plupart des systèmes ont au moins deux répertoires, soit cdrom et raid, mais les noyaux personnalisés peuvent en avoir d'autres, tels que parport, qui indique la capacité de partager un port parallèle entre plusieurs pilotes de périphérique.

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

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 du moins. Si plusieurs lecteurs de CD-ROM sont disponibles sur le système, chaque périphérique a sa propre colonne d'informations.

De nombreux fichiers dans /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 indiquer un 1 au bon fichier afin d'activer la fonction ou un 0 pour la désactiver.

Si la prise en charge RAID est compilée dans le noyau, un répertoire /proc/sys/dev/raid est disponible, qui contient au moins deux fichiers : speed_limit_min et speed_limit_max. Ces paramètres entrent en jeu de façon à ralentir ou accélérer la vitesse à laquelle le périphérique RAID est utilisé pour des tâches E/S particulièrement intensives, telles que la resynchronisation des disques.

/proc/sys/fs

Ce répertoire contient une gamme d'options et des informations concernant divers aspects des systèmes de fichiers : parts, indicateurs de fichier, dentry.

Le répertoire binfmt_misc est utilisé pour fournir au noyau la prise en charge pour des formats binaires variés.

Les fichiers importants dans /proc/sys/fs sont, notamment :

  • dentry-state — Etat de la 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 la 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 redemandé et le quatrième mesure les pages actuellement demandées par le système. Les deux derniers chiffres ne sont pas utilisés et affichent uniquement un zéro.

  • dquot-nr — Nombre maximum d'entrées de parts 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, dans l'ordre, le nombre d'indicateurs de fichier alloués, utilisés et maximum.

  • overflowgid et overflowuid — Définit l'ID groupe et l'ID utilisateur fixés, respectivement, pour l'utilisation 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 courant de superblocs utilisés.

/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 retrouve :

  • acct — Contrôle la suspension de la comptabilisation de 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 pourcentage d'espace libre pour suspendre la journalisation, alors que la première valeur indique le pourcentage nécessaire pour reprendre la journalisation. La troisième valeur indique l'intervalle de temps en secondes entre les vérifications du système de fichier de la part du noyau pour savoir si la journalisation doit être suspendue ou reprise.

  • cap-bound — Contrôle les réglages de capability bounding, qui fournit la liste des capacités que tout processus du système peut exécuter. Si une capacité n'est pas incluse dans cette liste, aucun processus, peu importe ses privilèges, ne peut l'exécuter. L'objectif de base est d'augmenter la sécurité du système en s'assurant que certaines choses ne peuvent se produire, du moins jusqu'à un certain point lors du processus de démarrage.

    Les nombreuses valeurs possibles dans ce cas vont au-delà des objectifs de ce manuel, veuillez alors consulter la documentation sur le noyau pour en savoir davantage.

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

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

  • hostname — Vous permet de configurer le nom d'hôte du système, tel que host.domain.com.

  • hotplug — Configure l'utilitaire à utiliser lorsqu'un changement de configuration est détecté par le système. 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 nécessaire. La valeur par défaut de /sbin/modprobe signifie que kmod l'appelle pour charger un module lorsqu'un processus élémentaire du noyau appelle kmod.

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

  • msgmnb — Définit le nombre maximum d'octets dans une file d'attente de messages. Par défaut, la valeur est 16384.

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

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

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

  • overflowgid et overflowuid — Définit les ID groupe et utilisateur fixés, respectivement, pour l'utilisation avec des appels de système sur des architectures qui ne prennent en charge que des ID groupe et utilisateur 16 bits.

  • panic — Définit le retardement en secondes effectué par le noyau pour le redémarrage du système lors d'une panique de noyau. Par défaut, la valeur est réglée sur 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 de niveau journal se subdivisent dans l'ordre suivant :

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

    • 1 — Alerte noyau. Il faut agir immédiatement.

    • 2 — Les conditions du noyaux sont considérées comme critiques.

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

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

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

    • 6 — Message d'information du noyau.

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

    Quatre valeurs se trouvent dans le fichier printk :

    6	4	1	7

    Chacune de ces valeurs définit une règle différente pour traiter les messages d'erreur. La première valeur, appelée niveau journal de la console, spécifie la plus basse priorité de message qui sera affichée sur la console (notez que plus la priorité est basse, plus le numéro de 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 en file d'attente simultanément. La valeur par défaut est 1024.

  • rtsig-nr — Le nombre courant 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 qui peut être utilisée à un moment précis sur le système, en octets. Par défaut, cette valeur est 2097152.

  • shmmax — Définit la plus grande taille d'un segment de mémoire partagée autorisée par le noyau, en octets. Par défaut, cette valeur est 33554432. Toutefois, le noyau prend 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 4096.

  • sysrq — Active la touche d'appel système si cette valeur est réglée sur autre chose que la valeur par défaut, qui est 0.

  • threads-max — Définit le nombre maximum de processus élémentaires (threads) devant être utilisés par le le noyau. La valeur par défaut est 4095.

  • version — Affiche la date et l'heure de la dernière compilation du noyau. Le premier champ dans ce fichier, tel que #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.

/proc/sys/net

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

Vu la grande variété d'options réseau possibles et disponibles sous Linux et la grande quantité d'espace nécessaire pour en parler, nous ne couvrirons que les répertoires /proc/sys/net les plus communs.

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

  • message_burst — Dixièmes de seconde nécessaires pour écrire un nouveau message d'avertissement. Cela est utilisé pour prévenir les attaques de refus de service (DoS). La valeur par défaut est 50.

  • message_cost — Aussi utilisé pour prévenir les attaques de refus de service, en plaçant 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 soit ignoré.

    L'idée de base est qu'une personne puisse faire une attaque en bombardant votre système de requêtes qui génèrent des erreurs et remplissent vos journaux ou nécessitent toutes les ressources de votre système pour gérer la journalisation des erreurs. Les paramètres dans 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 autorisés à ê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 300.

  • optmem_max — Configure la taille maximum des tampons auxiliaires autorisée par prise (socket).

  • rmem_default — Définit la taille par défaut en octets du tampon 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.

Vu la grande utilisation de réseaux IP avec Linux, un coup d'oeil aux fichiers les plus importants dans ipv4 permet de découvrir des paramètres réseau additionnels puissants. Nombre de ces paramètres, utilisés de concert avec d'autres, sont très utiles pour prévenir des attaques contre votre système.

AttentionAvertissement
 

Une modification erronée pourrait avoir un effet néfaste sur la connectivité à distance de votre système.

Voici quelques-uns des fichiers les plus importants du répertoire ipv4 :

  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate et icmp_timeexeed_rate — Pour définir le délai maximum d'envoi de paquets ICMP, en centièmes de seconde sur les systèmes Intel, aux hôtes sous différentes 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 des adresses de diffusion ou de multidiffusion, respectivement. Une valeur de 0 permet au noyau de répondre, alors qu'une valeur de 1 lui fait ignorer les paquets.

  • ip_default_ttl — Définit la durée de vie (TTL), 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 paramétré sur 0 pour désactiver le réacheminement, mais si vous paramétrez ce fichier sur 1, le réacheminement sera activé.

  • ip_local_port_range — Spécifie l'éventail de ports à utiliser par TCP ou UDP lorsqu'un port local est requis. Le premier nombre est le port le plus bas à utiliser et le second est le port le plus élevé. Pour tout système pour lequel on prévoit avoir besoin de plus de ports que ceux de l'éventail paramétré par défaut (1024 à 4999), il est conseillé d'utiliser un éventail de 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 3.

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

Si vous désirez obtenir une liste complète des fichiers et options disponibles, consultez /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt.

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

De façon à contrôler les connexions entre voisins directs, soit d'autres systèmes connectés directement à votre système, le répertoire neigh permet des configurations spéciales pour chaque interface. Cela vous permet de traiter différemment les systèmes auxquels vous vous fiez davantage en raison de leur proximité relative à votre système tout en vous laissant établir des règles strictes pour les systèmes qui se trouvent à plusieurs sauts de distance.

Le routage via IPV4 a aussi son propre répertoire, soit route. Contrairement à conf et neigh, le répertoire route contient des spécifications qui s'applique au routage avec toutes les interfaces du système. Nombre de ces paramètres, tels que max_size, max_delay et min_delay, font référence au contrôle de la taille de la cache de routage. Pour libérer la cache de routage, spécifiez simplement une valeur quelconque dans le fichier flush.

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

/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 relatives 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. Voici à quoi ressemble la sortie de ce fichier :

    2       10       60

    La première et la dernière valeurs 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 du système dédiée à la mémoire tampon à partir duquel le sous-système de gestion de la mémoire commencera à libérer la cache tampon plus que les autres types de mémoire pour compenser le manque général de mémoire libre.

  • freepages — Indique différentes valeurs relatives aux pages libres de la mémoire du système. Ce fichier ressemble à ceci :

    512	768	1024

    La première valeur indique le nombre minimum de pages libres permises avant que le noyau ne prenne le contrôle de l'attribution de mémoire supplémentaire. La deuxième valeur indique le nombre de pages libres avant que le noyau ne commence à effectuer agressivement des échanges (swap) pour préserver les performances. La troisième valeur est le nombre de pages libres que le système essaie de maintenir en tout temps.

  • kswapd — Définit différentes valeurs concernant le démon noyau de swap-out, kswapd. Ce fichier contient trois valeurs :

    512	32	8

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

  • max_map_count — Configure le nombre maximum de régions de topographie mémoire qu'un processus peut avoir. Dans la plupart des cas, la valeur par défaut, 65536, est adéquate.

  • overcommit_memory — Contient une valeur qui, lorsqu'elle est paramétré sur autre chose que la valeur par défaut 0, permet au noyau de sauter une vérification standard pour s'assurer qu'il y a suffisamment de mémoire avant d'en attribuer.

  • pagecache — Contrôle la quantité de mémoire utilisée par la cache de pages. Les valeurs dans pagecache sont exprimées en pourcentage et fonctionnent de façon semblable à buffermem pour appliquer des valeurs minimum et maximum de mémoire de cache de pages disponible.

  • page-cluster — Définit le nombre de pages lues en une tentative. La valeur par défaut est 4, ce qui signifie 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 valeurs font référence aux nombres minimum et maximum de tables de pages à mettre de côté.

Des informations supplémentaires sur ces fichiers se trouvent dans /usr/src/linux-2.4/Documentation/sysctl/vm.txt.

/proc/sysvipc

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

/proc/tty

Ce répertoire contient des informations sur les périphériques tty disponibles et 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, telles que via 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>] à la console système. Les pseudo-terminaux créent une communication à double sens utilisée par les applications de niveau supérieur, telles que X11.

Le fichier drivers est 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 donne la liste des statistiques d'utilisation et le statut 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 discipline de ligne sur les périphériques. Cela permet au pilote de placer un type spécifique d'en-tête avec 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 une chaîne de blocs de données. SLIP et PPP sont des disciplines de ligne courantes et sont communément utilisées pour connecter des systèmes via un lien série.

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