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.