VBoxHeadless – Ejecución de máquinas virtuales con VirtualBox 4.1 en Ubuntu 12.04 Server (sin entorno gráfico)

El objetivo de esta guía es explicar cómo ejecutar máquinas virtuales con VirtualBox 4.1 en una máquina con Ubuntu 12.04 server. En condiciones normales para la gestión de las máquinas virtuales usaremos el propio interfaz gráfico que acompaña al producto, pero en un servidor puro no vamos a disponer de entorno gráfico y por lo tanto esta opción no es viable. Afortunadamente, VirtualBox incorpora una herramienta llamada VBoxHeadless que nos va a permitir conectarnos a las máquinas virtuales a través de una conexión de escritorio remoto y por lo tanto no va a existir la necesidad de usar el “VirtualBox GUI”.

1 Nota preliminar

El proceso ha sido testado en un Ubuntu 12.04 server (host system) con dirección IP 192.168.0.100 donde estoy actualmente logado con un usuario normal (administrator) en lugar de usar root….

2 Instalando VirtualBox

Para proceder a la instalación de VirtualBox 4.1 en nuestro Ubuntu 12.04 server, debemos añadir las fuentes correspondientes al fichero /etc/apt/sources.list…que es donde estan indicadas. Abrimos el fichero para editarlo:


sudo vi /etc/apt/sources.list

… y añadimos la siguiente linea en él:

[...]
deb http://download.virtualbox.org/virtualbox/debian oneiric contrib

Ahora pasamos a descargar la clave pública de VirtualBox…

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

… y actualizamos la base de datos de paquetes con:

sudo apt-get update

Finalmente, instalamos VirtualBox 4.1 con el siguiente comando:

sudo apt-get install linux-headers-$(uname -r) build-essential virtualbox-4.1 dkms

(El paquete dkms asegura que los módulos del núcleo de VB son correctamente actualizados si la versión del kernel de linux cambia.)

Comenzando en versiones 4.0, VirtualBox ha introducido los paquetes de extensiones “extension packs” en los que ha embebido algunas funcionalidades como por ejemplo el soporte a las conexiones remotas (VRDP) que era, entre otras, parte de los paquetes de VirtualBox en versiones anteriores a la 4.0. Debido a que necesitamos conexiones de escritorio remoto para controlar las máquinas virtuales, vamos a necesitar instalar los paquetes de extenciones en este momento. En la siguiente dirección http://www.virtualbox.org/wiki/Downloads, podrás encontrar enlaces de descarga a los siguientes paquetes de extensiones:

  • VirtualBox 4.1.18 Oracle VM VirtualBox Extension Pack
  • Support for USB 2.0 devices, VirtualBox RDP and PXE boot for Intel cards.

Descargar e instala los paquetes de extensiones como a continuación se indica:

cd /tmp
wget http://download.virtualbox.org/virtualbox/4.1.18/Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack

(Asegúrate que te descargas la ultima versión desde el sitio web de VirtualBox.)

