Apa perbedaan antara representasi perangkat /dev
dan yang ada di /sys/class
dalamnya?
Apakah yang satu lebih disukai daripada yang lain? Apakah ada sesuatu yang satu penawaran dan yang lainnya tidak?
Apa perbedaan antara representasi perangkat /dev
dan yang ada di /sys/class
dalamnya?
Apakah yang satu lebih disukai daripada yang lain? Apakah ada sesuatu yang satu penawaran dan yang lainnya tidak?
Jawaban:
File-file dalam /dev
adalah file perangkat aktual yang dibuat oleh UDEV saat dijalankan. Direktori /sys/class
diekspor oleh kernel pada saat dijalankan, memperlihatkan hierarki perangkat keras melalui sysfs
.
Dari libudev dan Tutorial Sysfs
kutipan
Pada sistem Unix dan Unix-like, perangkat perangkat keras diakses melalui file khusus (juga disebut file perangkat atau node) yang terletak di direktori / dev. File-file ini dibaca dari dan ditulis seperti file-file normal, tetapi alih-alih menulis dan membaca data pada disk, mereka berkomunikasi langsung dengan driver kernel yang kemudian berkomunikasi dengan perangkat keras. Ada banyak sumber daya daring yang menjelaskan file / dev secara lebih rinci. Secara tradisional, file-file khusus ini dibuat pada waktu instalasi oleh distribusi, menggunakan perintah mknod. Dalam beberapa tahun terakhir, sistem Linux mulai menggunakan udev untuk mengelola file / dev ini saat runtime. Misalnya, udev akan membuat simpul ketika perangkat terdeteksi dan menghapusnya saat perangkat dihapus (termasuk perangkat hotplug saat runtime). Cara ini,
kutipan lain
Direktori-direktori di Sysfs berisi hirarki perangkat, sebagaimana terpasang pada komputer. Misalnya, di komputer saya, perangkat hidraw0 terletak di bawah:
/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
Berdasarkan jalur, perangkat terhubung ke (kira-kira, mulai dari akhir) konfigurasi 1 (: 1.0) perangkat terpasang ke port nomor 4 perangkat 1-5, terhubung ke pengontrol USB 1 (usb1), terhubung ke Bus PCI. Meskipun menarik, jalur direktori ini tidak banyak membantu kita, karena tergantung pada bagaimana perangkat keras terhubung secara fisik ke komputer.
Untungnya, Sysfs juga menyediakan sejumlah besar symlink, untuk akses mudah ke perangkat tanpa harus tahu PCI dan port USB mana mereka terhubung. Di / sys / class ada direktori untuk setiap kelas perangkat yang berbeda.
Secara umum Anda menggunakan aturan /etc/udev/rules.d
untuk menambah sistem Anda. Aturan dapat dibuat untuk menjalankan skrip ketika berbagai perangkat keras hadir.
Setelah sebuah sistem menyala Anda dapat menulis skrip untuk bekerja melawan salah satu /dev
atau /sys
, dan itu benar-benar turun ke preferensi pribadi, tetapi saya biasanya akan mencoba dan bekerja melawan /sys
dan menggunakan alat-alat seperti udevadm
untuk query UDEV untuk lokasi berbagai sumber daya sistem.
$ 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"
...