Use this instead:
sudo dd if=install57.fs of=/dev/sdc conv=fsync
This calls the fsync()
after every write()
system call. This forces dd
not to cache anything. See this part of the manpage of fsync (man 2 fsync
):
fsync() transfers ("flushes") all modified in-core data of (i.e., modified buffer cache
pages for) the file referred to by the file descriptor fd to the disk device (or other
permanent storage device) where that file resides. The call blocks until the device reports
that the transfer has completed. It also flushes metadata information associated with the
file (see stat(2)).
This is the kernels default behavior. Linux kernels manage write and read caches like this: When the write()
syscall is issued, the data is quickly written to the cache and a write-completed status is sent to the process. When the buffer is needed or when there is free time on the bus, the data is written from the cache to the hard disk.
/dev/sdc
is an actual device on your system and you aren't writing to a file/dev/sdc
? Do anls --color /dev
-/dev/sdc
should be yellow if it's a device.