Convert to GutenPalm
or to PalmDoc |
por Guido Socher (homepage)
Sobre el autor:
A Guido le gusta Linux no sólo por lo interesante que resulta para comprender cómo funcionan los sistemas operativos sino también por la gente involucrada en su diseño.
Taducido al español por:
Roberto Hernando Velasco (homepage)
Contenidos:
|
Ejecutando aplicaciones remotas con X11
Resumen:
La mayoría de los que utilizan Linux por primera vez piensan que el entorno gráfico en Linux es simplemente otro sistema "Windows" donde se pueden iniciar aplicaciones y éstas aparecen en ventanas separadas. Algunos llegan a darse cuenta de que pueden tener varios escritorios, pero piensan que eso es todo. ¡El Sistema X Window de Linux (X11) es mucho más que eso! Es un sistema de ventanas en red. Veremos qué novedosas y grandes posibilidades ofrece.
El concepto de "display"
Cada aplicación gráfica en X Window lee al iniciarse la variable de entorno DISPLAY para averiguar a qué pantalla debe enviar sus gráficos. Esto junto con la capacidad de red del Sistema X Window hace posible ejecutar aplicaciones gráficas remotamente. Es decir, se utiliza la capacidad de CPU de una máquina mientras se utiliza la aplicación desde otra máquina distinta. Todo el GUI (graphical user interface, interfaz gráfica de usuario) aparece en la máquina desde la que se opera. No se nota que se utilizan dos ordenadores.
Por supuesto la velocidad de la red es importante, pero una conexión de LAN normal de 10Mbit/s es más que suficiente.
¿Por qué es esto interesante?
Hay muchas aplicaciones de estas "redes gráficas". Las empresas las utilizan para operar remotamente con equipos que pueden estar a miles de kilómetros de distancia y pudiendo usar la misma aplicación para controlarlos que la que se utilizaría si se estuviese en el mismo lugar en el que se encuentran los equipos.
Usted podría tener 2 ordenadores: una máquina rápida a 1GHZ y un viejo Pentium 133MHz. Puede aprovechar la velocidad de la nueva máquina aunque no se esté sentado frente a ella. A lo mejor su hermana suele estar sentada enfrente de la máquina rápida utilizándola. No hay ningún problema para que usted siga beneficiándose de su máquina rápida.
¿Cómo funciona?
Todas las aplicaciones X Window, se llamen gimp, xterm, konqueror, netscape, ... realmente son clientes de red que se conectan a un servidor, el servidor X. La función de este servidor X es comunicarse con el hardware gráfico, dibujar las imágenes en la pantalla, leer las entradas del ratón y del teclado. Los clientes (sus programas como gimp, netscape ...) envían al servidor instrucciones sobre cómo pintar cuadros y botones. A cambio reciben del servidor los eventos de ratón y teclado. Obviamente se necesita algún tipo de autentificación, de otra forma cualquiera podría estropear la pantalla de cualquier otro. Existen dos programas para controlar el acceso:
- xhost: usando este programa puede dar permiso a cualquier usuario en una máquina dada a escribir gráficos en su pantalla. Ejemplo: usted está sentado frente a una máquina llamada philosophus. Para permitir el acceso a cualquier programa en el host movietux a su pantalla en philosophus debería escribir el comando:
xhost +movietux
Esto habría que escribirlo en un shell en philosophus
- xauth: es una autentificación basada en cookies y mucho más sofisticada. Con xauth se puede dar acceso a los usuarios de forma individual. Es mucho más seguro que xhost. La autentificación usa una cookie alojada en el fichero .Xauthority en el directorio personal de los usuarios. Si la máquina remota tiene una cookie válida en este fichero entonces se garantizará el acceso. Para copiar la cookie desde la máquina frente a la que está sentado (philosophus) al host desde donde quiere lanzar el programa (movietux) puede usar uno de los siguientes métodos:
xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
o
scp ~/.Xauthority movietux:
Al lanzar un programa (cliente) ocurre lo siguiente:
- El cliente busca en la variable de entorno DISPLAY el servidor, si no intenta conectarse al servidor en este host.
- El servidor comprueba si el cliente tiene permiso para enviarle "imágenes". Si el cliente está autorizado entonces el servidor dibujará la imagen en la pantalla.
La variable de entorno DISPLAY tiene la siguiente sintaxis:
bash:export DISPLAY=nombre_host:número_display.número_pantalla
tcsh:setenv DISPLAY nombre_host:número_display.número_pantalla
No voy a hablar de número_display ni de número_pantalla aquí. Normalmente es 0:0. Un ejemplo para bash podría ser:
export DISPLAY=philosophus:0.0
Lanzando una aplicación remota
Después de toda la teoría veamos ahora un ejemplo práctico. Simplemente pruébelo. Estamos otra vez sentados frente al ordenador llamado philosophus y queremos ejecutar algo remotamente desde movietux.
- Dígale a su servidor X qué clientes desde movietux tienen permiso para dibujar imágenes en su pantalla:
xhost +movietux
- haga login al host remoto movietux:
slogin -l nombre_usuario movietux
- ahora ha hecho login a movietux y cada comando que usted lance será ejecutado en movietux
- export DISPLAY=philosophus:0.0
- inicie el programa. P.ej:
netscape &
Si movietux es una máquina potente habrá notado que la renderización de páginas html en netscape es algo más rápida que cuando lo ejecuta localmente en su máquina. Y a un tiempo usted no nota realmente que netscape no se está ejecutando localmente, ya que opera de la misma forma con el ratón y el teclado.
Estupendo, ¿no es verdad?
Llevando el "display" consigo
Aunque es sencillo ejecutar una aplicación remotamente también está ese pequeño tecleo extra necesitado para definir el DISPLAY. Esto se puede automatizar así:
- Si usa ssh para acceder al host remoto entonces el DISPLAY se establece correctamente de forma automática. También existen otros programas de conexión remota que soportan el DISPLAY, pero ssh es muy común.
- Si usa slogin u otros comandos entonces puede instalar los siguientes scripts en el host remoto.
Para tcsh:
# lleve su display consigo al hacer login remoto:
# Póngalo en su fichero ~/.login
set whoami=`who -ml`
set remhost=`expr "$whoami" : '.*(\(.*\))'`
if ( "$remhost" != "" ) then
setenv DISPLAY "$remhost":0.0
endif
El script funciona obteniendo el nombre del host remoto mediante el comando "who -ml". Este comando devolverá algo así
>who -ml
movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)
Si está usando bash necesita el siguiente script:
# lleve su display consigo al hacer login remoto:
# Póngalo en su ~/.bash_profile
whoami=`who -ml`
remhost=`expr "$whoami" : '.*(\(.*\))'`
if [ -n "$remhost" ]; then
DISPLAY="$remhost":0.0
export DISPLAY
fi
OpenGL
Mientras que las posibilidades de red del Sistema X Window son muy buenas, los gráficos son algo lentos debido al hecho de que usted envía los datos sobre un protocolo de red. Normalmente no notará demasiada diferencia.
Las aplicaciones con muchos y rápidos gráficos como algunos juegos están habitualmente basadas en OpenGL (Open Graphics Library) y GLX (Extensión de OpenGL para el Sistema X Window). Estas librerías proveen un interfaz de programación independiente del hardware, lo que da acceso directo a la aceleración 3D por hardware en las tarjetas gráficas. Es decir: la aplicación envía la descripción de un objeto en la forma de puntos, líneas y polígonos a la tarjeta gráfica y toda la renderización se hace dentro del hardware gráfico. Esto provee gráficos muy rápidos.
Actualmente la mayoría de los drivers para tarjetas gráficas en Linux (servidores X) no soportan aceleración por hardware GLX/OpenGL para aplicaciones remotas. Soportan aceleración por hardware para aplicaciones locales. El efecto es que las aplicaciones OpenGL iniciadas remotamente tardan en arrancar y son muy lentas. Una excepción son los drivers NVidia, cuyo código fuente no es abierto. Tienen un interfaz de renderización directa que soporta indirectamente la renderización para aplicaciones remotas.
Conclusión
Utilizar la potencia de cómputo de su red es muy fácil con X11. Puede trabajar con aplicaciones remotas de la misma forma que con locales. La única diferencia que encontrará es que verá los ficheros y directorio personal del host remoto. Sin embargo, con NFS y NIS instalados puede incluso esconder esta pequeña diferencia y utilizar toda la potencia de CPU de la más rápida de las máquinas en su red sin pensar en ello.
Enlaces
sistema X11, x.org
xfree86.org el sistema X11 usado con Linux
Formulario de "talkback" para este artículo
Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
Ir a la página de "talkback" |
|
Contactar con el equipo de LinuFocus
© Guido Socher, FDL
LinuxFocus.org
Pinchar aquí para informar de algún problema o enviar comentarios a LinuxFocus
|
Información sobre la traducción:
en --> -- : Guido Socher (homepage) |
en --> es: Roberto Hernando Velasco (homepage) |
|
2002-01-20, generated by lfparser version 2.21