web-dev-qa-db-fra.com

A quoi sert le répertoire "/ sys"?

Il y a quelque temps, j'ai remarqué ce répertoire que je n'avais jamais vu auparavant, /sys. J'ai un peu cherché et 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 la raison pour laquelle/dev. Je n'arrive pas à trouver beaucoup d'informations sur ce répertoire, autre que ce que j'ai mentionné, et ceci, cité de this 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 système par le noyau.

Je fais confiance à Trusty depuis un moment maintenant, et je ne l'avais jamais remarqué auparavant, c'est pourquoi je trouve cela un peu étrange. Quelqu'un voudrait-il me renseigner? Quelle est la différence entre this et/dev? Quand Ubuntu a-t-il commencé à utiliser ce répertoire et pourquoi? Merci.

14
Chev_603

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

/dev contient les fichiers de périphérique réels. Il ne donne pas accès à tous les périphériques connus du noyau (tels que les périphériques Ethernet, par exemple - Pourquoi les interfaces réseau ne sont-elles pas dans/dev comme les autres périphériques? , Pourquoi les périphériques Ethernet ne s'affiche pas dans "/ dev"? ). C'est une interface vers le périphérique lui-même - vous écrivez sur le périphérique, lisez-le, etc.

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

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

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 la suivante:

    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 de la CPU actuels:

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

Etc...

26
muru