Différence entre / dev et / sys / class?


Réponses:


26

Les fichiers /devsont des fichiers de périphériques réels qu'UDEV crée au moment de l'exécution. Le répertoire /sys/classest exporté par le noyau au moment de l'exécution, exposant ainsi la hiérarchie du matériel sysfs.

À partir du didacticiel libudev et Sysfs

extrait

Sur les systèmes Unix et Unix, les périphériques matériels sont accessibles via des fichiers spéciaux (également appelés fichiers de périphérique ou nœuds) situés dans le répertoire / dev. Ces fichiers sont lus et écrits comme des fichiers normaux, mais au lieu d'écrire et de lire des données sur un disque, ils communiquent directement avec un pilote du noyau qui communique ensuite avec le matériel. Il existe de nombreuses ressources en ligne décrivant les fichiers / dev plus en détail. Traditionnellement, ces fichiers spéciaux ont été créés au moment de l'installation par la distribution, à l'aide de la commande mknod. Ces dernières années, les systèmes Linux ont commencé à utiliser udev pour gérer ces fichiers / dev lors de l'exécution. Par exemple, udev créera des nœuds lorsque des périphériques seront détectés et les supprimera lorsque des périphériques seront supprimés (y compris les périphériques hotplug lors de l'exécution). Par ici,

un autre extrait

Les répertoires dans Sysfs contiennent la hiérarchie des périphériques, car ils sont attachés à l'ordinateur. Par exemple, sur mon ordinateur, le périphérique hidraw0 est situé sous:

/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5.4/1-5.4:1.0/0003:04D8:003F.0001/hidraw/hidraw0

Sur la base du chemin, le périphérique est connecté à (en gros, à partir de la fin) la configuration 1 (: 1.0) du périphérique connecté au port numéro 4 du périphérique 1-5, connecté au contrôleur USB 1 (usb1), connecté au Bus PCI. Bien qu'intéressant, ce chemin de répertoire ne nous fait pas beaucoup de bien, car il dépend de la façon dont le matériel est physiquement connecté à l'ordinateur.

Heureusement, Sysfs fournit également un grand nombre de liens symboliques, pour un accès facile aux périphériques sans avoir à savoir à quels ports PCI et USB ils sont connectés. Dans / sys / class, il existe un répertoire pour chaque classe différente de périphérique.

Usage?

En général, vous utilisez des règles /etc/udev/rules.dpour augmenter votre système. Des règles peuvent être construites pour exécuter des scripts lorsque divers matériels sont présents.

Une fois qu'un système est en place, vous pouvez écrire des scripts pour travailler avec /devou /sys, et cela se résume vraiment à vos préférences personnelles, mais j'essayais généralement de travailler avec /syset d'utiliser des outils tels que udevadmpour interroger UDEV pour les emplacements de diverses ressources système.

$ udevadm info -a -p  $(udevadm info -q path -n /dev/sda) | head -15

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="976773168"
    ATTR{stat}==" 6951659  2950164 183733008 41904530 16928577 18806302 597365181 580435555        0 138442293 622621324"
    ATTR{range}=="16"
...

pas sûr que je vous ai bien compris. Donc, demander des éclaircissements pour être sûr. Que vous décidiez de vous connecter à un périphérique externe (par exemple via i2c ou mipi) en créant une entrée dans / dev ou / sys est uniquement basé sur vos préférences personnelles? Sinon, dans quel cas / pourquoi préférerait-on le premier au lieu du second (et vice-verca)?
LandonZeKepitelOfGreytBritn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.