¿Qué es una maquina virtual?

Una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como “un duplicado eficiente y aislado de una máquina física”. La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta “máquina virtual”.

A veces tenemos instalados varios sistemas operativos en el mismo equipo separados cada uno en una partición y necesitamos reiniciar para usar alguna funcionalidad de otro sistema operativo. Para evitar esto podemos usar algún software de virtualización como VirtualBox (gratis) o VMware (comercial), entre otros.

Usaremos VirtualBox ya que es gratis, en MAC Mountaion Lion 10.8.2 como sistema anfitrión y Windows 7 – Ultimate (x64) como sistema emulado (previamente instalado con BootCamp). El equipo usado es un Apple Macbook Pro 9.2 (MD102Y) , y sus especificaciones técnicas son:

  • Memoria RAM: 16gb (2 modulos de 8gb).
  • Procesador: i7 2.9GHZ (doble nucleo).
  • Tarjeta Gráfica: HD Graphics 4000 512MB.

Ver los discos duros y particiones

Windows

VBoxManage.exe internalcommands listpartitions -rawdisk \\.\PhysicalDrive#

*\\.\PhysicalDrive#: Reemplazar el # por el número de disco duro (Empezando desde 0).
*También se podrian ver las particiones desde el administrador de discos de Windows.
*Posiblemente VirtualBox no nos muestre la lista de particiones porque no tiene permisos, aunque sea ejecutado como administrador, debemos darle permisos de administrador al ejecutable “VBoxManage.exe” en Propiedades > Compatibilidad y marcar “Ejecutar este programa como administrador”.

VirtualBox Admin VirtualBox Admin

Linux

fdisk -l

MAC

diskutil list

Desmontar una partición

En primer lugar, tanto si usamos Linux o Mac, debemos desmontar la partición del sistema operativo que queremos virtualizar.

Linux

unmount /dev/sdXX

MAC

diskutil unmount /dev/diskXsX
sudo chmod 777 /dev/diskXsX

Crear disco duro virtual (VMDK)

Una vez desmontada creamos un disco virtual VMDK (Virtual Machine Disk), para ello abrimos la consola (debemos logearnos como admin o root).

Windows

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands createrawvmdk -filename c:\os.vmdk -rawdisk \\.\PhysicalDrive# -partitions #

*c:\os.vmdk: Ruta donde guardar el enlace virtual a la partición.

Linux

VBoxManage internalcommands createrawvmdk -filename /home/username/os.vmdk -rawdisk /dev/sdXX -relative

MAC

VBoxManage internalcommands createrawvmdk -filename /Users/username/os.vmdk -rawdisk /dev/diskXsX

*La ruta y el nombre del archivo .vmdk se pueden cambiar.

También podríamos especificar la partición añadiendo al final el parámetro “-partitions” seguido del número de partición.

Una vez creado el archivo .vmdk le aplicamos los permisos necesarios para que VirtualBox pueda acceder a él (en Linux o MAC):

chmod 666 /Users/username/os.vmdk

Luego abrimos VirtualBox y creamos una nueva máquina virtual. Cuándo nos pregunte si queremos crear un nuevo disco virtual, elegimos la opción de “Usar un archivo de disco duro virtual existente” y seleccionamos el archivo .vmdk.

Es posible que al seleccionar el disco duro virtual, VirtualBox muestre este error:

Permission problem accessing the file for the medium '/home/username/os.vmdk' (VERR_ACCESS_DENIED)

Para solucionarlo:

Linux

Agregamos nuestro usuario al grupo de usuarios llamado “disk”.

usermod -a -G disk username

*Tambien podemos aplicar el mismo método usado en MAC.

MAC

chown username /Users/username/os.vmdk
chmod 777 /dev/diskXsX

*Nota: Deberemos hacer esto cada vez que se encienda el equipo anfitrión, para hacerlo automático podemos editar el archivo “/etc/rc.local” o “/etc/rc.common” con estos comandos:

sudo chmod 777 /dev/diskXsX
diskutil unmount /dev/diskXsX

Si probamos a iniciar la máquina virtual una vez creada, posiblemente aparezca un error:

A disk read error ocurred
Pres Ctrl+Alt+Del to restart

Para solucionar este error debemos habilitar la opción “IO APIC” en la configuración de la máquina virtual, en la sección “Sistema”, y en el caso de usar MBR seria necesario crear el archivo .vmdk con el parámetro “-partitions” comentado anteriormente.

Sino queremos que los cambios realizados en la máquina virtual no se guarden al apagarla, debemos ir al “Administrador de medios virtuales”, seleccionar el disco duro y pulsar “Modificar” (antes de modificar el disco duro virtual es necesario liberar el disco duro, es decir, desconectarlo de todas las máquinas virtuales que lo tengan asociado), nos aparecerán varias opciones, elegimos “Inmutable” y posteriormente volvemos a agregar el disco duro a la máquina virtual. Para volver a ponerlo como antes y que los cambios si tengan efecto tan solo habría que ponerlo en el modo “Normal” de nuevo.

VirtualBox Inmutable VirtualBox Inmutable
VirtualBox VirtualBox
VirtualBox VirtualBox

Clonar partición real a archivo .VDI o .VMDK

Si no queremos trabajar con la partición real, podemos realizar una copia idéntica de la misma en un archivo ya sea VDI o VMDK.

VBoxManage clonehd "C:\ABSOLUTE\PATH\os.vmdk" "X:\ABSOLUTE\PATH\os_virtual.vmdk" --format VMDK --variant Split2G

*Es necesario especificar RUTAS ABSOLUTAS, sino VirtualBox nos devolverá un error: VERR_FILE_NOT_FOUND.
*Para que el archivo resultante ocupe menos espacio es recomendable, antes de realizar la copia, rellenar con ceros el espacio libre de la partición a clonar.

FUENTES

http://es.wikipedia.org/wiki/Máquina_virtual
https://www.virtualbox.org/ticket/1461
https://forums.virtualbox.org/viewtopic.php?t=9223
http://kindlevsmac.wordpress.com/2011/10/14/how-to-run-windows-7-bootcamp-in-virtualbox/