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


13

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

Answers:


12

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


因此,如果我朋友的闪存驱动器上的文件系统混乱了,mkfs他唯一的选择吗?如果那不起作用怎么办?他别无选择吗?
bmaupin

@Bryan:嗯,他也可以尝试fsck,相当于dos的chkdsk
2012年

3
@wnoise如果mkfs失败,fsck将无济于事。
derobert

2
我在工作中测试了大量的闪存USB存储器,其质量遍及整个地图,因此,如果您朋友的驱动器刚刚坏掉并且无法再使用,我也不会感到惊讶。这些事情可能会以许多不同的方式破坏,除了从信誉良好的来源购买内存,然后进行测试f3以确保其没有损坏之外,您无能为力。
unfa

8

低级格式化对不同的人和不同的上下文意味着许多不同的事情。

最初的含义是磁盘格式化中需要采取的步骤-磁盘驱动器需要先在媒体上写入标头,同步和其他模式,然后才能将数据存储到其中。通过这种方式,磁头可以检测到它何时在轨道上A)和在轨道上B)。低级格式化软盘将使磁盘能够读取和写入块。早期的MFM和RLL PC硬盘驱动器可能是低级格式化的,通常使用内置在硬盘驱动器控制器(ISA卡)ROM中的实用程序。现代的IDE和SATA硬盘驱动器也都是低级格式化的,但仅限于出厂时。

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

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

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



6

dd为此使用命令dd if=/dev/zero of=/dev/hda

这将破坏硬盘驱动器上的所有数据,所有引导扇区信息以及所有分区上的所有数据。但是,它不会使磁盘变得无用,您只需要创建一个干净的磁盘而只需要创建分区并安装一个新的引导扇区,这将在您安装任何操作系统(包括Linux或Windows)时发生。这是清除不希望看到的任何不良分区,病毒,恶意安装或数据的好方法。


4
希望使用/dev/zero擦除闪存器件。请参阅我的博客中的条目:fakkelbrigade.eu/chris/blog/2012/01/…–
克里斯·

1
将/ dev / zero写入闪存设备并非没有错。向设备写入1的唯一优点是,下次不必写入磁盘时,您可能会获得更快的写入速度,因为不必先擦除磁盘-这取决于闪存转换层的智能性。
肖恩·高夫

2
@ChrisDown,不确定其性能如何比较,但可以使用badblocks -s -w -t 0xff /dev/?d??。您会得到所有1的书面内容,并进行测试。
Zoredache

2
@ChrisDown您的博客条目符合404的规定。
derobert

1
如果闪存在内部擦除为全1,则转换层应该将这些位取反,因为习惯上将磁盘格式化为全零。
psusi


2

过去(尽管有一段时间)我遇到过实现SCSI FORMAT UNIT命令的设备-从Linux您可以使用:

sg_format --format / dev / sdX

将这些设备重置为出厂状态(USB存储规范源自较早的SCSI标准)。

我相信某些较新的USB 3设备也可以实现ATA安全命令,因此您可以使用https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase,这可能会导致将闪存转换层重置为其出厂设置。状态(通常与SSD一样)。


1

闪存是一种低级格式,但它是在工厂使用特定于供应商的软件完成的。

为此,您需要直接与内存控制器芯片对话。不幸的是,我找不到在Linux上可以做到这一点的程序。

有一些制造商工具可以执行低级格式化,并且可以将某些设置(例如LED行为,将驱动器设为只读)和数据(例如制造商名称,型号名称,序列号)写入内存控制器芯片组,但是这些工具通常仅适用于Windows,并且通常为中文。

一种这样的工具称为“ FC MP Tools”。据我所知,这些由Alcor Micro设计,由FirstChip(FC)制造。显然,“ MP”代表“批量生产”。

我正在使用在这里找到的版本:http : //down.upantool.com/file/software/mass/FristChip/2018/iTe_MpTools_20171130.zip

您可以点击以下其他链接:https : //repusb.cubava.cu/ ? page_id = 2052 https://www.rmprepusb.com/tutorials/repair-your-usb-flash-drive http://reboot.pro/topic / 20865-alcor-micro-usb-pen-drive-repair / http://reboot.pro/topic/19901-no-alcor-mptool-is-recognizing-my-usb/ https://www.elektroda.pl /rtvforum/topic3145335.html http://flashboot.ru/files/file/30/ http://www.flashdrive-repair.com/2014/05/download-fc-mptool-v402-for-fixing.html https ://www.cdrinfo.pl/download/356133849

它在Wine中运行,但不会检测驱动器芯片组(它可能需要直接访问USB控制器才能完成)。

另外,要使其正常工作,您需要具有支持特定Alcor芯片组的闪存驱动器。同样,每个供应商都有自己的软件,可以通过USB与控制器芯片通信。

我有这个:

在此处输入图片说明

注意微控制器上的芯片组部件号:FC1178 BC1 FC MP Tools程序会将其标识为1178BC芯片组:

在此处输入图片说明

我链接的软件可以在Windows XP和10下使用。但是-如果将程序切换为英语,它将崩溃。用英语设置您的首选项,然后重新启动程序并且不要更改语言-它应该可以工作。也许它将在较新的版本中修复。

无论如何-不同的供应商有不同的工具,这是一个小难题,AFAIK没有标准,而且(至少此工具)不幸的是只能在Windows上运行。

据我所知,这将测试内存芯片并将错误的扇区映射写入控制器芯片,以便它只能为操作系统提供良好的内存。这样,即使部分损坏的芯片也可以使用和出售。这些可能在工厂中按质量和低级格式化为不同的容量。这称为合并。

也许有人可以收集很多这些工具,对它们进行反向工程并为Linux创建通用的开源工具,我们就可以做到-否则我看不到。


1

尽管在硬盘驱动器和软盘驱动器上进行低级格式化对闪存驱动器没有意义,但确实存在针对“低级格式化”闪存驱动器的制造商特定实用程序:这是一个示例:Alcor低级格式化实用程序

我在寻找可以在Linux上运行的实用程序时遇到了这个问题。但是,似乎闪存驱动器制造商并不在乎让我们高兴。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.