OSE - Open Source Edition
Esta versión no cuenta con soporte USB por lo que no podrá utilizar sus dispositivos. Al menos por ahora.
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:
/etc/group y agregar el/los usuario(s) al grupo vboxusersvboxusers al/los usuario(s) que se considere necesario usando el comando usermod: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.
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.
vboxmanage list vms | grep <nombre_maquina>
vboxsdl -vm <nombre_maquina>
vboxmanage controlvm MaquinaVirtual poweroff
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
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