Различие между/dev и/sys/class?

perlrun страница справочника, которую Вы ищете:

man perlrun
33
23.12.2015, 14:08
1 ответ

Файлы в каталоге /dev являются фактическими файлами устройств, которые UDEV создает во время выполнения. Каталог /sys/class экспортируется ядром во время выполнения, раскрывая иерархию аппаратного обеспечения через sysfs.

Из учебника по libudev и Sysfs

выдержка

В Unix и Unix-подобных системах доступ к аппаратным устройствам осуществляется через специальные файлы (также называемые файлами устройств или узлами), расположенные в каталоге /dev. Эти файлы читаются и записываются как обычные файлы, но вместо записи и чтения данных на диск они напрямую взаимодействуют с драйвером ядра, который затем взаимодействует с оборудованием. Существует множество интернет-ресурсов, описывающих файлы /dev более подробно. Традиционно эти специальные файлы создавались при установке дистрибутива с помощью команды mknod. В последние годы системы Linux начали использовать udev для управления этими файлами /dev во время выполнения. Например, udev будет создавать узлы при обнаружении устройств и удалять их при удалении устройств (включая устройства hotplug во время выполнения). Таким образом, каталог /dev содержит (по большей части) только записи для устройств, которые реально существуют в системе в текущий момент времени, в отличие от устройств, которые могли бы существовать.

еще один отрывок

Каталоги в Sysfs содержат иерархию устройств, как они подключены к компьютеру. Например, на моем компьютере устройство hidraw0 находится в каталоге:

/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

Судя по пути, устройство подключено к (грубо, начиная с конца) конфигурации 1 (:1.0) устройства, подключенного к порту номер 4 устройства 1-5, подключенного к USB-контроллеру 1 (usb1), подключенного к шине PCI. Хотя это и интересно, такой путь к каталогу не приносит нам много пользы, поскольку он зависит от того, как аппаратное обеспечение физически подключено к компьютеру.

К счастью, Sysfs также предоставляет большое количество симлинков для легкого доступа к устройствам без необходимости знать, к каким портам PCI и USB они подключены. В /sys/class есть каталог для каждого класса устройств.

Использование?

В общем случае вы используете правила в /etc/udev/rules.d для дополнения вашей системы. Правила могут быть созданы для запуска сценариев при наличии различного оборудования.

После запуска системы вы можете написать скрипты для работы с /dev или /sys, и это действительно сводится к личным предпочтениям, но я обычно стараюсь работать с /sys и использовать такие инструменты, как udevadm для запроса UDEV о расположении различных системных ресурсов.

$ 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"
...
28
27.01.2020, 19:37

Теги

Похожие вопросы