Estoy trabajando en un sistema integrado con la versión busybox de dd. Estoy tratando de probar un borrado de la unidad desde alguna utilidad externa, sin embargo, dd no lee del disco nuevamente después del borrado, pero me muestra los datos almacenados en caché.
Lo reduje a dd como cuando hago un dd inicial, veo los datos, reinicio mi sistema para vaciar el caché, borré y luego volví a ejecutar dd, apareció con todos los ceros.
Sin embargo, si hago dd en la configuración de fábrica, borro la unidad y hago dd nuevamente sin reiniciar, no me mostrará todos los ceros hasta que se reinicie.
Leí en la página de manual de GNU que dd admite la opción iflag, con un indicador de nocaché, pero busybox no es compatible con esa opción, por lo que está fuera de discusión.
Mi pregunta es ¿cómo puedo obligar a dd a leer desde el disco nuevamente en lugar de hacerlo desde la memoria caché?
Respuestas:
Tu podrías intentar
que deja caer todo tipo de cachés.
Para más detalles ver
/usr/src/linux/Documentation/sysctl/vm.txt
endrop_caches
.(Nota: la pregunta era sobre busybox dd que hasta la fecha todavía no es compatible
iflag=direct
).fuente
/proc
sistema de archivos está deshabilitado en algunas configuraciones integradas de Linux.dd
basura en el proceso si transfiere una gran cantidad de datos.Basado en la respuesta de @ sendmoreinfo:
No afecta la lectura de caché.
fuente
La E / S directa (modo abierto
O_DIRECT
) debería funcionar, pero es posible que su núcleo y / odd
no lo admitan.fuente
Una pequeña floritura a la respuesta directa iflag =; proporcionar una barra de progreso también:
Sin el iflag / oflag, el pv informa que está terminado y luego parece que está colgado; pero el dd del dispositivo todavía funciona en la memoria caché.
fuente