Discussion:
virtualbox + fullscreen + usb
Gonzalo Aguirre
2011-05-25 17:12:20 UTC
Permalink
chicos/as:
tengo uan configuración donde tengo un host con lo mínimo para
arrancar con dos posibles guests (win y linux) desde la mismo login de
GDM hago la llamada como si fuera kde o gnome, sólo que invoco al
comando:

VBoxSDL --startvm linux --fullscreen --discardstate --nofstoggle...

y otras que no afectan, el tema es que cuando enchufo un USB para que
me salga en el guest normalmente cuando está en modo ventana (no
fullscreen) se le da al ícono de usb y se monta sin más, pero en el
caso de fullscreen estuve buscando cómo hacer que se monte en el guest
todo lo que conecto en el host, pero no encuentro nada ni por internet
ni por las opciones, dicho sea de paso que no tengo ningún tipo de
filtros en los USB.

Alguien tuvo un problema similar?

Gracias de antemano!!!...
--
GA
Alejandro Vargas
2011-05-26 12:08:51 UTC
Permalink
Post by Gonzalo Aguirre
tengo uan configuración donde tengo un host con lo mínimo para
arrancar con dos posibles guests (win y linux) desde la mismo login de
GDM hago la llamada como si fuera kde o gnome, sólo que invoco al
VBoxSDL --startvm linux --fullscreen --discardstate --nofstoggle...
y otras que no afectan, el tema es que cuando enchufo un USB para que
me salga en el guest normalmente cuando está en modo ventana (no
fullscreen) se le da al ícono de usb y se monta sin más, pero en el
caso de fullscreen estuve buscando cómo hacer que se monte en el guest
todo lo que conecto en el host, pero no encuentro nada ni por internet
ni por las opciones, dicho sea de paso que no tengo ningún tipo de
filtros en los USB.
No podés hacer algún filtro que incluya todos los dispositivos? Tal vez al
no concordar con ningún dispositivo no te los toma.
Gonzalo Aguirre
2011-05-26 15:36:16 UTC
Permalink
Post by Alejandro Vargas
 tengo uan configuración donde tengo un host con lo mínimo para
arrancar con dos posibles guests (win y linux) desde la mismo login de
GDM hago la llamada como si fuera kde o gnome, sólo que invoco al
VBoxSDL --startvm linux --fullscreen --discardstate --nofstoggle...
y otras que no afectan, el tema es que cuando enchufo un USB para que
me salga en el guest normalmente cuando está en modo ventana (no
fullscreen) se le da al ícono de usb y se monta sin más, pero en el
caso de fullscreen estuve buscando cómo hacer que se monte en el guest
todo lo que conecto en el host, pero no encuentro nada ni por internet
ni por las opciones, dicho sea de paso que no tengo ningún tipo de
filtros en los USB.
No podés hacer algún filtro que incluya todos los dispositivos? Tal vez al
no concordar con ningún dispositivo no te los toma.
en teoría con:

$ VBoxManage usbfilter add 0 --target archlinux-host --name USB --action hold

tendría que hacer lo que vos decís, pero no me hace caso, sólo
poniendo en --vendorid y --productid lo monta sin decirle nada.

En el caso que enchufen uno una vez arrancada la máquina no puedo
hacer un VBoxManage para agregar un filtro on-the-fly. Ahora mismo
estoy con eso, si sale algo bueno aviso.

Gracias alex!
--
GA
Alejandro Vargas
2011-05-27 07:16:09 UTC
Permalink
Post by Gonzalo Aguirre
Post by Alejandro Vargas
 tengo uan configuración donde tengo un host con lo mínimo para
