virt-make-fs
aus libguestfs qcow2
Beispiel
/server//a/332114/163884 erwähnte es, aber hier ist ein vollständiges Beispiel:
sudo apt-get install libguestfs-tools
# Workarounds for Ubuntu 18.04 bugs. See section below.
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*
mkdir sysroot
# Just a test file.
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=qcow2 --type=ext2 sysroot sysroot.ext2.qcow2
Beachten Sie, wie dies sudo
nicht erforderlich ist, außer für Installations- und Ubuntu-Fehlerumgehungen.
Ich habe dann überprüft, ob QEMU es tatsächlich lesen kann mit:
qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...
Ich kann dann das Image in QEMU Linux mounten und die Datei lesen.
virt-make-fs
ext Beispiel
Dieses großartige Tool kann auch rohe ext-Dateisysteme erstellen, z.
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4
die wir direkt auf dem Host überprüfen können mit:
mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile
Minimierung der Bildgröße
Ein wirklich gutes Merkmal von virt-make-fs
ist, dass es automatisch versucht, die Bildgröße zu minimieren, wenn wir dies wünschen:
Virt-make-fs minimiert standardmäßig den zusätzlichen Speicherplatz. Sie können jedoch das Flag --size verwenden, um Speicherplatz im Dateisystem zu belassen, wenn Sie dies wünschen.
so:
df -h
sagt mir, dass das Bild zu 82% gefüllt ist:
/dev/loop17 1.5M 1.1M 244K 82% /home/ciro/test/guestfs/mnt
Wir können leicht zusätzlichen Platz über dem Minimum hinzufügen mit --size-=+
:
virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2
ext4 Journal Overhead
Das Handbuch erwähnt auch, dass:
Beachten Sie, dass ext3-Dateisysteme ein Journal enthalten, das normalerweise 1 bis 32 MB groß ist. Wenn Sie das Dateisystem nicht so verwenden, dass das Journal erforderlich ist, ist dies nur ein Overhead.
und es ist interessant, dies zu überprüfen mit:
du -bs *
welches produziert:
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
so sehen wir, dass die ext4 deutlich größer herauskam.
libguestfs Ubuntu-Fehler
Nun zum Nachteil: Es scheint derzeit keinen Ubuntu-Betreuer zu geben, und die Bibliothek ist unter Ubuntu im Allgemeinen fehlerhaft.
sudo
ist theoretisch nicht erforderlich, aber aufgrund eines Ubuntu-Verpackungsfehlers erforderlich, es sei denn, wir führen eine Problemumgehung durch: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-without-sudo / 1046829 # 1046829
libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again. For further information, read:
http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.
libguestfs: error: /usr/bin/supermin exited with error status 1.
Danach schlägt 18.04 (aber nicht 16.04) ohne unsere Problemumgehungen fehl mit: https://bugzilla.redhat.com/show_bug.cgi?id=1591617
libguestfs: error: tar_in: write error on directory: /:
aufgrund eines Fehlers, der bereits stromaufwärts behoben wurde.
Getestet in Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3.
qemu-img
undfallocate
sind etwas bequemer alsdd
.