Acerca de este sitio Notas de mis aventuras (y aprendizaje) con VirtualBox en OS X y macOS. Esto no pretende ser un tutorial o manual (ya hay muchos de ellos por ahí). Se trata simplemente de un registro de una experiencia bajo, un punto de vista, propósito y plataforma específicos.

Índice

  1. Requerimientos.
  2. Instalación.
  3. Uso.
    1. Administración de máquinas virtuales.
      1. Creación de una máquina virtual (VM).
      2. Adiciones para huéspedes (VirtualBox Guest Additions).
      3. Administración de unidades de almacenamiento.
      4. Copiado de máquinas virtuales.
      5. Eliminación de máquinas virtuales.
    2. Instalación de un sistema operativo.
  4. Actualizaciones.
  5. Desinstalación.

Requerimientos

Las descripciones hechas aquí corresponden a VirtualBox v5.x, empleando un equipo MacBookPro 13-inch mid-2012 con macOS 10.12 (“Sierra“) y OS X 10.9 (“Mavericks“), y a VirtualBox v4.3 en un Macbook 13-inch late 2007 con OS X 10.7 (“Lion”). Por supuesto, los requisitos para que las “máquinas virtuales creadas tengan un desempeño aceptable” dependerán de la versión de VirtualBox que se esté instalando. La documentación de VirtualBox indica, por ejemplo, en referencia al procesador: “Reasonably powerful x86 hardware. Any recent Intel or AMD processor should do” (“recent” or “decent“… 😃, just kidding) pero esto depende también del sistema operativo que se instale en la máquina virtual. Windows siempre será Windows y atascará lo que sea. Los linux, por su parte y especialmente en modo no gráfico, son bastante rápidos. El equipo indicado arriba posee un procesador Intel Core i7 de doble núcleo y el desempeño es aceptable en modo caracter con CentOS 6.5 y CentOS 7. Hasta donde el autor de estas páginas ha visto, todavía un Intel i5 provee un desempeño aceptable pero un Intel i3 o Celeron resultan ya insuficientes con VirtualBox v5.x y es preferible hacer uso de VirtualBox v4.x.

Instalación

VirtualBox 4.x

El proceso de instalación es guiado por el instalador:

  1. Descargada la imagen de disco, se ubica y monta.
  2. Se abre el paquete de instalación.
  3. El instalador validará se cubran los requisitos mínimos de instalación. Si no hay problema, éste permitirá seguir con la instalación.
  4. La instalación standard incluye todos los componentes incluidos en el paquete. Personalizar la instalación permite sólo considerar la instalación de las utilerías para línea de comando. A menos que verdaderamente no se planee usarlas (digamos sólo en un entorno de producción o lugar en el que no se debería permitir o esperar tener que dar mantenimiento a la instalación) puede ahorrarse el poco espacio que requieren.
  5. La instalación es rápida y al final no es de esperarse problemas.
  6. Conviene conservar el instalador para contar con el desinstalador al final de la vida de la aplicación

VirtualBox 5.x

Al igual que en la versión 4.x, el proceso de instalación no es nada complicado. La interfaz y procesos son esencialmente los mismos.

  1. La imagen de disco se descarga y monta. El contenido del disco es como se ilustra en la imagen inferior.
  2. De este contenido, se selecciona el paquete para su instalación.
  3. El programa valida si se cumple con los requisitos necesarios para instalar.
  4. Si la validación es superada se procederá con la instalación.
  5. La instalación standard es como la de cualquier aplicación.
  6. La personalización de la instalación sólo permite el control sobre los comandos de línea, que ni ocupan mucho espacio y sí pueden ser útiles en algún momento, por lo que en la mayoría de los casos la instalación por defecto (instalando programas de virtualización y utilerías) es la adecuada.
  7. Si la instalación es exitosa:
  8. En esta versión, el programa valida si se desea conservar el instalador, lo cual es recomendable para poder contar con el desinstalador.

Uso

