如何在 Linux 中低级格式化闪存?

bma*_*pin 12 flash-memory

我的朋友在使用 U 盘时遇到了问题,我建议他进行低级格式化。然后我想到我什至不知道如何在 Linux 中做到这一点。那么...如何在 Linux 中对闪存进行低级格式化?我的朋友在 Windows 的驱动器上尝试了“完整格式”,但失败了。

wno*_*ise 12

“低级格式化”是在软盘上完成的,您可以通过选择以不同方式组织磁道和扇区来以不同的密度进行写入。但这对大多数现代媒体来说毫无意义。它关于如何在设备上组织数据的概念是固定不变的。对于具有离散位而不是磁域的闪存来说,这根本没有任何意义。更高级别的格式化是可能的,这mkfs在 unix-land 中。

  • @wnoise 如果 `mkfs` 失败,`fsck` 将无济于事。 (3认同)
  • 我在工作中测试了大量闪存 USB 存储器,其质量随处可见,所以如果您朋友的驱动器坏了并且无法再工作,我不会感到惊讶。这些东西可能会以许多不同的方式损坏,除了从信誉良好的来源购买内存,然后使用“f3”进行测试以确保它没有损坏之外,您对此无能为力。 (2认同)

Law*_*ceC 9

低级格式对不同的人和在不同的上下文中意味着许多不同的东西。

最初的意思是磁盘格式化所需的一个步骤 - 磁盘驱动器需要在介质上写入标头、同步和其他模式,然后才能将数据存储到其中。通过这种方式,磁头可以检测到它何时在 A) 磁道上和 B) 它在磁道上的什么位置。对软盘进行低级格式化使磁盘做好读写块的准备。早期的 MFM 和 RLL PC 硬盘可以进行低级格式化,通常使用内置于硬盘控制器(ISA 卡)ROM 中的实用程序。现代 IDE 和 SATA 硬盘驱动器也是低级格式化的,但仅在工厂进行。

其他各种含义包括向所有块写入零、配置驱动器以禁用“隐藏”区域,例如 HPA 和 DCO,然后将所有块清零,或其他与分区而非格式化更相关的事情。

原始闪存在出厂时需要不同的初始准备步骤——每个闪存“擦除块”(类似于磁盘上的“块”)都需要进行测试,如果确实是坏的,则需要将其标记为坏。每个“eraseblock”都有一个额外的小“OOB”块,用于保存纠错信息——这就是它被标记为坏的地方。您不想重复此步骤,因为写入坏块的行为可能会阻止您再次设置将其标识为坏块的特定位。

但是您不是在处理原始闪存。您正在处理 USB 闪存驱动器。所有闪存驱动器中都有一个控制器芯片,它接受来自主机的 USB 命令并代表主机与内部的原始闪存通信。其中一些控制器芯片可以配置为将部分闪存报告为单独的 CD-ROM 分区,或充当两个单独的 USB 存储设备。根据控制器芯片的品牌和型号,您可以找到可以重置此控制器芯片的恢复或配置实用程序(可能仅限 Windows)。您将首先打开闪存驱动器,寻找小 PCB 上(可能)两个芯片中较小的一个,然后进行一些谷歌搜索。印在外壳外部的品牌和型号不太可能帮助您找到制造控制器的人。


Ign*_*ams 8

没有办法做到在大多数闪存设备的低级别的格式,因为它们具有USB / ATA / SD /等额外的转换层。到MTD,它掩盖了低级 MTD 设备(如果直接[你不能] ,可以进行低级格式化)。