为什么我的闪存驱动器变成“只读”状态以及(如何)我该修复它?

为什么我的闪存驱动器变成“只读”状态以及(如何)我该修复它?

我有一个全新的闪存驱动器(使用了一周),它被 Windows、Kubuntu 和可启动分区程序标记为只读。为什么会发生这种情况?可以修复吗?如果可以,我该如何修复?


问题

首先,这个硬盘是新的。它肯定没有被用到因正常磨损而损坏的程度,尽管我不会排除有缺陷的部件。

驱动器本身不知何故被锁定在只读状态。Windows 的磁盘管理:

磁盘管理的截图

磁盘部分:

Generic Flash Disk USB Device
Disk ID: 33FA33FA
Type   : USB
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : UNAVAILABLE
Current Read-only State : Yes
Read-only  : No
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

真正令我困惑的是Current Read-only State : YesRead-only : No

尝试的解决方案

到目前为止,我已经尝试过:

  • 在 Windows 中对其进行格式化(在磁盘管理中,右键单击时格式化选项会变灰)。

  • DiskPart 清理 ( CLEAN - Clear the configuration information, or all information, off the disk.):

    DISKPART> clean
    
    DiskPart has encountered an error: The media is write protected.
    See the System Event Log for more information.
    

    事件日志中没有任何内容。

  • Windows 命令行格式

    >format G:
    Insert new disk for drive G:
    and press ENTER when ready...
    The type of the file system is FAT32.
    Verifying 7740M
    Cannot format.  This volume is write protected.
    
  • Windows chkdsk:详细信息请参见下文

  • Kubuntu fsck(通过 VirtualBox USB 直通):详情见下文

  • Acronis True Image 格式化、转换为 GPT、销毁并重建 MBR,基本上任何事情:失败(无法写入 MBR)

详细信息(以及精彩故事)

背景

这是一个全新的通用 8GB 闪存驱动器,我想用它来创建一个多启动闪存驱动器。它的格式为 FAT32,但奇怪的是,它比我遇到的大多数 8 GB 闪存驱动器要大一些。Windows 列出了大约 127MB 的“已使用”空间。我一直不知道为什么。最终的可用空间大约是我通常对 8GB 驱动器的预期(大约 7.4 GIBIbytes)。

我装了不少 Linux 发行版,还有一份 Hiren 的。它们都能完美启动。由美

当我尝试放入 Knoppix DVD 时,YUMI 在其启动命令中添加了一个奇怪的视频选项,这导致 Knoppix 在启动时 X. ttys 1 到 6 仍然作为纯文本界面工作。

几天后,我花了一些时间关闭了那个奇怪的视频选项,使启动命令与 Knoppix 自带的命令相匹配。在尝试启动时,Knoppix 报告了某种形式的 LZMA 损坏。

当前问题

我当时想 Knoppix 文件可能不知何故被损坏了,所以我尝试重新加载它。驱动器几乎已满(45MB 可用),所以我删除了一个同样无法启动的通用 ISO。一切顺利。然后我通过 YUMI 来“卸载”Knoppix,即删除文件并从菜单中删除。文件先被删除,然后菜单被成功清除。但是,可用空间停留在 700MB 左右,与删除 Knoppix 之前一样。在旧的 Knoppix 文件夹中,有一个名为 0 字节的文件KNOPPIX无法删除。

我尝试重新插入驱动器以删除此文件 - 无需安全移除,看看这样做是否有区别(嘿,第一次尝试)。运行标准 Windowschkdsk扫描时没有/r/f报告发现错误。运行时/r卡住了。

我决定试一试fsck,所以我加载了我的 Kubuntu VM,并使用 VirtualBox 的 USB 2.0 直通将驱动器连接到它。我umount编辑了它(/dev/sda1)并运行了 fsck。There are differences between boot sector and its backup.我选择了No action。它告诉我 FAT 不同,并要求我选择第一个或第二个 FAT。无论我选择哪一个,我都会收到通知Free cluster summary wrong。如果我选​​择Correct,它会给出一个不正确的文件名列表。要尝试修复某物至少,我使用该-p选项运行它。修复文件进行到一半时,虚拟机冻结了 - 大约十分钟后我结束了它的进程。

原因?

我的下一个尝试是再次使用 YUMI 来重建整个驱动器。我使用 YUMI 内置的重新格式化(FAT32)选项并安装 Kubuntu ISO(700MB)。格式化成功,但是,Kubuntu 的提取和复制(YUMI 使用 7zip 二进制文件)在完成约 60% 时冻结。等待大约十五分钟后(比上次 3.5GB Knoppix ISO 所花的时间更长),我拔出了驱动器。此时驱动器已经格式化,SYSLINUX 已经安装,只等着解压 ISO 并修改启动菜单。

重新插入后,一切正常 - 但是,任何写入操作都会失败。磁盘管理报告它为只读。重新连接后,它会恢复正常,但写入操作会导致它再次变为只读。经过几次尝试,它在插入时开始变为只读。

尝试修复

