Instalando y usando VirtualBox OSE
OSE - Open Source Edition
Esta versión no cuenta con soporte USB por lo que no podrá utilizar sus dispositivos. Al menos por ahora.
Consideraciones
Si ha instalado VirtualBox sobre un sistema GNU/Linux hay un paso que debe realizar manualmente para que los usuarios puedan poner a correr sus máquinas virtuales.
Consiste en agregar el/los usuario(s) que se desea tenga(n) permiso(s) para usar el virtualbox al grupo vboxusers creado durante la instalación de la aplicación. Para ellos tiene 2 formas de hacerlo:
- Editar el archivos
/etc/groupy agregar el/los usuario(s) al grupovboxusers - Agregar el grupo
vboxusersal/los usuario(s) que se considere necesario usando el comandousermod:
usermod -Gvboxusers -a <user>
Si no se especifica lo contrario, VirtualBox creará en el home del usuario que corra el sistema un directorio .VirtualBox dónde colocará el listado de las máquinas creadas por el usuario(VirtualBox.xml) y las configuraciones de cada una(~/.VirtualBox/Machines) y los discos virtuales(~/.VirtualBox/VDI) usados por las mismas.
VirtualBox (desde la línea de comandos)
No he encontrado un documento donde estén reseñados los comandos de línea más interesantes de VirtualBox, por eso escribo aquí mi breve resúmen.
Administración de máquinas virtuales
Máquinas disponibles
vboxmanage list vms | grep <nombre_maquina>
Prender y apagar máquina
vboxsdl -vm <nombre_maquina>
vboxmanage controlvm MaquinaVirtual poweroff
Duplicar disco de una máquina
vboxmanage clonevdi <nombre_maquina_acutal>.vdi <nombre_maquina_nueva>.vdi
También es posible mediante la copia normal:
cp clonevdi <nombre_maquina_acutal>.vdi vboxmanage internalcommands setvdiuuid <nombre_maquina_acutal>.vdi
Veamos un ejemplo práctico de ambos casos:
vboxmanage clonevdi hd_maq1.vdi hd_maq2.vdi
o
cp hd_maq1.vdi hd_maq2.vdi vboxmanage internalcommands setvdiuuid hd_maq2.vdi
Redes
Forwardiar puertos hacia la maquina virtual
Esto nos permitirá acceder a servicios de la maquina virtual desde el equipo host.
vboxmanage setextradata "<nombre_maquina_virtual>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/HostPort" <puerto_origen_servicio> vboxmanage setextradata "<nombre_maquina_virtual>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/GuestPort" <puerto_destino_servicio> vboxmanage setextradata "<nombre_maquina_virtual>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/Protocol" <protocolo_servicio>
Esta información queda guardada en ~/.VirtualBox/Machines/<nombre_maquina_virtual>/<nombre_maquina_virtual>.xml así que se corre una sola vez. Por consiguiente, podría editar el archivo y agregar las lineas manualmente y agregar las siguientes lineas dentro del tag <ExtraData>:
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/HostPort" value="<puerto_origen>"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/GuestPort" value="<puerto_destino>"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/<nombre_servicio>/Protocol" value="<protocolo>"/>
Veamos un ejemplo:
Aquí agregamos un forward para los puertos 22, 3690 y 80 de la máquina virtual usando los puertos 2222, 3690 y 8080 respectivamente editando el archivo XML de la maquina virtual:
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" value="2222"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" value="22"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" value="TCP"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/svn/HostPort" value="3690"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/svn/GuestPort" value="3690"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/svn/Protocol" value="TCP"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/HostPort" value="8080"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/GuestPort" value="80"/> <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol" value="TCP"/>
esto mismo usando el comando vboxmanage quedaría de la siguiente forma:
vboxmanage setextradata "mimaqvirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222 vboxmanage setextradata "mimaqvirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22 vboxmanage setextradata "mimaqvirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP