So erstellen Sie ".img" aus Dateien

So erstellen Sie ".img" aus Dateien

Ich versuche, einige Dateien in einer „.img“-Datei zu ändern.

Beispiel:

logo-x.squashfs.img
romfs-x.squashfs.img
safeEnv.img
sign.img

Dazu habe ich die „.img“-Datei mit 7-Zip entpackt und die erforderlichen Änderungen vorgenommen. Das Archivieren dieser geänderten Dateien mit 7-Zip ist allerdings nicht möglich, daher habe ich nach einem Tool dafür gesucht, konnte aber keins finden, das die „.img“-Datei in ihrer ursprünglichen Form erstellen kann.

Ich habe versucht, ImgBurn zu verwenden, aber es scheint eine andere Datei als die Originaldatei zu erstellen. Ich habe auch versucht, DD zu verwenden, aber es funktionierte nicht mit Dateien anstelle von Volumes.

Wie kann ich bitte die ursprüngliche „.img“-Datei lesen, um ihr Format herauszufinden und aus den neuen Dateien eine neue Datei erstellen?

Antwort1

Sie haben zwar herausgefunden, dass 7-Zip SquashFS-Bilder in einzelne Dateien umwandeln kann, das übliche Tool hierfür wäre jedoch wahrscheinlich rdsquashfs:

# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img

Anschließend fookönnen Sie die darin enthaltenen Dateien mit folgendem Befehl neu packen mksquashfs:

mksquashfs foo foo-updated.img

Ich glaube, dass bei der Verwendung mksquashfswie oben einige Metadaten aus der ursprünglichen Bilddatei verloren gehen können. Wenn dies für Ihren Anwendungsfall von Bedeutung ist, sollten Sie eine Beschreibung aus dem Originalbild lesen und diese beim Erstellen des neuen Bilds als Referenz verwenden:

# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img
# Read description from image `foo.img' to file `foo.desc`:
rdsquashfs --describe foo.img >foo.desc

# Create image `foo-updated.img' from directory `foo' and description:
gensquashfs --pack-file foo.desc --pack-dir foo foo-updated.img

Antwort2

Wenn Sie tun...

file logo-x.squashfs.img

Und auch...

sudo fdisk logo-x.squashfs.img

Dann 'p', um die Partitionsinformationen auszudrucken. Das kann hilfreich sein.

Wäre es vielleicht auch besser, einfach die IMG-Datei zu mounten und dort Dateien zu der Partition hinzuzufügen, die Sie benötigen?

lsblk
sudo losetup --find logo-x.squashfs.img
lsblk

Jetzt können Sie sehen, in welchem ​​Geräteblock sich die IMG-Datei befindet (z. B.: /dev/loop6).

sudo mount /dev/loop6 /mnt

Antwort3

Es ist möglich, eine QEMU-Maschine zu erstellen und diese Bilder dann in die QEMU-Maschine zu laden, wo sie als Datenträger angezeigt werden. Bearbeiten Sie die Dateien auf diesem Datenträger nach Belieben, und sie bleiben in diesem Zustand, wenn Sie den Datenträger aushängen.

Bei Kürbisbildern ist der Vorgang etwas anders. Sie können dasunsquashfsWerkzeug. Siehe dies fürgenaue Information.

Im Wesentlichen sieht es so aus (für Squashfs-Dateisysteme):

unsquashfs /live/image/livefs.squashfs
touch modified-this.file
mksquashfs squashfs-root/ livefs.squashfs -noappend -always-use-fragments

verwandte Informationen