这是我尝试上述方法的时候,尝试在格式错误的情况下重新格式化它。但是,即使在可启动磁盘上也无法这样做,这表明出现了更严重的问题。chkdsk现在报告没有问题,fsck仍然报告 MBR 不一致,但现在在告诉我 FAT 不同后总是自动选择第一个 FAT。之后它仍然会这样Free cluster summary wrong。我不能再运行了,-p因为它现在被标记为只读。它还在第一次尝试时以某种方式损坏了我的 VM 磁盘(是的,我确定我选择了 sda,它映射到一个 7.4GB 驱动器 - 我三倍检查过了)。感谢上帝给了我们快照?


我简直想不出主意了。在我这个缺乏经验的头脑里,驱动器固件中的某些东西似乎以某种方式将其设置为“永久”只读 - 有什么方法可以重置它吗?考虑到我已经重新格式化了两次,我并不特别在意保留数据。

此外,让我继续使用 Windows 的修复程序更好;它降低了我意外破坏主硬盘的风险。


更新 1:

出于好奇,我把驱动器拆开了。

电路板照片

如您所见,没有明显的写保护开关。如果这很重要的话,另一侧有一个 ALCOR 品牌的 IC,标签为 AU6989HL。如果似乎没有办法解决这个问题,我可能会拔出(粘住的)卡并将其放入读卡器中,以检查是卡还是控制器坏了。


更新 2:

我已将卡拔出,Windows 现在将该驱动器检测为读卡器。卡上的触点似乎未使用,卡本身有几排孔。将其放入读卡器只能检测到总共约 30MB 的 RAW。可能是原始驱动器错误地将卡报告为故障(好像打开了真正的 SD 卡的写保护)或某处接触不良。

如果没有其他事情,我现在有一张备用的 8GB Micro SD 卡……只要我弄清楚如何将其格式化为 8GB。这似乎是不可能的(Windows、Partedmagic、ddDBAN……不,仍然是 30MB)。好吧。


更新 3

我还有好几个这样的。今天第二个也出现了类似的故障(只读)。剩下的两个被检测为空读卡器/未格式化的驱动器,具体取决于震动(接触不良?)。其中一个被检测为 1/3 满,并且卷名很奇怪。

H2testw 结果(这是我拥有的最后一个可以完全运行的结果!):

Warning: Only 7762 of 7812 MByte tested.
The media is likely to be defective.
7.5 GByte OK (15896472 sectors)
52 KByte DATA LOST (104 sectors)
Details:0 KByte overwritten (0 sectors)
0 KByte slightly changed (< 8 bit/sector, 0 sectors)
52 KByte corrupted (104 sectors)
0 KByte aliased memory (0 sectors)
First error at offset: 0x0000000186003000
Expected: 0x0000000186003000
Found: 0x00200800c40c3061
H2testw version 1.3
Writing speed: 3.95 MByte/s
Reading speed: 14.0 MByte/s
H2testw v1.4

虽然这有点令人担忧,但显然这些驱动器确实有近 8GB 的​​容量,这已通过一种经常用于成功检测假冒闪存驱动器的工具进行了验证。使用 Micro SD 卡而不是标记的闪存模块几乎不可能重新刷新驱动器,因为 Alcor 的驱动器刷新工具需要内存模型作为参数。我想我会把所有东西都扔掉。

答案1

您可以尝试使用芯片制造商 Alcor 的工具。您可以通过 Google 找到它,名称为“ AlcorMP_5T2F_6T2F_2011-11-10.02”。

在那里,您首先打开 LoadDriver.exe 并输入您的 VID 和 PID(您可以使用 ChipGenius 或使用 Linux 并输入“lsusb -v”来找到这些值),然后单击安装。对于我的记忆棒,这些值为058F6387

然后运行 ​​AlcorMP.exe,其中应该会列出您的设备。单击其左侧的按钮,然后 Start 会对您的设备进行低级格式化和坏块扫描。

答案2

我个人认为卡接触不良,无法使用。立即备份所有内容。

我会使用 Linux 的 dd 实用程序来重置设备。只读状态可能位于设备的引导扇区中,而 fsck 和 chkdsk 是文件系统级检查,因此作用不大。

启动你的 ubuntu ISO 并尝试:

dd if=/dev/zero of=/dev/sdx bs=1M

将 /dev/sdx 替换为您的 USB 驱动器对应的设备

/dev/sdx1 是分区,而 /dev/sdx 是整个驱动器。您需要确保分区已卸载才能实现这一点。如果您无法 dd 驱动器,因为它是只读的,我会将其归结为硬件故障,您可能会在 dmesg 输出中看到它。

答案3

RMPrepUSB具有快速驱动器容量测试,旨在测试“假”USB 闪存驱动器并测试其容量。

这是很多比运行 H2TESTW 更快(但不那么彻底)。如果它通过了 RMPrepUSB 测试,那么您可以随时运行 H2TESTW - 如果它未通过 RMPrepUSB Quick Drive 测试,那么它将不会通过 H2TESTW,而且无论如何 H2TESTW 都需要很长时间才能测试它。

答案4

当驱动器向 SCSI MODE SENSE 等命令返回无效数据时,可能会发生只读。可能是由损坏的固件或闪存引起的。确实没有解决办法。

相关内容