Ich muss zur Zeit relativ häufig Images von microSD-Karten anfertigen, welche hauptsächlich mit dem ext4-Dateisystem formatiert sind. Jetzt ist das insgesamt ein eher wenig angenehmer Prozess, weil das Anfertigen eines Images Zeit und Speicherplatz kostet.

Das Zeitproblem bekommt man inden Griff, indem man sich ordentliche microSD-Karten kauft (für Consumer sind SanDisk ganz nett, haben sich auch im Industriebereich für uns bewährt), sowie entsprechende microSD-Kartenleser (auch hier gibt es von SanDisk eine schöne, kleine, portable Lösung: SanDisk MobileMate USB 3.0 Reader (Datenraten >90MB/s sind damit problemlos möglich, für Sie getestet).

Das Speicherplatzproblem bekommt man halbwegs in den Griff, wenn man die Images komprimiert. Ich setze dazu gerne zstd ein, welches sich nach einigen Tests als das effizienteste Tool herausgestellt hat (sowohl was Zeitbedarf als auch Kompressionsrate anbelangt).

Leider beinhalten Images von microSD-Karten oft Daten an Stellen, wo gar keine mehr sein sollten. SSDs „trimmen“ diese Bereiche i.d.R. automatisch, microSD-Karten können das hingegen nicht.

Wer allerdings auf ein Dateisystem der ext-Familie setzt hat Glück - denn genau dafür gibt es zerofree. Kurzgesagt überschreibt zerofree effizient die Bereiche, die Nullen enthalten sollten aber es nicht tun. Dadurch fallen die anschließend angefertigten Images deutlich kleiner aus, als es sonst der Fall wäre. Die Benutzung ist denkbar einfach:

# zerofree -v /dev/sdXY

Danach kann man ein Image anfertigen, auf die genauen Parameter gehe ich hierbei explizit nicht ein:

# dd if=/dev/sdX bs=1M status=none | zstd -z -v --adapt=min=1,max=19 -o microSD.img.zst

Das war's.