Я хочу в файл от который команда
lsusb -t
получает данные. Мне любопытно видеть, где это хранится.
и может любой также говорить что, что может сделать с идентификатором устройства, который отображается в fdisk -l
?
lsusb
считывает его данные с ядра, обеспеченного виртуальным sys
Файловая система, смонтированная в /sys
; конкретно от местоположения соответствующих каталогов для USB-устройств. Эти устройства подключены к различным шинам PCI и (главным образом) обнаруживаются udevd
.
, Например, в моем компьютере вот один пример localtion USB-устройства, подключенного к конкретной шине PCI:
/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/
содержание каталога:
% print -l *
4-1:1.0
authorized
avoid_reset_quirk
bcdDevice
bConfigurationValue
bDeviceClass
bDeviceProtocol
bDeviceSubClass
bmAttributes
bMaxPacketSize0
bMaxPower
bNumConfigurations
bNumInterfaces
busnum
configuration
descriptors
dev
devnum
devpath
driver
ep_00
idProduct
idVendor
ltm_capable
maxchild
port
power
quirks
removable
remove
speed
subsystem
uevent
urbnum
version
lsusb
просто чтения из соответствующего файла (файлов) этого каталога.
lsusb
использование libudev для выборки списка устройств Вы видите. Libudev, в свою очередь, использует комбинацию udev базы данных и поиска /sys
файловая система для нахождения информации об аппаратных средствах
репозитории Соответствующих норм:
https://github.com/gregkh/lsusb
http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev
Ядро имеет драйверы для устройств, и ядро добавляет их. Устройства сообщают о своих возможностях драйверу или BIOS. О некоторых из них сообщает BIOS. Я знаю, что, потому что у меня был BIOS с ошибкой и она сообщала о вентиляторах, которые не присутствовали. Когда процессор стал горячим, драйвер ядра пытался включить несуществующие вентиляторы. Наконец я решил проблему путем компиляции ядра без поддержки вентиляторов.
Смотрят на /sys/devices
. Вы найдете свои устройства там. Можно найти большую информацию об устройствах в каталогах и файлах. Ядро создает их динамично, когда устройства являются скидкой / связанный.
Извините меня, я не помогу Вам! Если Вы хотите некоторую забаву:
ldd `which lsusb`
strace lsusb -t
ltrace -l "libudev*" lsusb -t
ну, я предложил бы прочитать, по крайней мере, длинное описание (если не целое руководство) каждой команды с помощью man
или info
.
После быстрого strace я нашел, что lsusb сохраняет список VID/PIDs, которые касаются названий продукта в/var/lib/usbutils/usb.ids