UnixのディスクラベルからUSBバージョンを探す

UnixのディスクラベルからUSBバージョンを探す

ドライブラベルでのみUSBバージョン(USB 2.0 / USB 3.0)を検出しようとしています。

USBバージョンは 'からダウンロードできることがわかっています。USBインターフェース「出力のパラメータ」lsusb -v「または」走行速度「出力のパラメータ」lsusb-t"(480M/5000M)。

ドライブラベルは「LSBLK「しかし、USBバージョンをドライブのラベルと一致させるためにこれらの出力を一致させる方法が見つかりませんでした。

私のバックアップオプションは、USBバージョンを検出するためにファイル転送速度をテストすることですが、これはあまり信頼できません。

簡単で信頼できる方法があったらと思います。どんな指針でも大変感謝いたします。

答え1

このタグは、ユーザーが設定したり、USBドライブのファイルシステムをフォーマットしたり、後で設定したりします。 lsusb -vを使用してください。

答え2

これはシステムによって異なりますが、Linux(BSDなどではない)と仮定します。

デバイス名(lsblkから提供)がある場合は、次の操作を行います。

$ udevadm info -a /dev/sdf1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdf/sdf1':
    KERNEL=="sdf1"
  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2':
    KERNELS=="1-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{speed}=="480"

私は「速度」があなたが探しているものだと思います。そうでなければそこにあり、busnumそこdevnumbus:device与えられたものと一致しますlsusb

これはまた、これを手動で実行する方法についての手がかりを提供します。どこから始めるべきか教え/sysてください。その後、USBデバイスが復元されるまで後続のディレクトリを削除できます。それでは、、、などは読めるファイルだけです。readlink -f /sys/block/sdf/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdfspeedbusnumdevnum

関連情報