Sự khác biệt giữa đại diện thiết bị trong /dev
và một trong /sys/class
?
Là một trong những ưa thích hơn khác? Có một cái gì đó cung cấp và cái khác không?
Sự khác biệt giữa đại diện thiết bị trong /dev
và một trong /sys/class
?
Là một trong những ưa thích hơn khác? Có một cái gì đó cung cấp và cái khác không?
Câu trả lời:
Các tệp trong /dev
là các tệp thiết bị thực tế mà UDEV tạo khi chạy. Thư mục /sys/class
được xuất bởi kernel trong thời gian chạy, hiển thị phân cấp của phần cứng thông qua sysfs
.
đoạn trích
Trên các hệ thống tương tự Unix và Unix, các thiết bị phần cứng được truy cập thông qua các tệp đặc biệt (còn được gọi là tệp hoặc nút thiết bị) nằm trong thư mục / dev. Các tệp này được đọc và ghi giống như các tệp thông thường, nhưng thay vì ghi và đọc dữ liệu trên đĩa, chúng giao tiếp trực tiếp với trình điều khiển hạt nhân sau đó giao tiếp với phần cứng. Có nhiều tài nguyên trực tuyến mô tả / dev tập tin chi tiết hơn. Theo truyền thống, các tệp đặc biệt này được tạo ra tại thời điểm cài đặt bởi bản phân phối, sử dụng lệnh mknod. Trong những năm gần đây, các hệ thống Linux đã bắt đầu sử dụng udev để quản lý các tệp / dev này trong thời gian chạy. Ví dụ, udev sẽ tạo các nút khi các thiết bị được phát hiện và xóa chúng khi các thiết bị được gỡ bỏ (bao gồm các thiết bị cắm nóng khi chạy). Cách này,
một đoạn trích khác
Các thư mục trong Sysfs chứa quyền thừa kế của các thiết bị, vì chúng được gắn vào máy tính. Ví dụ: trên máy tính của tôi, thiết bị hidraw0 được đặt bên dưới:
/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
Dựa trên đường dẫn, thiết bị được gắn vào (khoảng, bắt đầu từ cuối) cấu hình 1 (: 1.0) của thiết bị được gắn với cổng số 4 của thiết bị 1-5, được kết nối với bộ điều khiển USB 1 (usb1), được kết nối với Xe buýt PCI. Mặc dù thú vị, đường dẫn thư mục này không giúp chúng ta làm tốt lắm, vì nó phụ thuộc vào cách phần cứng được kết nối vật lý với máy tính.
May mắn thay, Sysfs cũng cung cấp một số lượng lớn các liên kết tượng trưng, để dễ dàng truy cập vào các thiết bị mà không cần phải biết cổng PCI và USB nào được kết nối. Trong / sys / class có một thư mục cho mỗi loại thiết bị khác nhau.
Nói chung, bạn sử dụng các quy tắc /etc/udev/rules.d
để tăng cường hệ thống của bạn. Các quy tắc có thể được xây dựng để chạy các kịch bản khi có phần cứng khác nhau.
Khi hệ thống hoạt động, bạn có thể viết các tập lệnh để chống lại /dev
hoặc /sys
, và nó thực sự phù hợp với sở thích cá nhân, nhưng tôi thường sẽ cố gắng và /sys
sử dụng các công cụ như udevadm
truy vấn UDEV cho các vị trí của các tài nguyên hệ thống khác nhau.
$ 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"
...