J'ai besoin de visualiser le système de fichiers d'un QEMU/KVM (avec virt-manager
comme interface graphique) Ubuntu VM avec des mises à jour en direct des informations. Bien que j'aie besoin de voir cette information en externe à partir de la VM (dans l'hôte). En d’autres termes, il ne serait pas pratique de la visualiser depuis la machine virtuelle, mais plutôt depuis l’hôte. Y a-t-il une manière de faire ça? L’hôte et l’invité seront Ubuntu GNOME 16.10 avec GNOME 3.22.
Bien que ce soit à des fins de test de pénétration, l’invité peut varier, même s’il est probable qu’il ne concerne que les saveurs Ubuntu.
Lorsque vous êtes dans virt-manager, vous pouvez trouver le chemin du fichier correspondant dans la configuration de la VM/du disque (quelque chose comme "chemin source"); Le chemin par défaut est /var/lib/libvirt/images/
. Découvrez le nom de l'image du disque virtuel.
Disons que le chemin de l'image est /var/lib/libvirt/images/disk1.qcow2
(je suppose que le format qcow2 ici).
Tout d'abord, installez libguestfs-tools
sur l'hôte:
Sudo apt-get install libguestfs-tools
Vous pouvez ensuite monter le disque virtuel en
Sudo guestmount -a <image-file> -m <device> --ro /mnt
où <image-file>
représente le chemin d'accès complet à l'image disque et <device>
le nom de périphérique de la partition à monter. Si vous ne connaissez pas le nom du périphérique, vous pouvez donner un nom quelconque pour répertorier les périphériques valides, par exemple.
Sudo guestmount -a /var/lib/libvirt/images/disk1.qcow2 -m any --ro /mnt
Cela vous donnera quelque chose comme
libguestfs: error: mount_options: mount_options_stub: any: expecting a device name
guestmount: 'any' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount: /dev/sda1 (ext2)
guestmount: /dev/sda2 (ext2)
Pour monter la première partition, vous devez ensuite émettre
Sudo guestmount -a /var/lib/libvirt/images/disk1.qcow2 -m /dev/sda1 --ro /mnt
Vous pouvez maintenant accéder au système de fichiers en mode lecture seule dans/mnt.
Important: Lorsque vous montez le disque d’un VM en cours d’utilisation, vous devez spécifier "--ro", ce qui signifie lecture seule, sinon le système de fichiers peut être endommagé.
Au lieu d'utiliser le nom du fichier disque virtuel, vous pouvez entrer le nom du domaine virtuel, s'il existe plusieurs disques. Disons que le nom de votre domaine virtuel est myvm
, vous pouvez émettre
Sudo guestmount -d myvm -m any --ro /mnt
ce qui va vous donner quelque chose comme
guestmount: 'any' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount: /dev/sdb (iso9660)
guestmount: /dev/sda1 (ext4)
guestmount: /dev/sda2 (unknown)
guestmount: /dev/sda5 (swap)
guestmount: /dev/sdc1 (ext4)
guestmount: /dev/sdc2 (unknown)
guestmount: /dev/sdc5 (swap)
guestmount: /dev/sdd1 (ext2)
guestmount: /dev/sdd2 (ext2)
alors maintenant, pour monter/dev/sdc1 (vue de votre ordinateur virtuel), vous pouvez émettre
Sudo guestmount -d myvm -m /dev/sdc1 --ro /mnt
Cela devrait faire l'affaire.