USB 闪存驱动器在 Linux 上显示为两个设备(而不是两个分区)

USB 闪存驱动器在 Linux 上显示为两个设备(而不是两个分区)

当插入特定的 USB 闪存驱动器时,它显示为两个设备/dev/sdb/dev/sdc,不作为具有多个分区的单个设备。这是日志:

[142161.806978] usb 1-2: new high-speed USB device number 14 using xhci_hcd
[142161.956580] usb 1-2: New USB device found, idVendor=058f, idProduct=6387, bcdDevice= 1.02
[142161.956582] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[142161.956583] usb 1-2: SerialNumber: C3C512C9
[142161.957547] usb-storage 1-2:1.0: USB Mass Storage device detected
[142161.957747] scsi host4: usb-storage 1-2:1.0
[142162.987691] scsi 4:0:0:0: Direct-Access     USB 2.0  Flash Disk       8.08 PQ: 0 ANSI: 2
[142162.988189] scsi 4:0:0:1: Direct-Access     USB 2.0  Flash Disk       8.09 PQ: 0 ANSI: 2
[142162.988598] sd 4:0:0:0: Attached scsi generic sg1 type 0
[142162.988866] sd 4:0:0:1: Attached scsi generic sg2 type 0
[142162.989082] sd 4:0:0:0: [sdb] 246144 512-byte logical blocks: (126 MB/120 MiB)
[142162.989225] sd 4:0:0:0: [sdb] Write Protect is off
[142162.989226] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[142162.989364] sd 4:0:0:0: [sdb] No Caching mode page found
[142162.989367] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[142162.989999] sd 4:0:0:1: [sdc] 5760 512-byte logical blocks: (2.95 MB/2.81 MiB)
[142162.990143] sd 4:0:0:1: [sdc] Write Protect is on
[142162.990146] sd 4:0:0:1: [sdc] Mode Sense: 03 00 80 00
[142162.990414] sd 4:0:0:1: [sdc] No Caching mode page found
[142162.990419] sd 4:0:0:1: [sdc] Assuming drive cache: write through
[142163.002004]  sdb: sdb1
[142163.003225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[142163.013711]  sdc: sdc1
[142163.014811] sd 4:0:0:1: [sdc] Attached SCSI removable disk

正如评论中所建议的,运行结果file -s

# file -s  /dev/sdb
/dev/sdb: DOS/MBR boot sector; partition 1 : ID=0xc, start-CHS (0x0,32,33), end-CHS (0xf,75,60), startsector 2048, 243712 sectors, extended partition table (last)

# file -s  /dev/sdc
/dev/sdc: DOS/MBR boot sector; partition 1 : ID=0x1, start-CHS (0x0,2,1), end-CHS (0x16,3,32), startsector 64, 5696 sectors, extended partition table (last)

我以前从未见过这样的事情。除了扔掉闪存驱动器并重新购买一个之外,还有其他方法可以使其显示为单个设备吗?

谢谢,迪亚卜

更新: 正如 @telcoM 所建议的,我尝试u3-tool对设备运行:

# u3-tool -D /dev/sdb
u3_partition_info() failed: Device reported command failed: status 1
Data partition info:
 - Data partition size: 715190086144 byte(0x53425355)
 - Secured zone size: 49068032 byte(0x0001765c)
 - Unlocked: 0x00000010
 - Password try: 0x20b2a600

Chip info:
 - Manufacturer: 
 - Revision: USBS]v

u3_read_device_property() failed for property 0x03: Header of property 0x0003 could not be read.
u3_read_device_property() failed for property 0x0C: Header of property 0x000C could not be read.
# u3-tool -D /dev/sdc
Error opening device: Read-only file system

尝试使/dev/sdc可写通过hdparam似乎不起作用:

# hdparm -r /dev/sdc

/dev/sdc:
 readonly      =  1 (on)
# hdparm -r0 /dev/sdc

/dev/sdc:
 setting readonly to 0 (off)
 readonly      =  0 (off)
# u3-tool -D /dev/sdc
Error opening device: Read-only file system

答案1

你可能有一个特殊的U3“智能”U盘。这样的闪存驱动器将自身呈现为两个设备:一个是普通的可写磁盘设备,另一个(通常较小且只读)设备通常包含 ISO-9660 文件系统,有效地模拟 CD-ROM。

此功能是针对 Microsoft Windows 而设计的,对其他操作系统基本上毫无用处。您的 Linux 发行版应该有一个名为u3-tool或类似名称的可选软件包:它包含一个同名的命令行工具,可用于更改两个设备之间的分割,或完全移除第二个设备,从而允许像普通的旧 USB 闪存驱动器一样使用 USB 驱动器的全部容量。

在这种特定情况下,第二个存储设备只有 2.81 MiB,这让我认为它可能被设计为用作 USB 软盘驱动器模拟器,以便在 USB 启动支持非常有限的旧系统上启用从 USB 启动。如果这是真的,它可能早于 U3 规范,并且在没有特定于芯片的硬件开发工具的情况下完全无法配置。

从你的file -s /dev/sdc结果来看,第二个设备当前包含一个常规的 MBR 分区表,但你也许可以只写入一个软盘映像,/dev/sdc然后dd将该设备用作需要启动的旧计算机的 USB 软盘模拟器从USB。

[142161.956580] usb 1-2: New USB device found, idVendor=058f, idProduct=6387, bcdDevice= 1.02

根据USB ID 存储库,供应商 ID 058f 属于 Alcor Micro Corp.,产品 ID 6387 只是“闪存驱动器”,尽管也提到了具有相同 ID 的 Transcend JetFlash 闪存驱动器。它可能是各种驱动器制造商按原样使用的 OEM USB 驱动器芯片。

它也可能是一个廉价的假冒产品,在 Microsoft Windows 中乍一看会显示更大的容量,但 Linux 内核显示更大的部分只有 126 MB 的容量。如今,一个容量为 32 GB (= 32000 MB) 的名牌 USB 记忆棒的价格约为 8 美元,因此可能不值得在这个记忆棒上花费太多精力。

相关内容