¿Cómo reparar la máquina virtual VirtualBox rota?

¿Cómo reparar la máquina virtual VirtualBox rota?

Estoy ejecutando Oracle VirtualBox en un host Ubuntu 11.10 de 64 bits con una máquina invitada Ubuntu Server 12.04 LTS de 64 bits, con muchas instantáneas. Después de reiniciar el host (mientras la VM estaba ejecutándose), la VM se volvió "inaccesible". Después de hurgar y hacer muchos gigabytes de copias de seguridad, logré que arrancara en una pantalla de medio de arranque que no se puede encontrar. ¿Tiene alguna sugerencia o solución sobre cómo transferir mis datos, incluidos los datos de la última instantánea, a una nueva máquina virtual o, si es posible, arreglar esta? Estaré encantado de proporcionar más información.

EDITAR: Creo que mi cadena de instantáneas está rota o corrupta.

EDITAR 2: No puedo solucionarlo, acabo de crear una nueva máquina virtual.

Respuesta1

Descubriendo poder volver a una instantánea de trabajo. Inicie su VM en un CD en vivo y vea si puede acceder a sus discos duros. Si es así, el peor de los casos es crear una nueva máquina virtual con un servidor nuevo, agregar los discos duros de la máquina virtual anterior; luego recuperar datos de los discos duros.

Respuesta2

  1. Restaurar la última instantánea
  2. edite la información del disco duro y elimine todos los discos duros inaccesibles
  3. agregue todos los discos duros que pueda encontrar a la VM (esto los hace accesibles)
  4. arrancar con un CD de recuperación o un CD en vivo
  5. decide cómo solucionarlo... normalmente necesitas montar el disco, hacer chroot e instalar grub

ejemplo para el n.° 5:

  1. Montar particiones

    mkdir /mnt/fixme
    parted -s /dev/sda print
    (based on output of above, decide which device is your /boot, /, etc., and modify next mount commands accordingly)
    mount /dev/sda2 /mnt/fixme
    mount /dev/sda1 /mnt/fixme/boot
    ... for all your partitions
    
  2. Montar sistemas de archivos especiales

    mount | grep "on /proc"
    mount | grep "on /dev"
    (based on the above, decide what the "from" and "type" should be; my example below is correct for openSUSE 12.1)
    mount -t proc proc /mnt/fixme/proc
    mount -t devtmpfs devtmpfs /mnt/fixme/dev
    

    Por ejemplo, en Ubuntu, es "none" para el tipo de desarrollo: mount -t none devtmpfs /mnt/fixme/dev

    Es posible que también necesites montar /sys. Yo olvido. Sabrá cuando reciba un mensaje de error.

  3. Inicie el shell chroot (que es como iniciar en su disco duro) (Nota al margen: esto funciona mal si tiene otro disco en el sistema, como si tomara su disco roto y lo conectara a otro Linux que no se inicia desde un CD, pero desde un disco buscará en mtab para decidir cuál es su disco de arranque y colocará esos guids en la configuración de grub en lugar de los del disco reparado, por lo que deberá realizar la recuperación con el indicador de arranque y ejecutar grub-install nuevamente; más tarde)

    chroot /mnt/fixme
    
  4. instalar comida

    On openSUSE:
        update-bootloader
    On Ubuntu:
        update-grub2
    Alternate, on most systems, but not openSUSE, use both:
        install stage 1 bootloader:
            grub-install
        install guids and stuff in /boot (change cfg file to whatever you find is the correct one [menu.lst on openSUSE, grub.cfg on Ubuntu, etc.]) (if you skip the -o option, it just prints to standard out and doesn't save it in any files)
            find /boot -name "*grub*" -or -name "*.cfg" -or -name "*menu*"
            grub-mkconfig -o /boot/grub/grub.cfg
    

información relacionada