Antes que otra cosa una consejo al respecto del uso de VirtualBox. Antes de hacer cualquier cosa, debe uno referirse primero a la documentación de ésta. Recuérdese que VirtualBox es una aplicación multiplataforma mas no portable, i. e., ha sido elaborado para ejecutarse en sistemas operativos de tipo linux, Solaris, OS X y macOS, y Windows (algunos en versiones de 32 o 64 bits) pero debe descargarse la versión adecuada. Si bien los encargados de su elaboración seguramente cuidan que las distintas variantes de VirtualBox sean equiparable o idénticas no hay garantía de que lo que en uno funciona lo haga en otro, más en cuanto a las utilerías administrativas se refiere.

Cuando uno tiene un problema resulta más cómodo buscar alguna solución en la web en lugar de buscar en el manual pero resulta común encontrar muchos foros o páginas web en las que se habla de soluciones a un problema sin especificar la plataforma (sistema operativo anfitrión) o la versión de VirtualBox, así como la verdadera intención de las acciones descritas. Si uno no tiene cuidado con esto, uno puede terminar encontrando algo que no funciona o no lo hace enteramente igual o dañando algo en su máquina virtual (es posible, aunque poco probable, que también en el anfitrión, pero es posible). Así que, como se inició esta sección, es recomendable explorar el manual de VirtualBox.

Aunque las diferencias de la interfaz de usuario entre la versión 4.3 y la 5.x no son significativas es importante aclarar que (salvo se indique expresamente a qué versión aplica) las siguiente descripciones parten de la versión 5.x.

Administración de máquinas virtuales

De entre las diversas ventajas de trabajar con máquinas virtuales está la de poder crearlas y destruirlas en forma fácil, el poder hacer y deshacer instalaciones de sistemas operativos, así como el poder copias de éstas (o de su estado) que le permiten a uno explorar varias cosas.

Creación de una máquina virtual (VM)

La creación de una máquina virtual (VM, por sus siglas en inglés), es bastante simple, aunque no por ello sin ciertas complicaciones.

El primer paso es indicar el nombre y tipo de máquina virtual que se busca crear, que esencialmente dependerá sobre el tipo de sistema operativo a instalar en ésta. Adicionalmente se debe indicar si se trata de una versión de 32 o de 64 bits. Pese a ser una simulación la máquina virtual y que ésta pueda soportar una versión de 64 bits, VirtualBox puede recurrir a hacer uso de ciertas optimizaciones (como el permitir que la VM se ejecute verdaderamente en el procesador real del anfitrión) por lo que conviene empatar el tipo de instalación con el tipo de procesador del anfitrión.

La cantidad de memoria

Adiciones para huéspedes (VirtualBox Guest Additions)

Administración de unidades de almacenamiento

En lo que respecta a los medios y dispositivos de almacenamiento, al tratarse de una virtualización, estos no dejan de ser archivos. Esto permite que puedan ser manipulados desde el sistema operativo anfitrión como cualquier otro archivo pero hay algunas acciones que deben ser efectuadas mediante las utilerías (ver paso 6 del proceso de instalación) provistas por VirtualBox.

Importante aclarar que hablar de la “reducción” o “incremento” del tamaño de un disco, medio o dispositivo de almacenamiento (aquí referidas como “unidades de almacenamiento”) de una máquina virtual puede ser interpretado en dos formas: a) del archivo que lo contiene (o representa, como desee verse), o b) del cambio de especificación dada al momento de su creación.

Creación de unidades de disco

Desde la línea de comando, un disco puede ser creado con el comando createhd de VBoxManage. Curiosamente esta utilería de alguna forma interacciona con algo de VirtualBox ya que, para el caso abajo ilustrado, donde un disco de nombre test.vdi fue renombrado y se intentó crear uno con el mismo nombre generó un error.
$ vboxmanage createhd --filename test.vdi --size 8192
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...
Progress state: NS_ERROR_INVALID_ARG
VBoxManage: error: Failed to create medium
VBoxManage: error: Cannot register the hard disk '/Users/usuario/VirtualBox VMs/vm/test.vdi' {8fbfb27f-56c4-493f-b0b5-34f72305477e} because a hard disk '/Users/usuario/VirtualBox VMs/vm/test.vdi' with UUID {ab0864b2-9273-4131-b74d-d9478b799b29} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox
VBoxManage: error: Context: "RTEXITCODE handleCreateMedium(HandlerArg *)" at line 450 of file VBoxManageDisk.cpp

Reducción del tamaño de una unidad de almacenamiento

