Linux

USB 快閃記憶體驅動器在 Linux 上顯示為兩個設備(不是!兩個分區)

  • December 13, 2020

插入特定的 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使via 可寫的嘗試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

您可能有一個特殊的U3“智能”USB 快閃記憶體驅動器。這樣的快閃記憶體驅動器將自己呈現為兩個設備:一個普通的可寫磁碟設備,以及一個(通常較小且只讀的)設備,通常包含 ISO-9660 文件系統,有效地模擬 CD-ROM。

此功能針對 Microsoft Windows,對其他作業系統基本無用。您的 Linux 發行版應該有一個名為u3-tool或類似名稱的可選包:它包含一個同名的命令行工具,可用於更改兩個設備之間的拆分,或完全刪除第二個設備,從而允許全部容量USB 驅動器的使用方式與普通的舊 USB 快閃記憶體驅動器一樣。

在這種特定情況下,第二個儲存設備只有 2.81 MiB,這讓我認為它可能被設​​計為用作 USB 磁片驅動器模擬器,以便在 USB 引導支持非常有限的舊系統上啟用從 USB 引導。如果這是真的,它可能早於 U3 規範,並且在沒有晶片專用硬體開發工具的情況下完全無法配置。

根據您的file -s /dev/sdc結果,看起來第二個設備目前包含一個正常的 MBR 分區表,但您可以只寫入一個磁片映像/dev/sdcdd然後將該設備用作需要啟動的舊電腦的 USB 磁片模擬器來自 USB。

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

根據USB ID Repository,供應商 ID 058f 屬於 Alcor Micro Corp.,產品 ID 6387 只是“快閃記憶體驅動器”,儘管也提到了具有相同 ID 的 Transcend JetFlash 快閃記憶體驅動器。它可能是各種驅動器製造商按原樣使用的 OEM USB 驅動器晶片。

它也可能是一個廉價的假冒產品,在使用 Microsoft Windows 時乍一看會顯示更大的容量,但 Linux 核心顯示更大的部分只有 126 MB 的容量。今天,一個容量為 32 GB (= 32000 MB) 的名牌 USB 記憶棒應該花費大約 8 美元,因此在這個 USB 記憶棒上花費太多精力可能不值得。

引用自:https://unix.stackexchange.com/questions/624000