arrancar con dos posibles guests (win y linux) desde la mismo login de
GDM hago la llamada como si fuera kde o gnome, sólo que invoco al
VBoxSDL --startvm linux --fullscreen --discardstate --nofstoggle...
y otras que no afectan, el tema es que cuando enchufo un USB para que
me salga en el guest normalmente cuando está en modo ventana (no
fullscreen) se le da al ícono de usb y se monta sin más, pero en el
caso de fullscreen estuve buscando cómo hacer que se monte en el guest
todo lo que conecto en el host, pero no encuentro nada ni por internet
ni por las opciones, dicho sea de paso que no tengo ningún tipo de
filtros en los USB.
No podés hacer algún filtro que incluya todos los dispositivos? Tal vez al
no concordar con ningún dispositivo no te los toma.
$ VBoxManage usbfilter add 0 --target archlinux-host --name USB --action hold
tendría que hacer lo que vos decís, pero no me hace caso, sólo
poniendo en --vendorid y --productid lo monta sin decirle nada.
En el caso que enchufen uno una vez arrancada la máquina no puedo
hacer un VBoxManage para agregar un filtro on-the-fly. Ahora mismo
estoy con eso, si sale algo bueno aviso.
Bueno... se me ocurren un par de cosas. Una sería probar ejecutandolo
con headless y conectarse con el rdesktop-vrdp que puede redirigir
puertos a la máquina virtual a ver qué pasa. Y otra cosa que se me
ocurre sería echarle una mirada al código fuente a ver si es fácil
parchar el diálogo que pone al enchufar los puertos para que le de
"aceptar" automáticamente o algo así. ¿Has preguntado en la lista de
desarrollo de VirtualBox?
Gonzalo Aguirre
2011-05-27 16:42:03 UTC
Permalink
Post by Alejandro Vargas
Post by Gonzalo Aguirre
Post by Alejandro Vargas
 tengo uan configuración donde tengo un host con lo mínimo para
arrancar con dos posibles guests (win y linux) desde la mismo login de
GDM hago la llamada como si fuera kde o gnome, sólo que invoco al
VBoxSDL --startvm linux --fullscreen --discardstate --nofstoggle...
y otras que no afectan, el tema es que cuando enchufo un USB para que
me salga en el guest normalmente cuando está en modo ventana (no
fullscreen) se le da al ícono de usb y se monta sin más, pero en el
caso de fullscreen estuve buscando cómo hacer que se monte en el guest
todo lo que conecto en el host, pero no encuentro nada ni por internet
ni por las opciones, dicho sea de paso que no tengo ningún tipo de
filtros en los USB.
No podés hacer algún filtro que incluya todos los dispositivos? Tal vez al
no concordar con ningún dispositivo no te los toma.
$ VBoxManage usbfilter add 0 --target archlinux-host --name USB --action hold
tendría que hacer lo que vos decís, pero no me hace caso, sólo
poniendo en --vendorid y --productid lo monta sin decirle nada.
En el caso que enchufen uno una vez arrancada la máquina no puedo
hacer un VBoxManage para agregar un filtro on-the-fly. Ahora mismo
estoy con eso, si sale algo bueno aviso.
Bueno... se me ocurren un par de cosas. Una sería probar ejecutandolo
con headless y conectarse con el rdesktop-vrdp que puede redirigir
puertos a la máquina virtual a ver qué pasa. Y otra cosa que se me
ocurre sería echarle una mirada al código fuente a ver si es fácil
parchar el diálogo que pone al enchufar los puertos para que le de
"aceptar" automáticamente o algo así. ¿Has preguntado en la lista de
desarrollo de VirtualBox?
Estaba buscando por el lugar equivocado, se puede hacer un attach del
usb on-the-fly con

$ vboxmanage controlvm 57e02909-ed21-44c5-b841-cd5527ee3ea0 usbattach
70e9aff9-4cd2-4445-b43f-9426d5adb5f4

en mi caso en el UUID de la máquina guest que ya está en
funcionamiento y el parámetro del usbattach es el UUID del USB que me
da el comando

$ vboxmanage list usbhost

a partir de ahí es cuestión de hacer un script meterlo en /etc/udev y
cuando se enchufe algo que largue el script.

En el foro oficial me dijeron que no puede haber algo genérico porque
me quedaría sin teclado y mouse en el host, o que tendrían un
comportamiento un poco raro.

