virt-make-fs
à partir de l' qcow2
exemple de libguestfs
/server//a/332114/163884 l'a mentionné, mais voici un exemple complet:
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
Notez comment sudo
n'est pas requis, sauf pour l'installation et les solutions de contournement des bogues Ubuntu.
J'ai ensuite vérifié que QEMU peut réellement le lire avec:
qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...
Je peux ensuite monter l'image dans QEMU Linux et lire le fichier.
virt-make-fs
exemple ext
Cet outil génial peut également créer des systèmes de fichiers ext bruts, par exemple:
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4
que nous pouvons vérifier directement sur l'hôte avec:
mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile
Minimisation de la taille de l'image
Une très bonne caractéristique de virt-make-fs
est qu'il essaie automatiquement de minimiser la taille de l'image si c'est ce que nous voulons:
Virt-make-fs par défaut minimise l'espace supplémentaire, mais vous pouvez utiliser l'indicateur --size pour laisser de l'espace dans le système de fichiers si vous le souhaitez.
donc:
df -h
me dit que l'image est remplie à 82%:
/dev/loop17 1.5M 1.1M 244K 82% /home/ciro/test/guestfs/mnt
Nous pouvons facilement ajouter de l'espace supplémentaire en plus du minimum avec --size-=+
:
virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2
frais généraux de journal ext4
Le manuel mentionne également que:
Notez que les systèmes de fichiers ext3 contiennent un journal, généralement de 1 à 32 Mo. Si vous n'allez pas utiliser le système de fichiers d'une manière qui nécessite le journal, alors c'est juste une surcharge.
et il est intéressant de vérifier cela avec:
du -bs *
qui produit:
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
nous voyons donc que l'ext4 est sorti beaucoup plus gros.
libguestfs bogues Ubuntu
Maintenant, pour le revers de la médaille: il ne semble pas y avoir de responsable Ubuntu actuellement et la bibliothèque est généralement boguée sur Ubuntu.
sudo
n'est pas en théorie requis, mais il est requis en raison d'un bogue de package Ubuntu, sauf si nous faisons une solution de contournement: /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.
Après cela, sans nos solutions de contournement, 18.04 (mais pas 16.04) échoue avec: https://bugzilla.redhat.com/show_bug.cgi?id=1591617
libguestfs: error: tar_in: write error on directory: /:
en raison d'un bogue déjà corrigé en amont.
Testé dans Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3.
qemu-img
etfallocate
sont un peu plus pratique quedd
.