Ceci est une ancienne révision du document !
Il est possible d'accéder au contenu d'un disque virtuel directement depuis le système hôte en montant la ou les partitions présentes dans l'image disque d'une VM. Pour les cas évoqués dans cette note, le système invité ne s'exécute pas.
Plusieurs possibilités :
La commande qemu-img avec l'argument info retourne les informations sur le fichier disque :
qemu-img info afile.img
guestfish et guestmount ou montée directement avec mount. A contrario, la commande mount ne pourra pas utiliser directement une image QCOW2. Le format QCOW2 intègre des fonctionnalités avancées comme les snapshots, le COW1) et la compression et ne peut pas être utilisé directement par mount ou losetup.
sudo apt install -y guestfish
guestfish est un interpréteur de commandes, ici on l'utilise en mode interactif :
help
A corriger :
# Passer dans le groupe effectif libvirt-qemu
newgrp libvirt-qemu
# Lancer l'interpréteur de commandes guestfish # add-ro disk.img run list-filesystems mount /dev/vg_guest/lv_root / cat /etc/fstab quit
Installer le paquet libguestfs-tools :
sudo apt install -y libguestfs-tools
Confère note conversions RAW <-> QCOW2
Pour les systèmes s'appuyant sur FUSE2)
Lors de toute tentative de montage d'un système de fichier avec guesfish, on obtien le message d'erreur suivant :
libguestfs : erreur : /usr/bin/supermin s'est terminé avec l'état d'erreur 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.
En relancant guestfish avec les variables proposées :
LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 guestfish
Parmi les traces, on peut voir le message d'erreur suivant :
cp: cannot open '/boot/vmlinuz-6.17.0-29-generic' for reading: Permission denied supermin: cp -p '/boot/vmlinuz-6.17.0-29-generic' '/var/tmp/.guestfs-1000/appliance.d.jukqktdx/kernel': command failed, see earlier errors libguestfs : erreur : /usr/bin/supermin s'est terminé avec l'état d'erreur 1, voir les messages de débogage ci-dessus