Tôi muốn sử dụng libudev để xem cho một số thiết bị nhất định. Cụ thể, tôi muốn theo dõi lưu trữ di động: Ổ đĩa cứng USB, USB Keys, thẻ SD, v.v. libudev API cho phép bạn tìm thiết bị nếu bạn biết 'hệ thống con' của thiết bị và 'devtype'. Tôi đã thử các thiết bị trên máy tính của mình và sử dụng udevadm để thấy rằng tất cả các loại lưu trữ đều có hệ thống con của thiết bị 'block' -> 'scsi', nhưng tôi không biết thiết bị này có những gì. Có một danh sách các devtypes và hệ thống con tôi có thể sử dụng như một tài liệu tham khảo một nơi nào đó, hoặc một phương pháp tốt hơn để tìm kiếm devtype?Cách xác định thiết bị với udev
Trả lời
Bạn có thể nhận danh sách các hệ thống con với ls /sys/class/
Tôi không chắc chắn về các loại thiết bị. Tôi đoán bạn có thể có được điều này bằng:
ls -l /sys/class/scsi_disk/
total 0
lrwxrwxrwx 1 root root 0 2011-12-07 21:20 0:0:0:0 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/vendor
ATA
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/model
ST9500325AS
Bạn có thể thử các file khác trong thư mục thiết bị.
Thật sự tôi nghĩ rằng bạn cần:
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/type
0
cat /usr/include/scsi/scsi.h | grep TYPE_
#define TYPE_DISK 0x00
#define TYPE_TAPE 0x01
#define TYPE_PROCESSOR 0x03 /* HP scanners use this */
#define TYPE_WORM 0x04 /* Treated as ROM by our system */
#define TYPE_ROM 0x05
#define TYPE_SCANNER 0x06
#define TYPE_MOD 0x07 /* Magneto-optical disk -
#define TYPE_MEDIUM_CHANGER 0x08
#define TYPE_ENCLOSURE 0x0d /* Enclosure Services Device */
#define TYPE_NO_LUN 0x7f
Không có tham khảo toàn cầu nào? Thông tin bạn đưa ra thực sự hữu ích nhưng chỉ cho scsi của nó. Đầu đọc thẻ của tôi là loại khối-> mmc ... vv Tôi tìm thấy liên kết này, nhưng đã hy vọng có một cái gì đó phổ quát hơn: http://wiki.xfce.org/dev/thunar-volman-udev – Prismatic
Theo như tôi biết không có đặt tên nhất quán. Mỗi hệ thống con được xử lý khác nhau. Tuy nhiên có một số chương trình trợ giúp trong/lib/udev/mà bạn có thể muốn xem xét. –
Bạn đã tìm thấy một tài liệu tham khảo toàn cầu cho devtypes và hệ thống con? –