Різниця між / dev та / sys / class?


30

У чому різниця між поданням пристрою в /devі один в /sys/class?

Чи один віддає перевагу іншому? Чи є щось, що пропонує, а інше ні?



Дивіться цей підручник з libudev & sysfs: signal11.us/oss/udev
slm

Відповіді:


26

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

З libudev та Sysfs Підручник

витяг

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

ще один уривок

Каталоги в 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"
...

не впевнений, що я тебе правильно зрозумів. Тож вимагайте певного роз'яснення, щоб бути впевненим. Чи ви вирішили взаємодіяти із зовнішнім пристроєм (наприклад, через i2c або mipi), створивши запис в / dev або / sys, виходячи з особистої переваги? Якщо ні, то в якому випадку / чому б скоріше обрати для першого замість другого (і віце-верку)?
LandonZeKepitelOfGreytBritn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.