De momento esto, cuando tenga el script lo mando.
--
GA
Gonzalo Aguirre
2011-05-31 16:28:02 UTC
Permalink
Post by Gonzalo Aguirre
Post by Alejandro Vargas
Bueno... se me ocurren un par de cosas. Una sería probar ejecutandolo
con headless y conectarse con el rdesktop-vrdp que puede redirigir
puertos a la máquina virtual a ver qué pasa. Y otra cosa que se me
ocurre sería echarle una mirada al código fuente a ver si es fácil
parchar el diálogo que pone al enchufar los puertos para que le de
"aceptar" automáticamente o algo así. ¿Has preguntado en la lista de
desarrollo de VirtualBox?
Estaba buscando por el lugar equivocado, se puede hacer un attach del
usb on-the-fly con
$ vboxmanage controlvm 57e02909-ed21-44c5-b841-cd5527ee3ea0 usbattach
70e9aff9-4cd2-4445-b43f-9426d5adb5f4
en mi caso en el UUID de la máquina guest que ya está en
funcionamiento y el parámetro del usbattach es el UUID del USB que me
da el comando
$ vboxmanage list usbhost
a partir de ahí es cuestión de hacer un script meterlo en /etc/udev y
cuando se enchufe algo que largue el script.
En el foro oficial me dijeron que no puede haber algo genérico porque
me quedaría sin teclado y mouse en el host, o que tendrían un
comportamiento un poco raro.
Ya hice el script, tuve un par de problemas raros, hasta que salió
funcionando, hice el reporte a la página oficial. De todas maneras
pongo las dos formas que hice, de las cuales una no funciona pero lo
mismo a alguien se le ocurre dónde puede estar el error.

El disparador desde /etc/udev/rules.d no me quemé mucho la cabeza y lo
hice para dispositivos de almacenamiento:

KERNEL=="sd*", RUN+="/etc/udev/vboxusb.expect"

Por el lado del script el primero que hice era un simple bash:

----------- vboxusb.sh ------------
#!/bin/sh
VM_UUID=`vboxmanage list runningvms | sed -e 's/.*{\(.*\)}/\1/'`

if [ $VM_UUID != "" ]
then
echo agregando USB >> /tmp/prueba-udev.log
USB_UUID=`vboxmanage list usbhost | grep UUID | awk '{print $2}'`
su - mi_usuario -c "/usr/bin/vboxmanage controlvm $VM_UUID usbattach
$USB_UUID"
fi

----------- vboxusb.sh ------------

al hacer el cambio de usuario me dice que la VM_UUID está apagada, si
lo hago en una consola normal tecleando los comandos no tengo
problema. Así que decidí hacer un login y hacer los mismos comandos y
funcionó, así que decidí hacerlo con `expect' y quedó así:

----------- vboxusb.expect ------------
#!/usr/bin/expect

spawn login

expect "login:"
send "mi_usuario\r"
expect "assword:"
send "mi_clave\r"
expect "\$ "
send "VM_UUID=`vboxmanage list runningvms | sed -e
's/.*\{\\(.*\\)\}/\\1/'`&& USB_UUID=`vboxmanage list usbhost | grep
UUID | awk '{print \$2}'` && /usr/bin/vboxmanage controlvm \$VM_UUID
usbattach \$USB_UUID\r"
expect "\$ "
send "exit\r"

exit
----------- vboxusb.expect ------------

recuerden hacer un `chmod 0700 ...' del expect que está la clave en texto plano!

Con esto funciona, pero sigo teniendo un par de problemas porque
después de unos minutos `vboxmanage list runningvms' me larga una
lista vacía (un comportamiento totalmente indeterminista), y a partir
de ahí el script explota. Tengo que investigar si este comportamiento
está relacionado con algún evento y tratar de arreglarlo. Se aceptan
sugerencias de mejora del script.

Saludos!
--
GA
Alejandro Vargas
2011-05-31 16:38:28 UTC
Permalink
Post by Gonzalo Aguirre
Con esto funciona, pero sigo teniendo un par de problemas porque
después de unos minutos `vboxmanage list runningvms' me larga una
lista vacía (un comportamiento totalmente indeterminista), y a partir
de ahí el script explota. Tengo que investigar si este comportamiento
está relacionado con algún evento y tratar de arreglarlo. Se aceptan
sugerencias de mejora del script.
Se me ocurre una alternativa: existe el vboxwebsrv, que acepta
comandos y permite hacer "control remoto" de las máquinas virtuales
(incluso desde equipos diferentes porque escucha por tcp). El
phpvirtualbox lo usa y consigue hacer todas las funciones de la
interface de usuario. A demás hay un servicio que se arranca con la
máquina si uno quiere, para poder tener acceso mediante este método a
arrancar, parar, configurar, o lo que sea de las máquinas virtuales de
un usuario determinado (configurable en /etc/default/virtualbox).
Loading...