dd 不是零填充闪存驱动器

dd 不是零填充闪存驱动器

我有一张 SD 卡,运行良好,还有 ubuntu 23.04,dd 不能完全镜像磁盘映像。例如:

预期的:

$ dd if=/dev/zero of=/dev/sdb
$ strings /dev/sdb
$

实际的:

$ dd if=/dev/zero of=/dev/sdb
$ strings /dev/sdb
#random text, a lot

我如何确保我的数据(不是 /dev/zero)将被正确写入?

答案1

尝试这个:

dd if=source of=/dev/sdb bs=1M status=progress conv=fsync

conv=f​​sync 的作用:

即使存在写入错误,也要在完成之前同步输出数据和元数据。

(来源)

如果复制块级设备,请使用 验证它们是否相同cmp

cmp /dev/sda /dev/sdb

cmp-逐字节比较两个文件

答案2

显然它不能正常工作,否则您将能够写入所有扇区。由于目标驱动器似乎无错误地丢弃了写入命令,因此它不可信任,应予以更换。

不幸的是,这是廉价 SD 卡和 USB 闪存盘的常见问题。不仅这些设备中使用的 NAND 质量很差,而且固件质量也很差,因为当固件无法写入任何特定 LBA 地址时,您会预料到固件会抛出错误。

在您的案例中,由于没有错误,目标驱动器接受了写入,无法写入并默默地让它通过。它要么根本就没有检测到问题(这很糟糕),要么检测到但没有通知(这也很糟糕)。

相关内容