À quoi sert le répertoire «/ sys»?

16

Il y a quelque temps j'ai remarqué ce répertoire que j'avais jamais vu auparavant, /sys. J'ai fait quelques recherches et j'ai lu que les "systèmes Linux modernes" ont souvent ce répertoire et qu'il gère les périphériques. Je pensais que c'était pour ça / dev. Je n'arrive pas à trouver beaucoup d'informations sur ce répertoire, à part ce que j'ai mentionné, et ce, cité sur cette page:

/ sys est un système de fichiers virtuel auquel on peut accéder pour définir ou obtenir des informations sur la vue du noyau du système.

J'exécute Trusty depuis un certain temps maintenant, et je ne l'ai jamais remarqué auparavant, c'est pourquoi je trouve cela un peu étrange. Quelqu'un pourrait-il me renseigner? Quelle est la différence entre ceci et / dev? Quand Ubuntu a-t-il commencé à utiliser ce répertoire et pourquoi? Merci.

Chev_603
la source
/sysexiste depuis plus d' une décennie maintenant .
muru
1
Sidenote, peut-être sera utile aux autres utilisateurs: les répertoires / proc et / sys, étant des systèmes de fichiers virtuels, disparaîtront une fois l'ordinateur arrêté. Si vous avez déjà monté un disque dur avec Linux sur un autre système d'exploitation, vous verrez que ces répertoires sont vides.
Sergiy Kolodyazhnyy

Réponses:

28

/sysest vieux . Il a été introduit avant que le noyau Linux n'atteigne la 2.6 (à l'époque où il y avait une division 2.4 / 2.5). Depuis que la première version d'Ubuntu utilisait un noyau 2.6 , chaque version d'Ubuntu en avait un /sys.

/devcontient les fichiers de périphérique réels. Il ne donne pas accès à tous les appareils que le noyau connaît (tels que les périphériques Ethernet, pour un - Pourquoi sont les interfaces réseau non / dev comme d' autres périphériques , Pourquoi les périphériques Ethernet apparaissent pas dans « / dev »? ). Il s'agit d'une interface avec l'appareil lui-même - vous écrivez sur l'appareil, lisez-le, etc.

/sysest une interface avec le noyau. Plus précisément, il fournit une vue de type système de fichiers des informations et des paramètres de configuration que le noyau fournit, un peu comme /proc. L'écriture dans ces fichiers peut ou non écrire sur le périphérique réel, selon le paramètre que vous modifiez. Ce n'est pas seulement pour la gestion des appareils, bien que ce soit un cas d'utilisation courant.

Plus d'informations peuvent être trouvées dans la documentation du noyau :

Top Level Directory Layout
~~~~~~~~~~~~~~~~~~~~~~~~~~

The sysfs directory arrangement exposes the relationship of kernel
data structures. 

The top level sysfs directory looks like:

block/
bus/
class/
dev/
devices/
firmware/
net/
fs/

devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device. 

bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:

    devices/
    drivers/

devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.

drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types).

fs/ contains a directory for some filesystems.  Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example).

dev/ contains two directories char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>.  These symlinks
point to the sysfs directory for the given device.  /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation.

Par exemple:

  • Une façon de régler la luminosité d'un moniteur d'ordinateur portable est:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Pour obtenir l'adresse MAC d'une carte réseau:

    cat /sys/class/net/enp1s0/address
    
  • Pour obtenir les gouverneurs de mise à l'échelle du processeur actuels:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

Etc...

muru
la source
@muru: Et si je veux supprimer un de ces fichiers qui consomme beaucoup de mémoire? J'ai écrit un pilote de périphérique qui était buggé (peut-être), qui est entré dans une boucle et a continuellement écrit dans un fichier du répertoire / sys / devices. De plus, si je supprime accidentellement un mauvais fichier, quel serait l'impact?
Bhavik Shah
2
@BhavikShah vous ne supprimez rien d'ici - ces fichiers n'existent pas réellement. Vous devrez supprimer le module concerné.
muru