Was ist der Unterschied zwischen dd in eine Datei und dd in eine physische Festplatte

Was ist der Unterschied zwischen dd in eine Datei und dd in eine physische Festplatte

Die Größe des Images „openwrt-19.07.6-x86-64-combined-squashfs.img“ beträgt 20 MB. Wenn ich den Dateinamen in „openwrt.raw“ ändere, kann ich es in den virt-manager importieren und das System booten. Aber die Root-Partition „/“ hat kein Leerzeichen.

Wenn ich „openwrt-19.07.6-x86-64-combined-squashfs.img“ in ein USB-Laufwerk dd und dann das USB-Laufwerk in eine neue Datei dd, die Ausgabedatei in den Virt-Manager importiere und das System boote, hat die Root-Partition die Größe „256 MB“.

dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/dev/sde
dd if=/dev/sde of=./openwrt_with_256MB_root_partition.raw

Die Größe von „openwrt_with_256MB_root_partition.raw“ ist die gleiche wie die des USB-Laufwerks. Aber wenn ich den folgenden Befehl verwende:

dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/openwrt.raw

die Ausgabedatei hat dieselbe Größe wie die Eingabedatei. Mir ist klar, dass diese Aktion sinnlos ist. Aber kann mir jemand erklären, was die 256 MB große Root-Partition verfügbar macht, wenn ich sie in das USB-Laufwerk einspeichere? Gibt es eine Möglichkeit, eine Image-Datei mit dem 256 MB großen Root-Speicher zu erstellen, ohne das physische USB-Laufwerk oder andere Datenträger zu benötigen?

Antwort1

Keine Ahnung, was OpenWRT heutzutage macht.

Sie fügen jedoch lediglich Datenmüll am Ende der Datei hinzu. Da die Dateigröße letztlich der Gerätegröße innerhalb der virtuellen Maschine entspricht, ist das Ergebnis leicht verständlich.

Sie können auch Folgendes verwenden truncate:

truncate -s256M openwrt-19.07.6-x86-64-combined-squashfs.img

Streng genommen ist dies nicht dasselbe, da es zu einer Sparse-Datei führt, aber es ist viel schneller und gut genug.

Um genau dasselbe zu erreichen, müssen Sie tatsächlich einige Daten in die Datei schreiben, etwa so:

dd if=/dev/zero bs=1M count=236 >> openwrt-19.07.6-x86-64-combined-squashfs.img

Sie können auch erweiterte Flags in verwenden dd. 256 - 20 = 236

Ein weiteres damit verbundenes Tool ist fallocate.


Aktualisieren: Wenn man sich das Bild ansieht, sieht es so aus:

$ fdisk -l openwrt-19.07.6-x86-generic-combined-squashfs.img
Disk openwrt-19.07.6-x86-generic-combined-squashfs.img: 19.5 MiB, 20450816 bytes, 39943 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf1f0223e

Device                                             Boot Start    End Sectors  Size Id Type
openwrt-19.07.6-x86-generic-combined-squashfs.img1 *      512  33279   32768   16M 83 Linux
openwrt-19.07.6-x86-generic-combined-squashfs.img2      33792 558079  524288  256M 83 Linux

(Beachten Sie die Spalte „Größe“.)

Die zweite Partition soll das komprimierte schreibgeschützte Root-Image enthaltenUndein Lese-/Schreib-F2FS-Bereich, keine Ahnung, wie das funktioniert. Vielleicht wird die Größe beim ersten Booten geändert oder so.

verwandte Informationen