Wie verschieben Sie Daten im internen Speicher von Embedded Linux?

331
mslo

Ich arbeite an der Entwicklung von Geräten, die an Embedded Linux arbeiten. Wenn ich mit neuen Hardwareversionen arbeite, habe ich ein Image, das ich mit dd auf die SD-Karte kopieren kann, von ihr booten und es in den internen eMMC-Speicher laden kann.

Da das Image für die alte HW verloren geht, versuche ich, ein neues Backup-Image zu erstellen. Ich möchte, dass es so klein wie möglich ist, aber da dd es blockweise macht, ist es egal, ob es vorhanden ist Ist irgendetwas auf dem Block oder nicht wird es sowieso kopiert, also muss ich das komplette Gerät kopieren. Der interne Speicher beträgt etwa 4 GB (ext4) und die Dateien sind weniger als 200 MB.

Ich weiß, dass ich verwenden kann, dd if=/dev/source-device of=image | tar ... aber ich würde es vorziehen, eher etwas zu machen, dd if=/dev/source-device of=image bs=1M count=300aber dafür muss ich sicherstellen, dass sich meine Daten in den ersten 300 MB befinden.

Das bringt mir zwei Fragen:

1) Wie kann man überprüfen, ob sich die Daten in den ersten 300 MB der Festplatte befinden?

2) Wenn keine Daten vorhanden sind, wie kann man sie an den Anfang der Festplatte verschieben?

0

1 Antwort auf die Frage

0
LawrenceC

Es gibt keine "magische" Möglichkeit, das zu tun, was Sie versuchen.

Sie müssen entweder die genaue Größe der aussagekräftigen Daten in Ihrem Image kennen (wenn die Tools, mit denen Sie das Image erstellen, keine Datei mit der Größe der Flash-Partition erstellen, sollten Sie dies bereits wissen) oder das Ende von es irgendwie Wie Sie das Ende finden, hängt von den Daten in Ihrem Bild und den Werkzeugen ab, mit denen Sie es erstellen.

Wenn die zur Installation des Images verwendeten Tools nicht über alle Blöcke im mmcGerät schreiben, können Sie ein "leeres" Image erstellen, das ein erkennbares Muster wie ASCII- / Unicode-Text aufweist, der XX_BLANK_FIRMWARE_SECTION_XX\n\0immer wieder wiederholt wird.

Sie können dann mithilfe eines Dienstprogramms ermitteln, wo im aktuellen Bild die Zeichenfolge beginnt, aus der Sie den Zählwert ermitteln können dd. Ich hexdumpweiß nicht genau, welche Hilfsprogramme für diesen Zweck verwendet werden sollen, aber ich bin mir sicher, dass es mit gutem Gebrauch oder ähnlichem problemlos möglich ist.

Sie können ein paar Bytes entfernt sein, aber es wäre besser als das gesamte Flash zu kopieren, wenn Sie es wirklich vermeiden möchten.

Persönlich würde ich nur eine 16 GB SD-Karte bekommen, die mehrere Bilder aufnehmen kann.