Dd

dd 不會覆蓋磁碟

  • March 21, 2019

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

正如評論中所說,SD卡帶有壞塊。

我提出的解決方案是執行:

badblocks -t 0x0000 -sw /dev/sdc

**注意:**這是破壞性的數據,例如dd if=/dev/zero.

使用者收到如下資訊:

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

顯示sdcard已損壞。

換了sdcard,問題就解決了。

採用

sudo fdsik -l

並查看結果,例如:

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

您的輸出可能有所不同!

現在你應該使用:

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

引用自:https://unix.stackexchange.com/questions/507740