Cuando trato de usar dd para flashear imágenes, veo algunos problemas cuando el valor de búsqueda supera los 2 GB (es decir, bs * seek >= 2 GB ).
dd bs=512 count=8 if=sample.img of=/dev/block/mmcblk0 seek=4194304
dd: /dev/block/mmcblk0: Invalid argument
Cuando intento con un valor (2GB-1), el comando dd tiene éxito. ¿Alguien puede señalar por qué existe exactamente el límite de 2 GB para el valor de búsqueda? ¿Está relacionado con el sistema de archivos (¿límite FAT?)? ¿Hay alguna solución fácil para que dd funcione más allá del límite de búsqueda?
dd bs=512 count=8 if=sample.img of=/dev/block/mmcblk0 seek=4194303 <
8+0 records in
8+0 records out
4096 bytes transferred in 0.001 secs (4096000 bytes/sec)
Aparentemente, el problema se ve solo para valores de búsqueda en el rango (2GB-4GB). El dd tiene éxito más allá de 4 GB, muy extraño.
No utilices busybox dd (compilado con bionic libc). En su lugar, puede usar el binario dd estático de gnu coreutils compilado con glibc o musl. En mi dispositivo, todos los binarios funcionan bien; Toolbox dd de Android, busybox dd de meefik y dd construido estáticamente.
Se confirma que Bionic tiene errores con archivos grandes.
PD: Jugar con eMMC es peligroso, especialmente cuando se prueba buggy dd. dd es un asesino, en mi opinión. Puede sobrescribir accidentalmente algunos bytes iniciales de mmcblk0 haciendo que su dispositivo sea inútil.
AIB
AIB