Tom Daluzeau
← Parcours Linux
Linux · leçon 2 / 6Ch. 1 · Architecture d'un serveur11 minTerminée

/proc, /sys, /dev : les dossiers où le noyau te parle

Tu sais où lire l'état du noyau, des processus et du matériel, changer un réglage avec sysctl et le rendre permanent, et reconnaître un périphérique dans /dev.

Mis à jour le

Pourquoi on voit ça

Sous Linux, tout est fichier. Pour connaître l’état du serveur ou changer un réglage du noyau, tu ne passes pas par un panneau de configuration : tu lis ou tu écris dans un fichier.

Encore faut-il savoir lequel. En dépannage, la moitié du travail consiste à aller au bon chemin. Cette leçon te donne trois dossiers spéciaux (/proc, /sys, /dev), puis une carte d’ensemble pour ne plus les confondre avec /etc ou /boot.

/proc : le noyau et les processus

/proc est un dossier virtuel. Ses fichiers ne sont pas sur le disque : le noyau les fabrique en RAM au moment où tu les lis. Ils ne prennent aucune place et ils sont toujours à jour.

Tu y trouves deux choses.

Des infos sur le noyau et la machine :

cat /proc/cpuinfo
cat /proc/meminfo

Un dossier par processus, qui porte son PID :

ls /proc/1234

Le processus 1234 s’arrête ? Le dossier /proc/1234 disparaît. Des commandes comme ps et top ne font que lire /proc et mettre en forme ce qu’elles y trouvent.

/proc/sys et sysctl : régler le noyau

La plupart des fichiers de /proc se lisent seulement. Le sous-dossier /proc/sys fait exception : il contient les réglages du noyau, et tu peux les modifier à chaud.

Exemple classique : le routage IP, qui permet au serveur de faire passer des paquets d’une carte réseau à l’autre. Le réglage est dans ce fichier :

/proc/sys/net/ipv4/ip_forward

0 = désactivé, 1 = activé. Pour lire ou changer la valeur, on utilise la commande sysctl :

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1

La première ligne affiche la valeur, la seconde l’écrit (-w comme write).

Du chemin au nom sysctl

Le nom donné à sysctl est le chemin du fichier, avec deux transformations :

  1. tu enlèves /proc/sys/ au début ;
  2. tu remplaces les / par des points.
chemin clé sysctl /proc/sys/ net/ ipv4/ ip_forward / devient . on le retire net. ipv4. ip_forward sysctl -w net.ipv4.ip_forward=1
Même réglage, deux écritures : le fichier dans /proc/sys, le nom court pour sysctl.
Fichier Nom sysctl
/proc/sys/net/ipv4/ip_forward net.ipv4.ip_forward
/proc/sys/vm/swappiness vm.swappiness
/proc/sys/kernel/hostname kernel.hostname

Rendre le réglage permanent

/proc/sys vit en RAM. Au redémarrage, tout est remis à zéro et ton sysctl -w est perdu.

Pour garder le réglage, tu l’écris dans /etc/sysctl.conf, un vrai fichier sur le disque, relu à chaque démarrage :

net.ipv4.ip_forward=1

Puis tu peux appliquer le fichier tout de suite, sans redémarrer :

sysctl -p

Retiens le duo : sysctl -w pour maintenant, /etc/sysctl.conf pour toujours.

Contexte, pas à apprendre. Sur les Debian les plus récentes, on range plutôt ces réglages dans des fichiers .conf du dossier /etc/sysctl.d/. Le principe reste le même. Dans le cours, la réponse attendue est /etc/sysctl.conf.

/sys : le matériel et les pilotes

/sys est lui aussi virtuel et en RAM, mais il raconte autre chose : le matériel et les pilotes tels que le noyau les voit. Disques, cartes réseau, micrologiciel…

ls /sys/class/net
ls /sys/block

La première commande liste les interfaces réseau, la seconde les disques. Dans ce cours, /sys se lit : tu vas y chercher une information, tu n’y règles rien. Les réglages, c’est /proc/sys.

Le piège à éviter : /proc/sys n’est pas /sys.

Dossier Ce qu’il contient On y écrit ?
/proc infos du noyau, un dossier par processus non
/proc/sys réglages du noyau oui, avec sysctl -w
/sys matériel et pilotes non, on consulte

/dev : les périphériques

Dans /dev, chaque fichier représente un périphérique. Lire ou écrire dans ce fichier, c’est lire ou écrire sur le périphérique lui-même, en passant par le noyau.

Ces fichiers ne sont pas créés à la main. C’est udev qui s’en charge : quand le noyau détecte un périphérique (une clé USB qu’on branche, par exemple), udev crée le fichier correspondant dans /dev. Quand tu la retires, le fichier disparaît.

Bloc ou caractère

