Septiembre
2006
tcos-devices una nueva forma de acceso a los dispositivos de los terminales
Una de las cosas más útiles y que peor funcionan en las redes de clientes ligeros es el acceso a los dispositivos locales (soluciones como samba o mtools no me acaban de convencer), en TCOS, he añadido soporte para varias formas de acceder a los dispositivos remotos:
En TCOS aprovechando que uso XMLRPC para casi todo, he programado una pequeña aplicación que se ejecuta dos veces, una como demonio (y automonta todo lo que sea USB como pendrives, mp3, cámaras de fotos) y otra que se queda residente en la barra de tareas y permite montar el disquete o el cdrom (de momento uno, es trivial que funcione con más de uno). La aplicación la he bautizado como tcos-devices.
Aquí unas capturas del invento funcionando:
1.- Se ve en la bandeja del sistema el icono TCOS, que dice que está atendiendo las señales del equipo tcos27, lo que sería el terminal ligero. Para el modo demonio, funciona gracias al udev que se ejecuta en el terminal y una pequeña regla que guarda algunas variables de entorno de udev en un archivo que a intervalos regulares leo por medio de XMLRPC.

De repente conectamos una memoria USB, (parece ser que en las nuevas versiones de vmware-server lo toma directamente si tiene el foco y no se apodera el sistema anfitrión, antes había que descargar los módulos en el sistema anfitrión para que vmware usase los dispositivos...) Desde la conexión hasta que se monta y aparece todo pasan alrededor de 3-4 segundos, y es que udev tarda un ratillo en darse cuenta.

Como se ve en el escritorio crea un directorio (cuyo nombre es la etiqueta del pendrive si tuviera o sino la marca, este tiene una etiqueta USB-LIVE) además crea un archivo *.desktop que al ejecutarlo desmonta y limpia todo para dejarlo como estaba, permitiendo así una extración segura. He usado python-notify para mostrar los mensajes, y además de quedar más chulo es mucho más sencillo para saber que ocurre en cada momento.
Si pulsamos ese icono desktop, ocurre lo siguiente:

Cuando se monta algún dispositivo se abre el gestor de archivos del escritorio que se esté usando:
gnome -> nautilus
kde -> konqueror
xfce4 -> Thunar
Si se desenchufa a lo bestia (porque solo hemos leido cosas) también se desmonta todo.

Los disquetes y los cdrom no generan eventos UDEV cuando introducimos un medio para leer/escribir, es por esto que al pulsar en el icono de la bandeja del sistema aparece la otra parte que os hablaba al principio, el gestor de disquetes y cd's:

Vamos a montar un disquete.....

... y ahora un cdrom...

No viene al caso pero el cdrom usado para las pruebas es la iso de SuperGrubDisk ;)
Si tengo un rato instalaré x11vnc en el terminal, y haré una pequeña demo (screencast) con vnc2swf...
A todo esto han entrado hoy en debian unstable las Xorg 7.1 y parece ser (segun el log) que tengo el AIGLX activado lo que no he podido es compilar compiz y la versión de ubuntu me dice que falta una extensión GXL_COMPOSITE (supongo que por no usar los ultimos paquetes mesa) sería la repanocha que con la mierda de gráfica que tengo (via KM400) funcione compiz con aiglx. De momento me conformo con la aceleración gráfica de 400 fps.
- ltspfs: que pertenece al proyecto LTSP y que por medio de la autenticación de las XWindow y FUSE monta el sistema de archivos remoto en un directorio local.
- shfs: no pertenece a ningún proyecto pero vengo usándolo desde hace un tiempo, es un módulo del kernel que permite por medio de SSH montar un sistema de archivos remoto en local.
En TCOS aprovechando que uso XMLRPC para casi todo, he programado una pequeña aplicación que se ejecuta dos veces, una como demonio (y automonta todo lo que sea USB como pendrives, mp3, cámaras de fotos) y otra que se queda residente en la barra de tareas y permite montar el disquete o el cdrom (de momento uno, es trivial que funcione con más de uno). La aplicación la he bautizado como tcos-devices.
Aquí unas capturas del invento funcionando:
1.- Se ve en la bandeja del sistema el icono TCOS, que dice que está atendiendo las señales del equipo tcos27, lo que sería el terminal ligero. Para el modo demonio, funciona gracias al udev que se ejecuta en el terminal y una pequeña regla que guarda algunas variables de entorno de udev en un archivo que a intervalos regulares leo por medio de XMLRPC.

De repente conectamos una memoria USB, (parece ser que en las nuevas versiones de vmware-server lo toma directamente si tiene el foco y no se apodera el sistema anfitrión, antes había que descargar los módulos en el sistema anfitrión para que vmware usase los dispositivos...) Desde la conexión hasta que se monta y aparece todo pasan alrededor de 3-4 segundos, y es que udev tarda un ratillo en darse cuenta.

Como se ve en el escritorio crea un directorio (cuyo nombre es la etiqueta del pendrive si tuviera o sino la marca, este tiene una etiqueta USB-LIVE) además crea un archivo *.desktop que al ejecutarlo desmonta y limpia todo para dejarlo como estaba, permitiendo así una extración segura. He usado python-notify para mostrar los mensajes, y además de quedar más chulo es mucho más sencillo para saber que ocurre en cada momento.
Si pulsamos ese icono desktop, ocurre lo siguiente:

Cuando se monta algún dispositivo se abre el gestor de archivos del escritorio que se esté usando:
gnome -> nautilus
kde -> konqueror
xfce4 -> Thunar
Si se desenchufa a lo bestia (porque solo hemos leido cosas) también se desmonta todo.

Los disquetes y los cdrom no generan eventos UDEV cuando introducimos un medio para leer/escribir, es por esto que al pulsar en el icono de la bandeja del sistema aparece la otra parte que os hablaba al principio, el gestor de disquetes y cd's:

Vamos a montar un disquete.....

... y ahora un cdrom...

No viene al caso pero el cdrom usado para las pruebas es la iso de SuperGrubDisk ;)
Si tengo un rato instalaré x11vnc en el terminal, y haré una pequeña demo (screencast) con vnc2swf...
A todo esto han entrado hoy en debian unstable las Xorg 7.1 y parece ser (segun el log) que tengo el AIGLX activado lo que no he podido es compilar compiz y la versión de ubuntu me dice que falta una extensión GXL_COMPOSITE (supongo que por no usar los ultimos paquetes mesa) sería la repanocha que con la mierda de gráfica que tengo (via KM400) funcione compiz con aiglx. De momento me conformo con la aceleración gráfica de 400 fps.
Me parece extremadamente interesante las cosas que estás haciendo con el proyecto este de TCOS :)
Una cosa que me ha parecido sumamente extraña es que utilizes un tal "shfs" y que en el párrafo anterior utilizes FUSE; ¿por qué no utilizar el sistema de archivos sshfs para FUSE en su lugar?
Pues vas a tener razón... la verdad es que acabo de estar probando los dos y aunque el rendimiento es un poco mejor con sshfs (he copiado un archivo de 10Mb y he hecho un find de la raiz del terminal), shfs es un poco más sencillo de instalar ya que no tienes que instalar fuse y añadir a los usuarios al grupo fuse....
De todos modos estos dos métodos tienen el inconveniente de necesitar intercambio de claves lo que si nos ponemos a pensar en un aula sería un coñazo ponerlas distintas, y si las ponemos iguales cualquiera puede montar cualquier cosa, en esto ltspfs lleva ventaja ya que usa xauth.
De momento tcos-devices funciona con ltspfs sólo, no se si hacerlo que funcione con los SSH, pero funcionando ltsp no me importa demasiado.