Откуда lsusb -t получает данные?

Я хочу, чтобы файл, из которого команда

lsusb -t

извлекает данные Мне любопытно посмотреть, где это хранится.

h ttps:https://ask-ubuntu.ru/images/8ae09674e972c6c27ee33870726f4467eb29a517.png

и может ли кто-нибудь также сказать, что можно сделать с идентификатором устройства, который отображается в fdisk -l?

5 ответов

lsusb читает свои данные из ядра, предоставленного виртуальным sys Файловая система смонтирована в /sys; в частности, из расположения соответствующих каталогов для USB-устройств. Эти устройства подключены к разным шинам PCI и (в основном) обнаруживаются udevd,

Например, на моем компьютере приведен один пример расположения устройства 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

Извините, я вам не помогу! Если вы хотите повеселиться:

ldd `which lsusb`
strace lsusb -t
ltrace -l "libudev*" lsusb -t

Ну, я бы предложил прочитать хотя бы длинное описание (если не полное руководство) каждой команды, используя man или же info,

Ядро имеет драйверы для устройств, и ядро ​​добавляет их. Устройства сообщают о своих возможностях драйверу или BIOS. О некоторых из них сообщает BIOS. Я знаю это, потому что у меня был BIOS с ошибкой, и он сообщал о фанатах, которых не было. Когда процессор нагрелся, драйвер ядра попытался включить несуществующие вентиляторы. Наконец я решил проблему, скомпилировав ядро ​​без поддержки фанатов.

Взгляни на /sys/devices, Вы найдете свои устройства там. Вы можете найти много информации об устройствах в каталогах и файлах. Ядро создает их динамически, когда устройства отключены / подключены.

После быстрого перерыва я обнаружил, что lsusb хранит список VID/PID, которые относятся к названиям продуктов, в /var/lib/usbutils/usb.ids

Другие вопросы по тегам