zar, lo primero es lo primero… nunca jamás muevas una máquina que esté en estado guardado, antes de moverla debes apagar el huésped, no sólo guardar el estado.
También asegúrate de que usas la misma versión de VirtualBOX en ambos huéspedes, pero no sólo la versión de VirtualBOX, también el paquete de extensión vesion… o al menos el nuevo huésped tiene una versión más alta, pero nunca jamás una versión más baja en ninguno de esos dos.
Y finalmente, lo aprendí de la manera difícil, borrar la configuración de la carpeta SHARED en VirtualBOX antes de mover la máquina, y luego recrearla de manera correcta… muy importante cuando los hosts son diferentes OS (hosts Windows / Linux).
Y sólo como nota al margen… siempre, siempre uso archivos VDI inmutables de disco duro tanto para OS como para VDIs de datos (de esa manera la misma VDI de datos puede ser usada para más de un huésped), especialmente el truco para el archivo de página 4GiB. sys
Esta última parte, la reutilización de un archivo VDI inmutable hace las cosas un poco más difíciles, VirtualBOX tiene un GRAN BUG.
Para ver el BUG en acción:
- Crear un VDI inmutable (como el que uso para pagefile.sys)
- Crear dos o tres VM’s en VirtualBOX
- Mover uno de ellos a la parte superior de la lista (para evitar que se dañe alguno de los suyos)
- Retroceder el . vbox de cada una de las máquinas que creó (para compararlo después de que ocurra el BUG)
- Adjuntar ese VDI inmutable a más de una de esas máquinas (excepto la que está en la parte superior de la lista)
- Ahora vea el .vbox de la máquina que está en la parte superior de la lista
Esa máquina ha sido editada, tiene referencias a las otras máquinas VDI inmutables.
Así que el BUG es: Editar una máquina añadiendo un VDI inmutable que es usado por otra afecta a la máquina que está en la parte superior de la lista
¿Por qué demonios reutilizo el mismo VDI 4GiB en todas las máquinas de Windows? Fácil, es un disco MBR con una partición FAT32 donde pongo pagefile.sys, ya que es inmutable todas las máquinas virtuales crearán un archivo en su carpeta de instantáneas donde almacenan los cambios, y que se pierden en el siguiente arranque, por lo que no necesito 4GiB por cada huésped almacenado en el disco anfitrión, sólo uno… De esta forma me ahorro un montón de GiB ya que tengo más de 20 ventanas diferentes para probar las aplicaciones que desarrollo por mi cuenta, todas combinaciones de (XP, Vista, 7, 8, 8.1, 10)*(32Bits, 64Bits) * (Tal y como es en la primera instalación, después de cada ServicePack, después de la actualización completa de windows), obtengo un montón, un montón de huéspedes… así que en todos ellos comparto el inmutable 4GiB VDI para el ram virtual (pagefile.sys).
Y si dejas que el BUG vaya más allá, intenta mover una de esas máquinas a otro host de VirtualBOX (recuerda que sólo son máquinas virtuales con una configuración en ellas y ningún guest aún instalado en ellas), verás que VirtualBox no te permite añadirlas ya que faltan algunas VDIs (es FALSO y VERDADERO, es que esa primera máquina contiene las referencias a esas VDIs insteed de estar en la máquina correcta).
Ahora compara el . VBOX de todos ellos con los BackUp anteriores… ¿notan cómo uno es modificado erróneamente?… sí, es el que está en la parte superior de la lista.
Bien, este BUG fue informado a VirtualBOX hace algunos años, todavía no pueden arreglarlo… y está causando muchos, muchos problemas.
Además, si mueves el superior de las máquinas virtuales a una posición inferior, cierras VirtualBox y lo relanzas… te dirá que algunas máquinas están dañadas y no se pueden arrancar… sí el primero de la lista debe ser tratado de forma diferente si no quieres tener muchos problemas.
Es un BUG muy malo que me llevó muchos días descubrir (hace algunos años) ¡lo aprendí de la manera difícil!
Lo había superado al tener una máquina a la que llamé:
Tiene una configuración vacía y sólo un VDI, sí, tienes razón, lo has adivinado, el VDI inmutable que comparto para todas las demás máquinas virtuales.
Bueno cuando abro el archivo .VBOX veo en su interior un montón de líneas en la sección <MediaRegistry>
<HardDisks>
, una por cada máquina en la que uso ese VDI inmutable… sólo como muestra (elimino los datos privados):
<MediaRegistry>
<HardDisks>
<HardDisk uuid="...UUID..." location="D:\VDIs\_Virtual_Memory_.vdi" format="VDI" type="Immutable">
<HardDisk uuid="{...UUID...}" location="Snapshots\{...UUID...}.vdi" format="VDI" autoReset="true"/>
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows001 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows002 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows003 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows004 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows005 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows006 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows007 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows008 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows009 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows010 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows011 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows012 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows013 ... // This belongs to other virtual Machine
... and so on ... // This belongs to other virtual Machine
</HardDisk>
</HardDisks>
</MediaRegistry>
Bastante BUG, no resuelto desde hace años.
Bueno, para mover esas máquinas… hay que editar manualmente el . VBOX, para poner todas esas referencias de discos en el nuevo host de la primera máquina (la que está en la parte superior de la lista) antes de agregar los archivos .VBOX a la lista, de modo que al agregarlos VirtualBOX tenga las referencias de los VDIs faltantes (faltantes causados por el gran BUG).
La cosa ocurre porque cada vez que conectas un VDI que es usado en otra máquina VirtualBOX actualiza dos máquinas . VBOX (la que pertenece a la máquina que estás usando) y a la primera de la lista.
No estoy totalmente seguro de lo que pasaría cuando en la lista, la primera no tiene una VDI tan común adjunta a ella… mejor no intentarlo, mira lo que veo.
Así que migrar a otro HOST es mucho más complicado de lo que parece por una muy mala implementación en los archivos .VBOXestructura interna y debido a los grandes BUGs cuando VirtualBOX los edita.
Falla:
- La estructura interna (XML) depende del HOST (Windows o Linux)
- Editar una máquina puede alterar otra, no sólo la que está siendo editada
- … ¿qué más?
Necesito más… Siempre migro las máquinas haciendo esto (y no tuve ningún problema, nunca jamás):
- Toma nota de la lista de todas las máquinas (orden, agrupación, etc.)
- Toma nota del primero de la lista (toda su configuración)
- Toma nota de todas las propiedades de las máquinas que quiero mover a otro host
- 4. Copie los archivos .vbox como archivos .txt (el que está en la parte superior de la lista + todas las máquinas que quiero migrar)
- Recree todas las máquinas (y tenga una especial en la parte superior de la lista) dentro de VirtualBox en el nuevo host
- Haga una copia de los archivos .vbox como archivos .txt (el que está en la parte superior de la lista + todas las máquinas que quiero migrar)
- Haga una copia de los archivos .vbox como archivos .txt (el que está en la parte superior de la lista + todas las máquinas que quiero migrar)
- Haga una copia de los archivos .vbox como archivos .txt. Cerrar VirtualBox en el nuevo host
- Diff comparar el antiguo .txt con los nuevos archivos .vbox y copiar desde el .txt al .vbox algunas partes en forma humana, no sólo Copiar & Pegar
- Abra VirtualBox y adjunte todos los VDI en el orden correcto
- Nuevamente cierra VirtualBox en el nuevo host
- Diff compara el viejo .txt con los nuevos archivos .vbox y ‘arregla’ desde el .txt al .vbox algunas partes en forma humana, no sólo Copiar & Pegar
Todo el resto (carpeta de snapshots y archivos VDI) los copio en la forma normal (Sistema de Archivos Copiar & Pegar)
Todo ese duro trabajo manual es causado por el Big BUG VirtualBox: Edita / altera una máquina que no ha sido modificada cuando se adjunta un VDI inmutable que se utilizan en más de una máquina, de lo contrario un simple Copiar & Pegar el archivo .VBOX sería suficiente (después de arreglar las rutas de las carpetas compartidas, etc).