yabrembre

25 marzo, 2006

Las X Windows (III)

Anterior:
  1. Las X Windows (I): ¿Qué es X?
  2. Las X Windows (II): ¿Qué es un Display?


Las X en MundoReal

Nadie ejecuta las X como hemos descrito hasta ahora – sería realmente incómodo. Normalmente se usa el script “startx”, o el xdm, el cual es en realidad ejecutado por el proceso init de POSIX (xdm no es está disponible bajo MS-Windows/Cygwin).

Para arrancar las X desde la consola, simplemente teclea “startx” o, si eso no funciona, “xinit”. Así arrancaremos un servidor X en el display :0 y ejecutaremos un xterm en él (podemos configurarlo para que haga otras cosas). Para ejecutar un servidor X en un display diferente del cero el comando sería startx -- :1 o xinit -- :1 (para arrancarlo en el display 1).

Sin embargo, la mayoría de los servidores X se arrancan con xdm, o alguno de sus “primos” como kdm o gdm, especialmente en el mundo GNU/Linux. La mayoría de las distribuciones vienen configuradas para ejecutar xdm en run level 5, no en run level 3. Esto significa que ejecutando “init 5” en la consola como root arrancará las X. Y ejecutando “init 3” las parará. La mayoría de las distribuciones GNU/Linux arrancan automáticamente las X. Por cierto, Xdm es acrónimo de “X Display Manager”. kdm y gdm son funcionalmente idénticos al xdm pero más bonitos:

x1xgdm
Un pantalla de login de gdm ("primo" guapo del xdm)

Xdm (al igual que kdm y gdm) muestra al usuario una pantalla de login llamada "greeter" ("saludador"). Después de introducir usuario y contraseña, no sólo se carga un gestor de ventanas, sino también un entorno de escritorio como GNOME o KDE, los cuales no tienen nada que envidiar con otros sistemas como los que Microsoft Windows ofrece.

Las X de Cygwin pueden arrancarse con el parámetro “-multiwindow”. De hecho, viene por defecto en el "startx". Esto integra el propio gestor de ventanas de MS-Windows y lo usa para todos los programas X. Además de integrar los programas X en el entorno de display de MS-Windows.



X Distribuidas

Al principio del artículo, pasé por alto los aspectos de red de las X. Vamos a explicarlos con detalle. Cuando un cliente X se conecta a un servidor X lo que hace es exactamente eso. No hay nada virtual. Se conecta usando un protocolo propio designado para ese propósito. Cuando el servidor X está en la misma máquina que el cliente X se conecta usando lo que se llama "Unix Sockets". Que no es otra cosa que una de las formas en las que un programa se puede comunicar con otro dentro de una misma máquina. Sin embargo, el protocolo X puede funcionar sobre TCP/IP. En otras palabras, puedes correr el servidor X en una máquina y los clientes X en otra.

Puedes correr el servidor X en una máquina y los clientes X en otra.

Esto tiene sus ventajas y desventajas. Una ventaja es que una máquina con un procesador de textos corriendo, por ejemplo, no tiene que cargar con los procesos que manejan la pantalla por lo que puede hacerlo más rápido. Otra ventaja es que puedes tener delante tuya ventanas de procesos que están corriendo en otras máquinas. Una desventaja es que el refresco de la pantalla es más lento ya que necesita un cierto tráfico de información por la red.

Con un sólo ordenador es muy difícil demostrarte esto así que necesitas dos. Da igual si tienen MS-Windows con Cygwin o GNU/Linux. Si usas el MS-XP con el SP2 necesitas poner la dirección del XWin.exe (C:\Cygwin\usr\bin\X11R6\XWin.exe por defecto) en las excepciones del cortafuegos de MS-Windows. En máquinas GNU/Linux tienes que abrir los puertos TCP del 6000 al 6009 y UDP 177. Necesitas también conocer las IPs de ambas máquinas.

En nuestro ejemplo asumiremos que una de las máquinas tiene IP 192.168.0.1 y la otra 192.168.0.2.

En la primera máquina (192.168.0.1) arrancamos el servidor X con "startx" y comprueba que un gestor de ventanas está corriendo. En la venta del "xterm" teclea:

xhost add 192.168.0.2

Esto permitirá conexiones desde la máquina con esa IP. En la segunda máquina (192.168.0.2), teclea el siguiente comando en la consola:

xterm -display 192.168.0.1:0 &

Vuelve a la primera máquina, la que tiene el servidor X, y deberías ver una nueva ventana de una xterm. Investigando un poco descubrirías que la shell de esa xterm corre en la segunda máquina.

Lo que está pasando aquí es que un cliente X en la segunda máquina se ha conectado al servidor X de la primera y ha abierto una ventana en él.

x1xrdia
Diagrama de unos programas X corriendo en una máquina distinta a la que lo hace el servidor X



Continuará...

Etiquetas:

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]



<< Inicio