/ Dev ve / sys / class arasındaki fark?


Yanıtlar:


26

İçindeki dosyalar /devUDEV'in çalışma zamanında oluşturduğu gerçek cihaz dosyalarıdır. Dizin /sys/class, donanım tarafından sıradüzenini açığa çıkararak çalışma zamanında çekirdek tarafından dışa aktarılır sysfs.

Gönderen libudev ve sysfs Öğreticisi

alıntı

Unix ve Unix benzeri sistemlerde, donanım aygıtlarına / dev dizininde bulunan özel dosyalar (ayrıca aygıt dosyaları veya düğümler olarak da bilinir) aracılığıyla erişilir. Bu dosyalar normal dosyalar gibi okunur ve bunlara yazılır, ancak bir diske veri yazmak ve okumak yerine, doğrudan donanımla iletişim kuran bir çekirdek sürücüsü ile iletişim kurarlar. / Dev dosyalarını daha ayrıntılı olarak anlatan birçok çevrimiçi kaynak var. Geleneksel olarak, bu özel dosyalar, kurulum sırasında mknod komutunu kullanarak dağıtım sırasında oluşturulmuştur. Son yıllarda, Linux sistemleri çalışma zamanında bu / dev dosyalarını yönetmek için udev kullanmaya başladı. Örneğin, udev, cihazlar algılandığında düğümler oluşturur ve cihazlar çıkarıldığında bunları siler (çalışma zamanında hotplug cihazları dahil). Bu yoldan,

başka bir alıntı

Sysfs'teki dizinler, bilgisayara bağlı olduklarından aygıtların heirarşisini içerir. Örneğin, bilgisayarımda, hidraw0 aygıtı şu konumda bulunur:

/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

Yola bağlı olarak, cihaz, (kabaca, uçtan başlayarak), USB denetleyiciye 1 (usb1) bağlı, 1-5 numaralı bağlantı noktasına bağlanan cihazın 1 (: 1) numaralı yapılandırmasına bağlanır. PCI veri yolu. İlginç olsa da, bu dizin yolu bizi çok iyi yapmıyor, çünkü donanımın bilgisayara fiziksel olarak nasıl bağlı olduğuna bağlı.

Neyse ki, Sysfs, hangi PCI ve USB bağlantı noktalarına bağlı olduklarını bilmeden cihazlara kolay erişim için çok sayıda sembolik bağlantı sağlar. / Sys / class'ta her farklı cihaz sınıfı için bir dizin var.

Kullanımı?

Genel olarak /etc/udev/rules.dsisteminizi güçlendirmek için kurallar kullanırsınız . Çeşitli donanım mevcut olduğunda komut dosyalarını çalıştırmak için kurallar oluşturulabilir.

Bir sistem açıldığında ya /devda ya karşı çalışacak senaryolar yazabilirsiniz /sysve bu kişisel tercihlere bağlı, ancak genellikle çeşitli sistem kaynaklarının konumları için UDEV'yi sorgulamak /sysgibi araçlar kullanmaya çalışır ve bunları kullanırım udevadm.

$ 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"
...

seni doğru anladığımdan emin değilim. Bu yüzden emin olmak için biraz açıklama istemek. / Dev veya / sys içine bir giriş oluşturarak harici bir cihazla (örneğin i2c veya mipi aracılığıyla) arayüz oluşturmaya karar verip vermemeniz tamamen kişisel tercihinize mi dayanıyor? Olmazsa, hangi durumda / neden birincisi yerine ikinciyi tercih eder (ve yardımcısı)?
LandonZeKepitelOfGreytBritn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.