Como ya se señaló es fácil confundir el “reducir el tamaño de un disco” a “reducir el tamaño de un archivo”. Aquí hablamos de lo primero. Una búsqueda en la web traerá muchas referencias a la reducción del tamaño del archivo dando entender que se refiere a la reducción de la capacidad del dispositivo. Incluso es posible encontrar afirmaciones de que es posible reducir el tamaño del dispositivo mas el manual señala que esto no está implementado aún (ver opción –resize). El intentarlo genera mensaje como el siguiente:

$ vboxmanage modifymedium disk test.vdi --resize 8192
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize medium operation for this format is not implemented yet!

Incremento del tamaño de una unidad de almacenamiento

Para este ejemplo considérese que se tiene un disco para el que se muestra lo siguiente:

$ vboxmanage showhdinfo test.vdi
UUID:           8f9ae407-0b6c-4f77-88e8-0169054fbe3d
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/usuario/VirtualBox VMs/Data Extraction Model/DEMHD2.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       21358 MBytes
Size on disk:   1689 MBytes
Encryption:     disabled

Se trata de un disco de formato dinámico cuyo tamaño es de unos 20GB. El incremento del espacio al que finalmente puede crecer se lleva a cabo de la siguiente forma:

$ vboxmanage modifymedium disk test.vdi --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

El tamaño del archivo no cambiará de inmediato por lo que desde el sistema operativo anfitrión no mosrará cambio alguno en su tamaño, sin embargo, VBoxManage mostrará:

$ vboxmanage showhdinfo text.vdi
UUID:           7f5895b1-3ad8-43be-b98f-d4c369a1ff30
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/usuario/VirtualBox VMs/Data Extraction Model/DEMHD2.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       50000 MBytes
Size on disk:   1689 MBytes
Encryption:     disabled

 

Reducción del tamaño de un archivo que contiene una unidad de almacenamiento

Por supuesto esto sólo aplica para aquellas unidades de formato “dinámico”. No aplica para las unidades de tamaño fijo (que posiblemente ofrezcan un mejor desempeño pero que seguramente permiten tener ya el espacio a usar apartado en el anfitrión).

Una unidad de formato dinámico crecerá conforme la máquina virtual vaya haciendo uso de espacio en ésta. Desafortunadamente, por le momento, el archivo no reducirá su tamaño conforme el espacio vaya siendo liberado en el disco que éste representa. En gran parte debido al funcionamiento propio de los sistemas operativos, quienes están diseñados para trabajar con unidades de almacenamiento físicas cuya capacidad es inmutable, así como el hecho que al liberar espacio en disco, éste sólo es marcado como disponible en las estructuras o directorios maestros del sistema de archivos.

La utilería VBoxManage, mediante el comando modifymedium y la opción --compact permiten reducir el tamaño del archivo de un medio de almacenamiento recortando el espacio que ya ha sido marcado como disponible. Por lo ya descrito, es necesario que dicho espacio sea limpiado y marcado con ceros. El el caso de un huesped tipo windows debe desfragmentarse la unidad y hacer uso de alguna utilería que rellene con ceros el espacio liberado (por ejemplo, las de Microsoft). En el caso de un linux, puede recurrirse a zerofree. Hecho lo anterior puede recurrirse al comando indicado al inicio.

Asignación de un nuevo UUID

$ vboxmanage showhdinfo test.vdi
VBoxManage: error: Cannot register the hard disk '/Users/usuario/VirtualBox VMs/vm/test.vdi' {ab0864b2-9273-4131-b74d-d9478b799b29} because a hard disk '/Users/usuario/VirtualBox VMs/vm/test.vdi' with UUID {ab0864b2-9273-4131-b74d-d9478b799b29} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp

Para reasignar un nuevo UUID

$ vboxmanage internalcommands sethduuid test.vdi
UUID changed to: aa897cae-8e49-4319-85dd-ea8893551ab8

Eliminación de unidades de almacenamiento

Para borrar un disco (preferentemente después de desligarlo de una VM y con ésta apagada), desde la línea de comando:

$ vboxmanage closemedium disk DEMHD2.vdi --delete
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Copiado de máquinas virtuales

Eliminación de máquinas virtuales

Instalación de un sistema operativo