(El ultimo de los comandos debe ser ejecutado con sudo – sudo VBoxManage extpack install … – si no lo haces el sistema te va a escupir un error como el siguiente:

administrator@server1:/tmp$ VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to install "/tmp/Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack": The installer failed with exit code 127: Error creating textual authentication agent: Error opening current controlling terminal for the process (`/dev/tty'): No such device or address
administrator@server1:/tmp$

Ahora lo que vamos a hacer es agregar el usuario que va a ejecutar VirtualBox (administrator en este ejemplo) al grupo vboxusers, para ello ejecutamos el siguiente comando:

sudo adduser administrator vboxusers

VirtualBox ya está instalado y listo para ser usado.

3 Uso de la linea de comandos de VirtualBox

3.1 Creación de una máquina virtual

Para crear una máquina virtual mediante la linea de comandos podemos usar el comando VBoxManage. Podemos echar un vistazo a la ayuda del comando del siguiente modo:

VBoxManage --help

y (recomendado!) tambien consultar en http://www.virtualbox.org/manual/ch08.html.

Vamos a crear ahora una maquina virtual Ubuntu 12.04 Server con 512MB de memoria y 10GB de disco duro usando para ello la imagen iso de Ubuntu 12.04 Server (la tengo descargada en /home/ubuntu-12.04-server-amd64.iso):

VBoxManage createvm --name "Ubuntu 12.04 Server" --register
VBoxManage modifyvm "Ubuntu 12.04 Server" --memory 512 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
VBoxManage createhd --filename Ubuntu_12_04_Server.vdi --size 10000
VBoxManage storagectl "Ubuntu 12.04 Server" --name "IDE Controller" --add ide
VBoxManage storageattach "Ubuntu 12.04 Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Ubuntu_12_04_Server.vdi
VBoxManage storageattach "Ubuntu 12.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/ubuntu-12.04-server-amd64.iso

3.2 Importación de una máquina virtual existente

Vamos a asumir que tenemos una máquina vitual llamada examplevm que queremos reutilizar en este servidor. En el antiguo servidor donde estaba corriendo esta máquina debemos tener un directorio con nombre Machines/examplevm en el propio directorio de VirtualBox ; Machines/examplevm debe contener el fichero examplevm.xml. Deberemos por tanto copiar el directorio examplevm completo  (incluyendo el fichero examplevm.xml) en el nuevo directorio Machines (por ejemplo si estas usando un nombre de usuario administrator, el directorio se encuentra en /home/administrator/.VirtualBox/Machines – el resultado de la copia debe ser /home/administrator/.VirtualBox/Machines/examplevm/examplevm.xml).

Adicionalmente debemos copiar el fichero examplevm.vdi desde el antiguo directorio VDI al nuevo (ej. /home/administrator/.VirtualBox/VDI/examplevm.vdi).

Finalmente, solo queda registrar la máquina virtual importada con el siguiente comando:

VBoxManage registervm Machines/examplevm/examplevm.xml

3.3 Iniciar una máquina virtual con VBoxHeadless

Independientemente de si has creado una nueva máquina virtual o de si has importado una existente, vas a tener que iniciarlas con el comando siguiente:

VBoxHeadless --startvm "Ubuntu 12.04 Server"

(Reemplazar Ubuntu 12.04 Server con el nombre de tu máquina virtual.)

VBoxHeadless iniciará la máquina virtual y un servidor VRDP (VirtualBox Remote Desktop Protocol) que nos va a permitir ver la salida de la máquina virtual remotamente desde otra.

Para detener una máquina vitual debes ejecutar el comando siguiente:

VBoxManage controlvm "Ubuntu 12.04 Server" poweroff

Para pausar una máquina virtual, el siguiente:

VBoxManage controlvm "Ubuntu 12.04 Server" pause

Para hacer un reset a una máquina virtual el siguiente:

VBoxManage controlvm "Ubuntu 12.04 Server" reset

Para saber mas sobre VBoxHeadless, echa un vistazo a la ayuda del comando:

VBoxHeadless --help

y en http://www.virtualbox.org/manual/ch07.html#vboxheadless.

4 Conexión a una máquina virtual desde Connecting To A VM From A Remote Desktop

4.1 Windows XP

Puedes usar la utilidad incluida en el sistema de conexión a escritorio remoto para conectar a la máquina virtual:

 

 

Le damos el nombre o la dirección IP de la máquina servidor a la que vamos a conectar:

 

 

Y listo! debiéramos estar conectados:

 

 

4.2 Ubuntu 12.04

En máquinas con Ubuntu 12.04, podemos usar el cliente de escritorio remoto Remmina para conectar con la máquina virtual. Simplemente buscamos escritorio remoto o remote desktop y hacemos click en el icono de Remote Desktop Client:

 

 

 

En el cliente de escritorio remoto Remmina, pinchamos en el icono del mas para agregar una conexión:

 

En la ventana de preferencias, completamos el nombre del perfil, nos aseguramos que esta seleccionado RDP como protocolo, rellenamos la dirección IP con la dirección del server, y como profundidad de color podemos indicarle un valor mayor al de por defecto de 8bpp – 16bpp esta bien. Ya solo nos queda pinchar en conectar:

 

Listo, ya debiéramos estar viendo la máquina virtual:

 

 

4.3 Si la conexión al escritorio remoto no funciona…

Si la conexión con el escritorio remoto no funciona, muy posiblemente es culpa tuya. Debes haber olvidado la instalación del pack de extensiones que se comentaba al principio de este articulo. Instala dicha extensión, para tu máquina virtual como se ha indicado y modificala para que acepte conexiones remotas con el comando siguiente:

VBoxManage modifyvm "Ubuntu 12.04 Server" --vrde on

(Si el pack de extensiones esta instalado cuando creas la máquina virtual las conexiones remotas estan activas por defecto.)

Inicia de nuevo la máquina virtual y prueba a conectar de nuevo.

5 Enlaces relacionados

Comments (3)

Marvell

Mar 22, 2013 at 1:10 PM

Si quisieramos obtener una lista de las máquinas virtuales existentes podemos hacer: vboxmanage list vms

Si queremos obtenerlas con toda la información podemos hacer vboxmanage list vms -l

Si queremos eliminar del registro una de las máquinas: VBoxManage unregistervm {3c7e41f6-3e85-41f8-a7ab-b6cdd858fe41}

Si queremos modificar el tamaño del disco de una máquina: VBoxManage modifyhd WindowsXP_Personal_2.vdi –resize 81920

Marvell

Dic 23, 2013 at 6:23 PM

Para parar los servicios de vbox se deben ejecutar los siguientes comandos:

sudo /etc/init.d/vboxweb-service stop
sudo /etc/init.d/vboxdrv stop
sudo /etc/init.d/vboxdrv vboxballoonctrl-service stop
sudo /etc/init.d/vboxdrv vboxautostart-service stop

Marvell

Abr 15, 2016 at 10:54 AM

Otras cuestiones de interés que he percibido en las ultimas versiones:

  • el módulo vboxdrv debe añadirse al fichero /etc/modules
  • Se deben instalar los paquetes dkms, build-essential y linux headers
  • el driver se compila con el comando /etc/init.d/vboxdrv setup
  • debe existir el fichero /etc/default/virtualbox con la menos las variables de usuario y host

You must be logged in to post a comment.