简而言之,我拥有的设备不是块设备,因此blkid
命令不适合我。但至少我可以通过lsusb -v
命令获取有关我的设备的一些信息,尽管它不包含其 UUID。
我知道我的设备做有UUID。问题是我尝试运行VBoxManage list usbhost
命令,它向我显示了一些 USB 设备(包括非块设备)他们的 UUID。但由于某种原因,命令的输出在列表的开头突然停止(即使没有尾随换行符,尽管返回代码为 0),所以我没有机会看到我的设备的 UUID。我不想费尽心思去找出它发生的原因。相反,我想知道另一种方法来查找我的设备的 UUID,因为我相信它应该更容易做到。
以防万一,这个信息对某人来说很有趣:Gentoo,linux 3.7.10
/sys/内核/调试/USB/设备
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 3.07
S: Manufacturer=Linux 3.7.10-gentoo-r1 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:1d.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 8
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=8087 ProdID=0024 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms
T: Bus=02 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=048d ProdID=1336 Rev= 1.00
S: Manufacturer=Generic
S: Product=Mass Storage Device
S: SerialNumber=00000000000006
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
B: Alloc= 0/800 us ( 0%), #Int= 4, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 3.07
S: Manufacturer=Linux 3.7.10-gentoo-r1 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:1a.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 6
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=8087 ProdID=0024 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=1366 ProdID=0101 Rev= 1.00
S: Manufacturer=SEGGER
S: Product=J-Link
S: SerialNumber=000038000375
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0403 ProdID=6001 Rev= 6.00
S: Manufacturer=FTDI
S: Product=TTL232R-3V3
S: SerialNumber=FTF5T2QJ
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=01 Lev=02 Prnt=02 Port=04 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=046d ProdID=0a01 Rev=10.13
S: Manufacturer=Logitech
S: Product=Logitech USB Headset
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=(none)
I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
I: If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E: Ad=01(O) Atr=09(Isoc) MxPS= 192 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E: Ad=01(O) Atr=09(Isoc) MxPS= 96 Ivl=1ms
I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
I: If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E: Ad=84(I) Atr=09(Isoc) MxPS= 96 Ivl=1ms
T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=04 Dev#= 6 Spd=480 MxCh= 7
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2001 ProdID=f103 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
T: Bus=01 Lev=03 Prnt=06 Port=01 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=13fe ProdID=3600 Rev= 1.00
S: Manufacturer=
S: Product=
S: SerialNumber=90B217007BC11098
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
T: Bus=01 Lev=03 Prnt=06 Port=03 Cnt=02 Dev#= 12 Spd=1.5 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=045e ProdID=071d Rev= 2.50
S: Manufacturer=Microsoft
S: Product=Microsoft�� 2.4GHz Transceiver V1.0
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
感兴趣的设备是:
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
现有非块设备的UUID:
[krokoziabla@ktulhu]:0:/home/krokoziabla> VBoxManage list usbhost
Host USB Devices:
UUID: f864c487-2a25-4649-84cd-39dc67be695a
VendorId: 0x0403 (0403)
ProductId: 0x6001 (6001)
Revision: 6.0 (0600)
Port: 3
USB version/speed: 2/1
Manufacturer: FTDI
Product: TTL232R-3V3
SerialNumber: FTF5T2QJ
Address: sysfs:/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4//device:/dev/vboxusb/001/004
Current State: Busy
UUID: b03a6680-ecc5-4f48-8103-3e387cf4cb28
VendorId: 0x045e (045E)
ProductId: 0x071d (071D)
Revision: 2.80 (0280)
Port: 3
USB version/speed: 2/1
Manufacturer: Microsoft
Product: Microsoft[krokoziabla@ktulhu]:0:/home/krokoziabla>
答案1
设备没有 UUID。 分区做。 UUID 是在格式化文件系统时创建的。这就是为什么它们可以更改,以及当您重新格式化时它们确实会发生变化的原因。
换句话说,UUID不是硬件的特征,并且没有办法“找到”不存在的信息。
设备上可能有一个或多个分区具有 UUID,因此如果您之前见过与之关联的一个分区,那么它就是分区的 UUID。如果有多个分区,则每个分区可能都有一个 UUID(也可能没有,因为不需要),但它们都不是硬件的特征(它们只是存储在其上的可变数据片段) 。 USB 闪存盘通常附带一个大的预格式化 FAT32 或 NTFS 分区。如果您重新格式化,UUID 将发生变化。
要查找分区的 UUID,您需要查找其作为块设备的标识。 cat /proc/partitions
应该列出内核知道的所有内容,无论是否已安装。假设您的系统上没有连接数十个驱动器,那么找出哪一个是 USB 应该很简单。 /proc/partitions
实际上也列出了驱动器,您可以将其与其分区区分开来,因为驱动器末尾没有数字(sda 与 sda1),并且file -s
输出会有所不同:
> file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 134217728 sectors;
partition 2: ID=0x83, starthead 202, startsector 134219776, 58720256 sectors;
partition 3: ID=0x83, starthead 245, startsector 192940032, 46137344 sectors;
partition 4: ID=0x82, starthead 223, startsector 239077376, 10992304 sectors, code offset 0x63
> file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=cd8e11b5-07ac-7741-ae0c-36e63eacf8a1, volume name "_Fedora-17-x86_6/" (needs journal recovery) (extents) (large files) (huge files)
有时预格式化的驱动器只是一个大设备,例如:
> file -s /dev/sdb
/dev/sdb: x86 boot sector, Microsoft Windows XP Bootloader NTLDR, code offset 0x3c,
OEM-ID "MSDOS5.0", sectors/cluster 64, root entries 512,
Media descriptor 0xf8, sectors/FAT 246, heads 255, sectors 4026368 (volumes > 32 MB) , reserved 0x1, serial number 0xe06de56f,
unlabeled, FAT (16 bit)
请注意,这个实际上是“未标记的”并且似乎没有 UUID(它们不是强制性的)。
答案2
udevadm info --name=/dev/bus/usb/$BUS_NUMBER/$DEV_NUMBER --query=property
给你ID_SERIAL
和ID_SERIAL_SHORT
。我不知道USB设备是否有一个额外的UUID。