GNU/Linux >> Tutoriales Linux >  >> Cent OS

¿Cómo usar las herramientas libguestfs para editar imágenes de disco de máquinas virtuales (VM) en CentOS/RHEL/Fedora?

Pregunta: Por error, había deshabilitado la cuenta 'raíz' en una máquina virtual CentOS que se ejecuta en VMWare. A partir de entonces, probé todas las formas posibles de recuperar la cuenta "raíz" y finalmente decidí reiniciar la máquina virtual en modo de usuario único. Desafortunadamente, la máquina virtual no pudo iniciarse en modo de usuario único y los mensajes de error indicaron que el proceso de inicio está esperando root cuenta y el proceso se colgó indefinidamente. A continuación se muestra la captura de pantalla que explica el escenario:

Para solucionar el problema, de alguna manera tengo que editar /etc/passwd archivo y habilite la cuenta raíz. Para eso, necesito la imagen de disco de la máquina virtual; en mi caso, la VM se ejecutaba en VMWare, por lo que necesito el vmdk archivo.

Solución:

En este tutorial, te mostraré cómo usar las herramientas de libguestfs para acceder y editar el archivo de imagen de disco de la máquina virtual (VM). libguestfs es una biblioteca C con un conjunto de herramientas para ver y editar archivos dentro de los invitados, realizar cambios en las máquinas virtuales, monitorear el uso del disco, clonar máquinas virtuales, formatear discos, cambiar el tamaño de los discos y mucho más. La herramienta es capaz de leer imágenes de disco de VM desde CD, discos USB y también de forma remota a través de SSH.

Antes de usar libguestfs herramientas, prepárese con el archivo de imagen de disco de su máquina virtual. libguestfs también es compatible con sistemas propietarios como VMware e Hyper-V.

Instalar herramientas libguestfs:

En CentOS/Fedora/RHEL:

sudo yum install libguestfs-tools

En Debian/Ubuntu:

sudo apt-get install libguestfs-tools

Como dije antes, las herramientas libguestfs vienen con muchos comandos como 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 y muchos más. Pero usaremos el comando guestfish, que le permite acceder y modificar imágenes de máquinas virtuales.

pez invitado:

El pez invitado El comando se puede usar tanto como shell interactivo como como herramienta de línea de comandos. El comando le permite abrir una imagen de disco tanto en modo de solo lectura (opción –ro) como de lectura y escritura (opción –rw).

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

Usando guestfish como caparazón interactivo:

# 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

Ahora accedamos al archivo de imagen vmdk (digamos test-flat.vmdk ).

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

Nota: Busque el comando add-ro lo que significa agregar o acceder a la imagen en modo de solo lectura. Si desea realizar cambios en la imagen, debe abrir la imagen con privilegios de lectura y escritura (lo veremos más adelante).

Ejecutar siempre ejecutar comando antes de enumerar los sistemas de archivos en la imagen del disco como se muestra a continuación:

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

El comando anterior tardará un tiempo en leer la imagen. Una vez hecho esto, puede enumerar los sistemas de archivos disponibles en el disco como se muestra a continuación:

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

Ahora, necesito montar /dev/VolGroup/lv_root para acceder a /etc/passwd .

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

Como abrí la imagen en modo de solo lectura, solo puedo ver /etc/passwd .

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

Aquí está la instantánea completa:

# 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

Usar guestfish como comando y editar un archivo:

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

Busque las opciones

  • –rw – para abrir la imagen de disco de la VM en modo de lectura y escritura
  • –añadir – agrega la imagen 'test-flat.vmdk'
  • -yo – monta automáticamente los discos desde una imagen de máquina virtual
  • editar – comando para editar el archivo

El comando anterior le permitirá editar un archivo directamente desde la imagen y guardarlo también.

Algunos ejemplos más:

Suponga que desea actualizar /etc/resolv.conf en un invitado, así es como puedes hacerlo.

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

Uso de guestfish para acceder a una imagen de disco remoto mediante ssh:

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

guestfish puede ayudarte a hacer maravillas, por lo que es una buena idea consultar su página de ayuda.

# guestfish -N help

Eso es todo. Consulte libguestfs.org para obtener más información.


Cent OS
  1. Cómo instalar Google Chrome 17 en Fedora 16, CentOS 6 / RHEL 6

  2. Cómo instalar Python 3.5 en CentOS/RHEL y Fedora

  3. [Linux]:cómo configurar yum para usar el repositorio CentOS en la máquina RHEL

  4. ¿Cómo extraer el paquete 7z en CentOS/RHEL/Fedora?

  5. Cómo configurar el proxy en CentOS/RHEL/Fedora

Cómo instalar KVM en CentOS 8 / RHEL 8

Cómo instalar Cockpit en CentOS 7/RHEL 7 y Fedora 28

Cómo instalar pgAdmin 4 en CentOS 7 / RHEL 7 y Fedora 29 / Fedora 28

Cómo instalar y usar Firewalld en CentOS / RHEL

Cómo instalar la máquina virtual HipHop en CentOS 7

Cómo instalar Wine 5.0 en CentOS, RHEL y Fedora