Actualizaciones

Desinstalación

VirtualBox 4.3

Aunque la desinstalación podría hacerse arrastrando la aplicación al Trash, esto dejaría varias cosas atrás, por lo que lo más recomendable es hacer click en el ícono del script de desinstalación que el paquete provee.
Una ventana de confirmación se abrirá

y una sesión en Terminal.app se iniciará y archivos de la aplicación, extensiones del kernel y archivos de configuración serán eliminados.

VirtualBox 5.x

Aunque hay quien dice que la desinstalación es tan simple como sólo arrastrar la aplicación al Trash, lo mejor es hacer uso del script que para ello provee el programa.

El script de desinstalación es parte de la imagen de disco.

La ejecución del script abre un shell y aquí puede verse el porqué es mejor hacer uso de éste.

$ /Volumes/VirtualBox/VirtualBox_Uninstall.tool ; exit;

Welcome to the VirtualBox uninstaller script.

The following files and directories (bundles) will be removed:
/Users/somnium/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist
/usr/local/bin/VirtualBox
/usr/local/bin/VBoxManage
/usr/local/bin/VBoxVRDP
/usr/local/bin/VBoxHeadless
/usr/local/bin/vboxwebsrv
/usr/local/bin/VBoxBugReport
/usr/local/bin/VBoxBalloonCtrl
/usr/local/bin/VBoxAutostart
/usr/local/bin/VBoxDTrace
/usr/local/bin/vbox-img
/Library/LaunchDaemons/org.virtualbox.startup.plist
/Library/Python/2.6/site-packages/vboxapi/VirtualBox_constants.py
/Library/Python/2.6/site-packages/vboxapi/VirtualBox_constants.pyc
/Library/Python/2.6/site-packages/vboxapi/__init__.py
/Library/Python/2.6/site-packages/vboxapi/__init__.pyc
/Library/Python/2.6/site-packages/vboxapi-1.0-py2.6.egg-info
/Library/Python/2.7/site-packages/vboxapi/VirtualBox_constants.py
/Library/Python/2.7/site-packages/vboxapi/VirtualBox_constants.pyc
/Library/Python/2.7/site-packages/vboxapi/__init__.py
/Library/Python/2.7/site-packages/vboxapi/__init__.pyc
/Library/Python/2.7/site-packages/vboxapi-1.0-py2.7.egg-info
/Library/Application Support/VirtualBox/LaunchDaemons/
/Library/Application Support/VirtualBox/VBoxDrv.kext/
/Library/Application Support/VirtualBox/VBoxUSB.kext/
/Library/Application Support/VirtualBox/VBoxNetFlt.kext/
/Library/Application Support/VirtualBox/VBoxNetAdp.kext/
/Applications/VirtualBox.app/
/Library/Python/2.6/site-packages/vboxapi/
/Library/Python/2.7/site-packages/vboxapi/

And the following KEXTs will be unloaded:
org.virtualbox.kext.VBoxUSB
org.virtualbox.kext.VBoxNetFlt
org.virtualbox.kext.VBoxNetAdp
org.virtualbox.kext.VBoxDrv

And the traces of following packages will be removed:
org.virtualbox.pkg.vboxkexts
org.virtualbox.pkg.virtualbox
org.virtualbox.pkg.virtualboxcli

Do you wish to uninstall VirtualBox (Yes/No)?
yes

The uninstallation processes requires administrative privileges
because some of the installed files cannot be removed by a normal
user. You may be prompted for your password now...

Please enter somnium's password:
unloading org.virtualbox.kext.VBoxUSB
unloading org.virtualbox.kext.VBoxNetFlt
unloading org.virtualbox.kext.VBoxNetAdp
unloading org.virtualbox.kext.VBoxDrv
Successfully unloaded VirtualBox kernel extensions.
Forgot package 'org.virtualbox.pkg.vboxkexts' on '/'.
Forgot package 'org.virtualbox.pkg.virtualbox' on '/'.
Forgot package 'org.virtualbox.pkg.virtualboxcli' on '/'.
Done.
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.


Twitter Wordpress eMail
© Todos los derechos reservados.
M. en C. Eduardo René Rodríguez Avila
Creación: 2016.04.18
Última actualización: 2017.04.16
El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto.