Cihaz temsilindeki /dev
ve içindeki temsil arasındaki fark nedir /sys/class
?
Biri diğerine mi tercih edilir? Biri teklif eder, diğeri teklif etmez mi?
Cihaz temsilindeki /dev
ve içindeki temsil arasındaki fark nedir /sys/class
?
Biri diğerine mi tercih edilir? Biri teklif eder, diğeri teklif etmez mi?
Yanıtlar:
İçindeki dosyalar /dev
UDEV'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.
Genel olarak /etc/udev/rules.d
sisteminizi 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 /dev
da ya karşı çalışacak senaryolar yazabilirsiniz /sys
ve bu kişisel tercihlere bağlı, ancak genellikle çeşitli sistem kaynaklarının konumları için UDEV'yi sorgulamak /sys
gibi 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"
...