Use isto:
sudo dd if=install57.fs of=/dev/sdc conv=fsync
Isso chama fsync()
após todas as chamadas do write()
sistema. Isso força a dd
não armazenar em cache nada. Veja esta parte da página de manual do 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)).
Este é o comportamento padrão dos kernels. Os kernels do Linux gerenciam caches de gravação e leitura assim: Quando o write()
syscall é emitido, os dados são gravados rapidamente no cache e um status de gravação concluída é enviado ao processo. Quando o buffer é necessário ou quando há tempo livre no barramento, os dados são gravados do cache no disco rígido.
/dev/sdc
é um dispositivo real no seu sistema e não está gravando em um arquivo/dev/sdc
? Faça umls --color /dev
-/dev/sdc
deve ser amarelo se for um dispositivo.