Je veux le fichier à partir duquel la commande
lsusb -t
récupère les données. Je suis curieux de voir où cela est stocké.
et quelqu'un peut-il aussi dire que faire avec l'identifiant de périphérique qui s'affiche dans fdisk -l
?
lsusb
lit ses données à partir du noyau virtuel fourni par le noyau sys
système de fichiers monté dans /sys
; spécifiquement à partir de l'emplacement des répertoires pertinents pour les périphériques USB. Ces périphériques sont connectés à différents bus PCI et sont (principalement) détectés par udevd
.
Par exemple, sur mon ordinateur, voici un exemple de la localisation d’un périphérique USB connecté à un bus PCI particulier:
/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/
Le contenu du répertoire:
% 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
ne lit que les fichiers pertinents de ce répertoire.
lsusb
utilise libudev pour récupérer la liste des périphériques que vous voyez. Libudev, à son tour, utilise une combinaison de la base de données udev et une recherche dans le système de fichiers /sys
pour trouver des informations sur le matériel.
Dépôts de code pertinents:
https://github.com/gregkh/lsusb
http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev
Le noyau a des pilotes pour les périphériques et le noyau les ajoute. Les périphériques signalent leurs capacités au pilote ou au BIOS. Certains d'entre eux sont rapportés par le BIOS. Je le sais parce que j'avais un BIOS avec un bug et que je rapportais des ventilateurs qui n'étaient pas présents. Lorsque le processeur est devenu chaud, le pilote du noyau a essayé d'activer des ventilateurs inexistants. Enfin, j'ai résolu le problème en compilant le noyau sans assistance pour les fans.
Jetez un coup d'œil à /sys/devices
. Vous trouverez vos appareils là-bas. Vous pouvez trouver de nombreuses informations sur les périphériques dans des répertoires et des fichiers. Le noyau les crée dynamiquement lorsque les périphériques sont déconnectés/connectés.
Excusez-moi, je ne vous aiderai pas! Si vous voulez vous amuser:
ldd `which lsusb`
strace lsusb -t
ltrace -l "libudev*" lsusb -t
Eh bien, je suggère de lire au moins la description longue (si ce n’est tout le manuel) de chaque commande en utilisant man
ou info
.
Après un bref aperçu, j'ai constaté que lsusb conserve une liste des VID/PID associés aux noms de produit dans /var/lib/usbutils/usb.ids.