ls -l /dev/sda /dev/tty
brw-rw---- 1 root disk … /dev/sda
crw-rw-rw- 1 root tty  … /dev/tty

La première lettre de la ligne donne le type.

Lettre Type Image Exemples
b bloc un livre : tu lis par blocs et tu peux sauter à n’importe quelle page /dev/sda, /dev/sda1, /dev/nvme0n1
c caractère un robinet : les données coulent dans l’ordre, sans retour en arrière /dev/tty, /dev/zero, /dev/urandom

Bloc = stockage (disques, partitions). Caractère = flux (terminal, générateur de zéros ou de nombres aléatoires).

b · bloc : comme un livre saut direct au bloc 4 0 1 2 3 4 5 on lit par blocs, à n'importe quelle position /dev/sda /dev/nvme0n1 c · caractère : comme un robinet source octet après octet 3 2 1 lecture les octets arrivent dans l'ordre, sans retour /dev/tty /dev/urandom
Bloc : tu ouvres le livre à la page voulue. Caractère : tu prends ce qui coule, dans l'ordre.

Lire un nom de disque

Nom Signification
/dev/sda 1er disque SATA ou USB
/dev/sdc 3e disque (a, b, c : ordre de détection)
/dev/sdc1 1re partition du 3e disque
/dev/nvme0n1 1er disque NVMe
/dev/nvme0n1p1 1re partition du 1er disque NVMe

En SATA, la lettre désigne le disque et le chiffre la partition. En NVMe, la partition s’écrit avec un p devant son numéro.

Disque SATA ou USB /dev/ sd c 1 les périphériques pilote SATA ou USB 3e disque : a, b, c… 1re partition Disque NVMe /dev/ nvme0n1 p1 les périphériques 1er disque NVMe p + numéro de partition
En SATA, une lettre pour le disque et un chiffre pour la partition. En NVMe, un p avant le chiffre.

Major et minor

Dans la sortie de ls -l, un fichier de périphérique n’a pas de taille. À la place, il affiche deux nombres séparés par une virgule :

brw-rw---- 1 root disk 8, 1 … /dev/sda1
  • le major (ici 8) désigne le pilote qui gère le périphérique (8 : les disques SATA ou USB) ;
  • le minor (ici 1) désigne le périphérique précis que gère ce pilote : le disque lui-même ou l’une de ses partitions.

Retiens le principe, pas les valeurs : cat /proc/devices donne la liste des pilotes et de leur major.

La carte d’ensemble des dossiers

Dossier Ce qu’on y trouve Exemple
/etc la configuration du système et des services /etc/sysctl.conf
/boot ce qui sert à démarrer : noyau, initramfs, GRUB /boot/grub/grub.cfg
/proc infos du noyau et des processus (en RAM) /proc/cpuinfo
/sys matériel et pilotes (en RAM) /sys/firmware/efi
/dev les fichiers de périphériques /dev/sda1
/var les données qui changent : journaux, files d’attente /var/log
/home les dossiers personnels des utilisateurs /home/tom
/tmp les fichiers temporaires, effacés au redémarrage /tmp/test.txt
/ Rangé par toi et les programmes /etc la configuration : /etc/sysctl.conf /boot le noyau, l'initramfs, GRUB /var ce qui change : /var/log /home les dossiers des utilisateurs /tmp le temporaire, vidé au redémarrage Exposé par le noyau /proc noyau et processus /sys matériel et pilotes /dev les périphériques en RAM, toujours à jour, rien n'est écrit sur le disque
À gauche, ce qu'on écrit et qu'on garde. À droite, ce que le noyau fabrique quand tu le lis.

Trois questions pour trouver le bon dossier :

  • C’est un réglage que j’écris et qui doit rester ? → /etc (sur le disque).
  • C’est une information que le noyau me donne ? → /proc (noyau, processus) ou /sys (matériel).
  • C’est un périphérique que je veux utiliser ? → /dev.

À retenir

  • /proc : infos du noyau et un dossier par processus (/proc/PID). Tout est en RAM.
  • /proc/sys contient les réglages du noyau. sysctl -w net.ipv4.ip_forward=1 : les points remplacent les /.
  • sysctl -w est perdu au redémarrage. Pour le garder : /etc/sysctl.conf.
  • /sys : matériel et pilotes. /proc/sys n’est pas /sys.
  • /dev : les périphériques, créés par udev. b = bloc (le livre), c = caractère (le robinet).
  • sda = 1er disque, sdc1 = 1re partition du 3e disque, nvme0n1p1 = 1re partition du 1er disque NVMe.

Entraînement

12 questions, dont 4 à compléter. Tu réponds, on passe à la suivante. La note arrive à la fin.

Cartes · 12

Réviser les cartes ici

Espace : retourner