我在 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