dd 不会覆盖磁盘

dd 不会覆盖磁盘

我在 Windows 主机上的虚拟机 (VMWare) 中运行 Ubuntu 18.04.1。我正在尝试使用 dd 将整个 SD 卡清零。这是我用来向软件组发布嵌入式 Linux 的过程的一部分(当空 FS 数据全为 0 时,SD 卡映像压缩得更好)。

我正在使用的命令是:sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress并且它成功完成;我收到传输记录的打印输出,以及一条消息,指出设备上没有剩余空间。如果我随后查看sudo cat /dev/sdc | hexdump磁盘内容,磁盘仍然充满数据并且不是零(不仅仅是在末尾)。

我是否必须指定 SD 卡的字节数才能使其一致工作?我每次将 SD 卡清零时都不会出现此问题。

完整的控制台输出:

gen-ccm-root@ubuntu:~$ sudo dd if=/dev/zero of=/dev/sdc bs=4M status=progress
15929966592 bytes (16 GB, 15 GiB) copied, 1274 s, 12.5 MB/s
dd: error writing '/dev/sdc': No space left on device
3799+0 records in
3798+0 records out
15931539456 bytes (16 GB, 15 GiB) copied, 1274.19 s, 12.5 MB/s
gen-ccm-root@ubuntu:~$ sudo cat /dev/sdc | hexdump
[sudo] password for gen-ccm-root: 
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0101000 2004 0000 6004 0000 0000 0000 0000 0000
0101010 0000 0000 0000 0000 0000 0000 0000 0000
*
0101400 2005 0000 6005 0000 0000 0000 0000 0000
...

答案1

正如评论中所说,SD卡有坏块。

我提出的解决方案是运行:

badblocks -t 0x0000 -sw /dev/sdc

警告:这是数据破坏性的dd if=/dev/zero

用户收到类似以下内容:

7234624 done, 39:10 elapsed. (0/0/2417408 errors)

显示sd卡损坏。

更换sd卡,问题解决。

答案2

使用

sudo fdsik -l

并查看结果例如:

/dev/mmcblk0
/dev/mmcblk01
/dev/mmcblk02

您的输出可能有所不同!

现在你应该使用:

sudo dd bs=4M if=exmple.img of=**/dev/mmcblk0** conv=fsync status=progress

相关内容