Wenn ich versuche, dd zum Flashen von Bildern zu verwenden, treten einige Probleme auf, wenn der Suchwert 2 GB überschreitet (dh bs * seek >= 2 GB ).
dd bs=512 count=8 if=sample.img of=/dev/block/mmcblk0 seek=4194304
dd: /dev/block/mmcblk0: Invalid argument
Wenn ich es mit einem Wert (2 GB-1) versuche, ist der Befehl dd erfolgreich. Kann jemand darauf hinweisen, warum genau die 2-GB-Grenze für den Suchwert existiert? Bezieht es sich auf das Dateisystem (FAT-Limit?)? Gibt es eine einfache Problemumgehung, um dd-Arbeit über das Suchlimit hinaus zu bekommen?
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)
Anscheinend tritt das Problem nur bei Suchwerten im Bereich (2GB-4GB) auf. Das dd gelingt über 4GB hinaus - sehr seltsam.
Verwenden Sie nicht busybox dd (kompiliert mit bionic libc). Stattdessen können Sie die statische dd-Binärdatei von gnu coreutils verwenden, die mit glibc oder musl kompiliert wurde. Auf meinem Gerät funktionieren alle Binärdateien gut; Toolbox dd von Android, busybox dd von meefik und statisch aufgebautes dd.
Es wurde bestätigt, dass Bionic mit großen Dateien fehlerhaft ist .
PS: Das Spielen mit eMMC ist gefährlich, besonders beim Testen von Buggy dd. dd ist meiner Meinung nach ein Killer. Sie können versehentlich die ersten paar Bytes von mmcblk0 überschreiben, wodurch Ihr Gerät unbrauchbar wird.
AIB
AIB