Linux 上有等效的“SD 存储卡格式化程序”吗?

Zio*_*yte 7 sd-card

我经常需要完全擦除 SD 卡。

使用SD 存储卡格式化程序可以大大加快此过程。

不幸的是,该程序似乎在 Linux 下不可用,并且替代方案(例如:ddshred)需要很长时间。

据我所知,SD/MMC 卡具有用于批量擦除的特定命令,我怀疑这就是“SD 存储卡格式化程序”所使用的命令(而不是尝试通过覆盖来擦除其内容)。

有一些工具使用相同的吗?

hac*_*rb9 9

使用blkdiscard

简而言之:

blkdiscard /dev/mmcblk0
Run Code Online (Sandbox Code Playgroud)

讨论

要快速擦除整个 SD 卡,可以使用blkdiscard(8)命令。这会调用 Linux BLKDISCARD ioctl,后者又传递 CMD38,与SD Memory Card Formatter相同。

有趣的选择

  • -s--secure安全地丢弃块。正如其他地方所指出的,普通的 CMD38 将使某些块显示为空,但由于垃圾收集而使其他块清晰可见。-s如果您希望更安全一点并强制擦除垃圾收集块,请使用。

  • -z--zero零填充块而不是丢弃。

无法通过 USB 工作

请注意,虽然这适用于我的笔记本电脑和 Raspberry Pi,但它不适用于 USB SD 读卡器。不同之处在于内核需要访问低级MMC子系统,USB 将其抽象为通用“大容量存储”设备。[我相信微软Windows也有同样的限制,但如果我错了,请在评论中纠正我。]

如果您没有可以直接与低级 SD 卡通信的设备,可以使用 Arduino 构建一个设备并运行SDFormatter.ino

异常危险!

由于blkdiscard必须以 root 身份运行,因此它可以轻松破坏您的所有数据。您最好确保将其指向正确的设备,然后再次仔细检查。使用lsblkdf.

联机帮助页声称,为了安全起见,只有在驱动器尚未安装的情况下它才会起作用。这将是一个很好的安全功能,但截至撰写本文时,情况并非如此。如果驱动器已经格式化,则当前的实现需要-f,--force选项,由于 SD 卡已预先格式化,因此(几乎)总是会出现这种情况。不幸的是,使用--force意味着所有检查(包括驱动器是否正在使用)都将被禁用。

希望有一天 Linux 将允许 blkdiscard 在可移动设备上运行,而无需 root 权限,这将大大降低其危险性。

其他用途

除了快速擦除数据以保护隐私之外,据说 blkdiscard(类似于 SSD 的 fstrim)将改善磨损均衡并使某些 SD 卡通常运行得更快一些

  • 我不知道 hdparm 是否使用 **BLKSECDISCARD** 在 SSD 上进行安全擦除,但我怀疑不会,因为这是一个 [ATA 命令](https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase) 。当然,在驱动器内部,它可能会被实现为相同的东西,但这超出了这个问题的范围。 (2认同)