GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment utiliser les outils libguestfs pour modifier des images de disque de machine virtuelle (VM) dans CentOS/RHEL/Fedora ?

Question : Par erreur, j'avais désactivé le compte "root" dans une machine virtuelle CentOS fonctionnant sous VMWare. Par la suite, j'ai essayé tous les moyens possibles pour récupérer le compte "root" et j'ai finalement décidé de redémarrer la VM en mode mono-utilisateur. Malheureusement, la VM n'a pas pu démarrer en mode mono-utilisateur et les messages d'erreur indiquaient que le processus de démarrage attendait root compte et le processus suspendu indéfiniment. Ci-dessous, la capture d'écran expliquant le scénario :

Afin de résoudre le problème, je dois en quelque sorte modifier /etc/passwd fichier et activer le compte root. Pour cela, j'ai besoin de l'image disque de la machine virtuelle - dans mon cas, la machine virtuelle fonctionnait sur VMWare, j'ai donc besoin du vmdk fichier.

Solution :

Dans ce didacticiel, je vais vous montrer comment utiliser les outils libguestfs pour accéder et modifier le fichier image disque de la machine virtuelle (VM). libguestfs est une bibliothèque C avec un ensemble d'outils pour afficher et modifier des fichiers à l'intérieur des invités, apporter des modifications aux VM, surveiller l'utilisation du disque, cloner des VM, formater des disques, redimensionner des disques et bien d'autres. L'outil est capable de lire l'image disque de VM à partir de CD, de disques USB et à distance via SSH également.

Avant d'utiliser libguestfs outils, préparez-vous avec le fichier image disque de votre machine virtuelle. Le libguestfs prend également en charge les systèmes propriétaires tels que VMware et Hyper-V.

Installer les outils libguestfs :

Sur CentOS/Fedora/RHEL :

sudo yum install libguestfs-tools

Sur Debian/Ubuntu :

sudo apt-get install libguestfs-tools

Comme je l'ai dit plus tôt, les outils libguestfs sont livrés avec de nombreuses commandes telles que guestfish, guestmount, guestunmount, virt-alignment-scan, virt-builder, virt-cat, virt-copy, virt-edit, virt-diff, virt-customize, virt -filesystems, virt-format, virt-get-kernel, virt-inspector, virt-list-filesystems, virt-list-partitions, virt-log, virt-ls, virt-make-fs, virt-p2v, virt-p2v -make-disk, virt-rescue, virt-tar et bien d'autres. Mais nous utiliserons la commande guestfish, qui vous permet d'accéder aux images de machines virtuelles et de les modifier.

poisson invité :

Le poisson invité La commande peut être utilisée à la fois comme shell interactif et comme outil de ligne de commande. La commande vous permet d'ouvrir une image disque en mode lecture seule (option –ro) et en lecture-écriture (option –rw).

Caution: Make sure to shutdown the VM before using guesfish to access/modify the image.

Utiliser guestfish comme shell interactif :

# guestfish
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.
Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell

Accédons maintenant au fichier image vmdk (disons test-flat.vmdk ).

><fs> add-ro test-flat.vmdk

Remarque : Recherchez la commande add-ro ce qui signifie, ajouter ou accéder à l'image en mode lecture seule. Si vous souhaitez apporter des modifications à l'image, vous devez ouvrir l'image avec le privilège de lecture-écriture (nous verrons cela plus tard).

Toujours exécuter run commande avant de lister les systèmes de fichiers dans l'image disque comme indiqué ci-dessous :

><fs> run
â 25% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠--:-â 50% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:3â 75% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:1 100% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:00

La commande ci-dessus prendra un certain temps pour lire l'image. Une fois cela fait, vous pouvez répertorier les systèmes de fichiers disponibles sur le disque comme indiqué ci-dessous :

><fs> list-filesystems
/dev/vda1: ext4
/dev/VolGroup/lv_home: ext4
/dev/VolGroup/lv_root: ext4
/dev/VolGroup/lv_swap: swap

Maintenant, je dois monter /dev/VolGroup/lv_root pour accéder à /etc/passwd .

><fs> mount /dev/VolGroup/lv_root /

Comme j'ai ouvert l'image en mode lecture seule, je ne peux voir que /etc/passwd .

> cat /etc/passwd
::::::::::::::::::::::

Voici l'instantané complet :

# guestfish
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.
Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell
><fs> add-ro test-flat.vmdk
><fs> run
â 50% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠--:-â 75% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:0 100% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:00
><fs> mount /dev/VolGroup/lv_root /
><fs> cat /etc/passwd
::::::::::::::::::::::::::::::
><fs> exit

Utiliser guestfish comme commande et modifier un fichier :

# guestfish --rw --add test-flat.vmdk -i edit /etc/passwd

Faites attention aux options

  • –rw – pour ouvrir l'image disque de la VM en mode lecture-écriture
  • –ajouter – ajoute l'image 'test-flat.vmdk'
  • -i – monte automatiquement les disques à partir d'une image de machine virtuelle
  • modifier – commande pour éditer le fichier

La commande ci-dessus vous permettra de modifier un fichier directement à partir de l'image et de l'enregistrer également.

Quelques autres exemples :

Supposons que vous souhaitiez mettre à jour /etc/resolv.conf dans un invité, voici comment procéder.

# guestfish \
   add disk.vmdk : run : mount /dev/VolGroup/lv_root / : \
   write /etc/resolv.conf "nameserver 8.8.8.8"

Utilisation de guestfish pour accéder à une image disque distante à l'aide de ssh :

# guestfish -a ssh://somedomain.com/path/to/disk.vmdk

guestfish peut vous aider à faire des merveilles, c'est donc une bonne idée de consulter sa page d'aide.

# guestfish -N help

C'est ça. Consultez libguestfs.org pour plus d'informations.


Cent OS
  1. Comment installer Python 3.5 sur CentOS/RHEL et Fedora

  2. [Linux] :Comment configurer yum pour utiliser le référentiel CentOS dans la machine RHEL

  3. CentOS / RHEL 7 :Comment extraire l'image initramfs et la modifier/afficher

  4. CentOS / RHEL :Comment installer Open Virtual Machine Tools pour les machines virtuelles hébergées sur VMWare

  5. Comment configurer le proxy dans CentOS/RHEL/Fedora

Comment installer KVM sur CentOS 8 / RHEL 8

Comment installer Cockpit sur CentOS 7 / RHEL 7 et Fedora 28

Comment installer pgAdmin 4 sur CentOS 7 / RHEL 7 et Fedora 29 / Fedora 28

Comment installer et utiliser Firewalld dans CentOS / RHEL

Comment installer la machine virtuelle HipHop sur CentOS 7

Comment installer Wine 5.0 sur CentOS, RHEL et Fedora