web-dev-qa-db-ja.com

lsusb -tはどこからデータを取得しますか?

コマンドの元のファイルにしたい

lsusb -t

データを取得します。これがどこに保存されているのか知りたいです。

this is the snap

fdisk -lに表示されるデバイスIDで何ができるのか、誰にもわかりますか?

3
juggernauthk108

lsusbは、提供されるカーネルからデータを読み取りますsys/sysにマウントされたファイルシステム。具体的には、USBデバイスの関連ディレクトリの場所から。これらのデバイスは異なるPCIバスに接続され、(ほとんど)udevdによって検出されます。

たとえば、私のコンピューターでは、特定のPCIバスに接続されたUSBデバイスのローカライズの一例です。

/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は、このディレクトリの関連ファイルから読み取ります。

4
heemayl

lsusblibudevを使用して、表示されるデバイスのリストを取得します。 Libudevは、udevデータベースと/sysファイルシステムの検索を組み合わせて使用​​し、ハードウェア情報を見つけます。

関連するコードリポジトリ:

https://github.com/gregkh/lsusb

http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev

2
PokeyBagelHole

カーネルにはデバイス用のドライバーがあり、カーネルはそれらを追加します。デバイスは、その機能をドライバーまたはBIOSに報告します。それらのいくつかはBIOSによって報告されます。バグのあるBIOSがあり、存在しないファンを報告していたためです。プロセッサが熱くなると、カーネルドライバーは存在しないファンをオンにしようとしました。最後に、ファンをサポートせずにカーネルをコンパイルすることで問題を解決しました。

/sys/devicesをご覧ください。そこにデバイスがあります。デバイスに関する多くの情報をディレクトリとファイルで見つけることができます。カーネルは、デバイスが切断/接続されたときにそれらを動的に作成します。

0
nobody

すみません、私はあなたを助けません!楽しみたい場合:

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

manまたはinfoを使用して、各コマンドの少なくとも長い説明(マニュアル全体ではないにしても)を読むことをお勧めします。

0
user.dz

簡単な調査の後、lsusbが/var/lib/usbutils/usb.idsに製品名に関連するVID/PIDのリストを保持していることがわかりました。

0
nohupper