我有一个旧的无品牌赠送的 USB 闪存盘,但是两个磁盘显示在正在运行的系统上。其中一个是可写的,但另一个是只读即使外面没有可见的物理写保护开关。
在 Windows 上:
WIN-R: diskpart
DISKPART> list disk
...
disk 1 online ...
disk 2 online ...
DISKPART> list volume
...
volume 2 normal ...
volume 3 normal ...
DISKPART> select disk 1
DISKPART> attributes disk
readonly status: no
readonly: no
DISKPART> select disk 2
DISKPART> list partition
partition 1 ...
DISKPART> attributes disk
readonly status: yes
readonly: yes
DISKPART> attributes disk clear readonly
DISKPART> attributes disk
readonly status: yes
readonly: no
DISKPART> select partition 1
DISKPART> format
error: write protection
在 Linux 上:
$ sudo parted -l
...
Model: Generic Flash Disk
Disk /dev/sdb ...
Warning: Unable to open /dev/sdc read-write (Read-only file system). /dev/sdc has been opened read-only.
Model: Generic Flash Disk
Disk /dev/sdc ...
$ sudo parted /dev/sdc
Warning: Unable to open /dev/sdc read-write (Read-only file system). /dev/sdc has been opened read-only.
(parted) print
number 1 ...
(parted) rm 1
error: not permitted to write
我在 Google 上搜索了一下,找到了这个文章在内部硬件/固件基于 USB 写保护。如何验证是否如文章所述?否则,如何删除这种 USB 写保护?
我也尝试过零扇区 0和磁盘分区在 Windows 上如评论所述@JoepvanSteen,但只读状态依然存在。
DISKPART> clean
DISKPART> attributes disk
readyonly status: yes
readonly: no
DISKPART> clean
error: device i/o
此外,使用磁盘管理Windows 上的工具显示磁盘 2具有功能性胖的文件系统,但该卷的子菜单弹出窗口中的所有可写选项都变为灰色。
附注:我首先将这个问题发布在堆栈溢出并希望一些固件开发人员提供诊断提示,但 mod 认为这与主题无关。解决这个问题在经济价值上毫无价值,但在调查过程中学习和理清底层是有价值的。
答案1
我将继续调查并通过标准 Linux 工具找出根本原因,如下所示。
首先,USB 设备声称磁盘 2当它插入正在运行的主机系统时会进行写保护,并且主机会遵循声明从而禁用可写操作。
$ dmesg
New USB device found, idVendor=...., idProduct=....
[sdb] Write Protect is off
[sdc] Write Protect is on
其次,让主持人相信磁盘 2可通过USB 怪异模式,则主机可以发送写入请求磁盘 2到设备,但设备拒绝写入磁盘 2并回应感知关键数据保护对主机,所以只读保持完好。
$ dmesg
[sdc] Assuming Write Enabled
[sdc] Write ...
[sdc] Sense Key : Data Protect
最后,USB 驱动器控制器由一家信誉良好的供应商提供系统盘命令,它可以施加只读状态磁盘 2从而有效地避免解锁。另一方面,控制器/固件由于允许零扇区 0最初,即使数据内容保持写保护,也会破坏分区。