비블록 USB 장치의 UUID를 찾는 방법은 무엇입니까?

비블록 USB 장치의 UUID를 찾는 방법은 무엇입니까?

간단히 말해서 제가 가지고 있는 장치가 블록 장치가 아니기 때문에 blkid명령이 작동하지 않습니다. 하지만 최소한 lsusb -v명령을 통해 장치에 대한 일부 정보를 얻을 수는 있습니다. 비록 장치에 UUID가 포함되어 있지 않더라도 말이죠.

나는 내 장치를 알고 있다하다UUID가 있습니다. 문제는 VBoxManage list usbhost명령을 실행하려고 하면 일부 USB 장치(비차단 장치 포함)가 표시된다는 것입니다.그들의 UUID. 그러나 어떤 이유로 명령의 출력이 목록 시작 부분에서 갑자기 중지되므로(반환 코드가 0임에도 불구하고 후행 줄 바꿈이 없어도) 내 장치의 UUID를 볼 기회가 없습니다. 나는 왜 그런 일이 일어났는지 알아내느라 애쓰고 싶지 않습니다. 대신 내 장치의 UUID를 찾는 다른 방법을 알고 싶습니다. 더 쉬울 것이라고 생각하기 때문입니다.

이 정보가 누군가에게 흥미로울 경우를 대비하여: Gentoo, Linux 3.7.10

/sys/kernel/debug/usb/devices

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를 찾으려면 해당 ID를 블록 장치로 찾아야 합니다. 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_SERIALID_SERIAL_SHORT. USB 장치에 추가 UUID가 있는지 모르겠습니다.

관련 정보