X.Org: sistema X Window |
SOFTWARE - General | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Martes, 23 de Junio de 2009 16:36 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Descubre todo sobre X Window, la interfaz gráfica (GUI) para sistemas UNIX y la utilizada por GNU/Linux.
1 IntroducciónEstamos acostumbrados a encender el ordenador y acceder, previa validación de usuario y contraseña, a un entorno gráfico de escritorio que nos proporciona todo lo necesario para nuestro trabajo: aplicaciones educativas de todo tipo, aplicaciones ofimáticas, herramientas para navegar por Internet, herramientas administrativas, conexiones preparadas para acceder a unidades de red, juegos, etcétera. Pero, detrás de estos escritorios hay todo un entramado software que, trabajando de forma coordinada, nos permiten disponer de estos entornos integrados. Software que gestiona de qué forma nuestro sistema dialoga con los dispositivos físicos de entrada/salida, software que gestiona la forma como se muestran las ventanas en las que veremos nuestras aplicaciones, software que permite la validación del usuario contra la máquina local o el servidor de red, y, en general software que permite que dispongamos de una forma amigable de trabajar haciendo transparente para el usuario todos estos programas que se están ejecutando por detrás. En el artículo analizamos estas capas de software y su interrelación, utilizando como base la distribución GNU/Linux Ubuntu 9.04 (Jaunty). 2 ¿Qué es X.Org?X Window es la interfaz gráfica (GUI) para sistemas UNIX y la utilizada por GNU/Linux. Este sistema fue desarrollado por el MIT en los años 80 y define un estándar para la representación gráfica en cualquier sistema. Entre sus muchas características resaltamos que permite la ejecución remota de aplicaciones gráficas a través de redes heterogéneas (máquinas diferentes, sistemas operativos diferentes). X Window System (abreviado X11 o X) define el estándar para dibujar e interactuar con el usuario a través de ratón y teclado desde la interfaz gráfica de GNU/Linux. Tiene estructura cliente-servidor. El cliente ejecuta la aplicación X y el servidor gestiona la comunicación con el hardware (tj gráfica, monitor, ratón, teclado) y procesa los gráficos. De esta forma el servidor gráfico X se ejecuta localmente y las aplicaciones X pueden ejecutarse de forma remota desde las máquinas cliente. El servidor X más utilizado en GNU/Linux es el XFree86, desarrollado y distribuido de forma gratuita por el XFree86 Project (miembro del X Consortium). Otra implementación del estándar X11 que permite la ejecución de interfaces gráficos de usuario es X.Org . X.Org es una implementación de código abierto del sistema de ventanas X Window y desarrollado por la X.Org Foundation (http://www.x.org/wiki/). El origen de este sistema gráfico está en las XFree86 4.4 y, en concreto, lo que determinó su creación fue el cambio de licencia de las XFree86, que ahora no es completamente compatible con GPL. La primera versión del servidor X.Org fue la X11R6.7 y, en este momento, la versión actual es la X11R7.4. La mayor parte de las distribuciones GNU/Linux han optado por este servidor gráfico X.Org. Distribuciones como Ubuntu, Debian, OpenSUSE, Mandriva, etc han cambiado su servidor gráfico XFree86 a X.Org. Además, X.Org se integra dentro de los estándares descritos en la Freedesktop (http://www.freedesktop.org) cuyo objetivo es establecer las aplicaciones y especificaciones de los entornos de escritorio libres. 3 Estructura del sistema gráfico X WindowEl sistema gráfico X Window y, por lo tanto heredado por X.Org, consta de varias capas de software que constituyen la interfaz gráfica de usuario:
3.1 Sistema de ventanas XEl sistema de ventanas X es el encargado de mostrar la información gráfica. Es el propio servidor X (puertos TCP y UDP 6000). Utiliza el protocolo Xprotocol para su comunicación con el cliente X, y proporciona un conjunto de órdenes básicas para la generación de ventanas. El servidor X ejecuta el driver de vídeo real y proporciona una interfaz a través de la cual otros programas pueden ejecutar órdenes de dibujo sin conocer qué hardware está usándose. Los programas que se conectan al servidor X se llaman clientes X, y pueden ser aplicaciones de todo tipo, como procesadores de texto, juegos, etc. 3.2 Gestor de ventanasEl gestor de ventanas es un programa intermedio que controla el aspecto, el movimiento y cambio de tamaño de las ventanas, es decir, dibuja bordes, marcos, maximiza, minimiza, usa colores, etc. Controla la barra de títulos, cuál es la ventana activa (comportamiento del foco), recogiendo los comandos del ratón y teclado para ella. Un gestor de ventanas es, desde el punto de vista del servidor X, una aplicación cliente normal y, por lo tanto, ha de comunicarse con el servidor X como cualquier otra aplicación. Puede formar parte del entorno de escritorio o ser independiente. Cuando se habla de un gestor de ventanas independiente se está refiriendo a un gestor que no requiere otra capa de software para poder ser funcional. En http://xwinman.org/ se pueden encontrar diferentes gestores de ventanas así como entornos de escritorios. Por ejemplo, están:
Los gestores twm e icewm funcionan por si mismos, sin necesidad de estar integrados en un escritorio. 3.3 Gestor de pantallaEl gestor de pantalla X (XDM) es una parte opcional del sistema X Window que se usa para el manejo de sesiones, ya que gestiona el registro de usuario (inicio y fin de sesión). Forma parte del cliente X. Dentro de una red, utilizando XDM se puede elegir a qué pantalla se quiere conectar y pedir la información de autenticación, como nombre de usuario y contraseña. Hecho esto, arranca el gestor de ventanas y permanece a la espera de que termine, mostrando de nuevo la pantalla de entrada al sistema y determinadas opciones. Hay gestores de pantalla mas potentes que permiten, además de la conexión y cierre, el cambio de idioma para esa sesión e incluso del escritorio propiamente, si el sistema tiene otro disponible. Hay tres gestores de pantalla importantes:
3.4 Entorno de escritorioNo hay que confundir el entorno de escritorio con el gestor de ventanas. El gestor de ventanas sólo puede controlar la apariencia y la posición de las ventanas de los clientes de X. Los entornos de escritorio tienen mucha mas funcionalidad, ya que permiten a los clientes X y otros procesos en ejecución comunicarse entre sí, por ejemplo copiando y pegando texto entre diferentes aplicaciones. En general, permiten la coordinación entre aplicaciones y ofrecen un entorno uniforme de trabajo. Un entorno de escritorio consta, al menos, de las siguientes aplicaciones clientes X:
Los entornos de escritorio mas conocidos son:
Ambos escritorios son un conjunto integrado de gestor de ventanas, gestor de pantalla y sus propias herramientas y aplicaciones. Además, aunque llevan de forma predefinida un gestor de ventanas se puede cambiar, pero hay que tener en cuenta que no todos funcionan igual de bien. Si se tiene ambos escritorios instalados, en el menú de gdm: Opciones > Iniciar sesión, el usuario puede seleccionar el entorno de escritorio con el que quiere trabajar en dicha sesión. 4 Características de X.Org. Instalación.La versión actual de X.Org es la 7.4 y sus características mas importantes son las siguientes:
El protocolo X11 fue diseñado para poder ser usado en red. Es decir el usuario puede estar ejecutando un cliente X (aplicación) en una máquina y su interfaz se está mostrando en otra máquina. Para instalar X.Org ejecutar la orden:
xserver-xorg es un metapaquete que proporciona los componentes para una máquina independiente ejecutando el sistema X Window: librerías X, el servidor X, un conjunto de fuentes, y un conjunto de clientes X (aplicaciones) y utilidades. 5 Configuración del servidor gráfico X.OrgEl sistema X Window se encuentra localizado en varios directorios y archivos dentro del sistema de archivos:
El archivo de configuración de Xorg es /etc/X11/xorg.conf y está dividido en secciones cada una de ellas dedicada a la configuración de un aspecto del servicio gráfico.
Si editamos el archivo directamente desde una terminal:
podremos ver las secciones básicas y su contenido por defecto. La configuración específica por usuario se genera al ejecutar la orden del punto 5.1 y se almacena en el directorio home del usuario.
Para conocer con mas detalle el archivo de configuración, solicitar la página de manual ejecutando desde una terminal:
5.1 ConfiguraciónEn Ubuntu los pasos a realizar para configurar el servidor X.Org son:
Esta última orden prueba el hardware generando el archivo xorg.conf.new. Trabaja sobre el DISPLAY3 0 por defecto. Al parar el gestor de ventanas perdemos el entorno gráfico y pasamos a modo consola. Si se quiere continuar sin cerrar el escritorio, ejecutar la orden sobre el DISPLAY 1. Muestra la salida:
La nueva configuración creada se puede probar ejecutando:
Si todo va bien el nuevo archivo de configuración generado se salva con el nombre del auténtico:
Volver a arrancar el gestor de ventanas:
5.2 Ajuste manual del archivo xorgVeamos las secciones y su configuración particular: Sección Screen Una posible sección Screen es la que se incluye.
El identificador se la Sección es "Default Screen". Se indica para luego poder referenciar esta sección desde otras. Las entradas Se ha establecido una profundidad de color por defecto ( La línea Modes define una lista de resoluciones para cada profundidad establecida. El servidor X lee la lista de izquierda a derecha. Para cada resolución, el servidor X busca un Para cambiar la resolución de pantalla en caliente (ejecutándose las X) y desde el teclado:
Sección Device Cada sección Device describe una tarjeta gráfica determinada. Se pueden incluir en La siguiente sección Device muestra la configuración para una tarjeta gráfica ATI Radeon 9500. El parámetro
Sección Monitor Cada sección Las definiciones de Monitor sólo deben ser ajustadas por usuarios expertos. En esta sección se establecen la sincronización horizontal y vertical para ese monitor, ambos valores son puntos críticos para el buen funcionamiento del monitor.
Sección InputDevice Una configuración para ratón puede ser la que se muestra. El ratón es PS/2 y está activada la emulación de 3 botones.
Sección ServerLayout
En general desde el sistema X Window se puede volver a reiniciar el servidor ejecutando la combinación de teclas CTRL+BACK+SUPR. Pero por defecto Ubuntu lleva esta combinación de teclas desactivada. Si queremos disponer de ella hemos de incluir en el archivo de configuración /etc/X11/xorg.conf en la sección ServerFlags la opción siguiente:
Se puede comprobar la detección de la tj gráfica con el comando lspci. En la salida generada buscar "VGA".
También desde Ubuntu se puede activar/desactivar la opción de aceleración de la tarjeta gráfica. Para comprobarlo ejecutar:
Si la tarjeta da problemas y necesitamos desactivar la aceleración 3D y los efectos de escritorio, se puede hacer de la forma siguiente:
desde el archivo /etc/X11/xorg.conf. Para el caso de los drivers propietarios de nvidia o ati (fglrx), si se quieren instalar los módulos hay que hacerlo desde un paquete específico cuyo nombre sigue la nomenclatura: xserver-xorg-video-nv. El módulo se instala en el directorio /usr/lib/xorg/modules/drivers/ y se llama nv_drv.so. Otra opción de configuración es cuando se quieren activar extensiones que permiten trabajar con sombras y transparencias. En este caso y en el archivo /etc/X11/xorg.conf añadimos la sección:
Por último, para hacer ajustes de configuración del monitor tenemos la orden xvidtune. Esta herramienta proporciona una interfaz con controles para configurar las frecuencias de actualización del monitor y la resolución de la pantalla. Al ejecutar la orden muestra una ventana de aviso indicando que puede ser peligroso hacer un uso arbitrario de esta herramienta. Y la interfaz de trabajo es la siguiente: 5.3 Configuración gráficaEl usuario puede utilizar herramientas gráficas para configurar algunos aspectos del sistema gráfico, como son:
Como se puede apreciar, con estas herramientas gráficas incluidas en los menús de la distribución, no se puede llegar al nivel de configuración gráfica que se puede llevar a cabo en línea de orden y editando los archivos de configuración. 6 Iniciar el sistema X WindowPara lanzar sólo el servidor X hay que ejecutar la orden:
El servidor por defecto se ejecuta sobre la primera pantalla gráfica (DISPLAY :0) a la que se puede acceder mediante la combinación de teclas CTRL+ALT+F7. Los servicios están disponibles, pero al no haber ningún cliente y ningún gestor de ventanas no podemos hacer nada con ellos. En realidad no muestra nada, pero el proceso se está ejecutando y se puede comprobar con la orden:
Existen varios métodos para iniciar el sistema X Window:
Para cualquiera de los tres planteamientos suponemos que estamos en la consola. Es decir, no existe ningún servidor X lanzado. La opción 3 la explicamos después del apartado de Seguridad. Además de la orden X tenemos la orden xinit que se utiliza para iniciar el servidor X y un primer programa cliente que puede ser una terminal xterm para, desde ella, ir lanzando aplicaciones. Es configurable para cada usuario mediante el archivo ~/.xinitrc. 6.1 Ejecutar las X cuando lo necesitamosSe trata de entrar en el sistema sin servidor gráfico, en modo consola y cuando interesa a un usuario sudo lanza el entorno gráfico. Comprobaremos que /usr/bin/X11/ está incluido en el contenido de la variable PATH.
Iniciamos las X ejecutando la orden:
Los archivos implicados en este arranque del modo gráfico son: /etc/X11/xinit/xinitrc → (run command de xinit) archivo desde el cual se lanza /etc/X11/Xsession. /etc/X11/Xsession → arranca la sesión X para el usuario conectado teniendo en cuenta una serie de opciones de configuración (/etc/X11/Xsession.options)tanto del sistema como del propio usuario. En concreto este script inicia el entorno de escritorio y el gestor de pantalla seleccionado en el archivo /etc/X11/default-display-manager. Si se quiere utilizar un gestor de ventanas personalizado para el usuario se puede visualizar y modificar con la orden siguiente:
En Ubuntu sólo se incluye como gestor de ventanas Metacity y por ese motivo no se puede cambiar. En otras distribuciones puede haber varios gestores, o incluso en Ubuntu se pueden instalar otros, en cuyo caso, con esta orden se podría elegir el gestor de ventanas a utilizar. El usuario puede lanzar una sesión GNOME 'a mano' ejecutando las órdenes siguientes estando en la consola:
Esta secuencia ejecuta el servidor X en background (&) sobre el display 0, lanza un terminal x en el display :0 y ejecuta desde dentro de dicho terminal una sesión GNOME. Todo ello sin pasar por el gestor de pantalla gdm. 6.2 Ejecutar las X en secuencia de arranqueAl instalar Ubuntu el sistema arranca siempre con el entorno gráfico. Ejecuta el servidor X, el gestor de ventanas Metacity y el X Display Manager xdm/kdm/gdm según el escritorio instalado e independientemente del nivel de ejecución con el que se entre en el sistema. Por último lanza el entorno de escritorio GNOME o KDE. En los directorios /etc/rcx.d/ (x=nº nivel) hay un script S30gdm (o su equivalente para KDE) que es el responsable de que se lance el gestor de pantalla para GNOME, excepto para el nivel 1 en el que no se lanza el entorno gráfico. El nivel 1 se corresponde con el modo de trabajo monousuario y multitarea, para tareas administrativas que requieran que no haya ningún otro usuario conectado. Este es el 'modo normal' de trabajo que, por defecto, es el nivel 2. Se puede comprobar ejecutando la orden:
Que indica que estamos en el nivel 2 de ejecución, es decir multiusuario, multitarea, con servicios de red activos y entorno gráfico lanzado. Pero sí se puede modificar el nivel de ejecución en caliente ejecutando la orden:
En este caso el sistema matará todos los procesos implicados en la gestión de usuarios y sus tareas, la red y el entorno gráfico y pasaremos a la consola del sistema. ¡Ojo! si se prueba y se tiene algún archivo o aplicación abiertos lo cerrará todo. Muestra un Recovery Menu donde el usuario puede seleccionar la forma de seguir conectado al sistema. Para volver a abrir la sesión de usuario seleccionar la primera opción. 7 Seguridad en las XAntes de analizar los diferente procedimientos de seguridad que proporciona X.Org, describiremos el comando xhost. xhost permite indicar al servidor X que programas de otras máquinas remotas pueden acceder a su pantalla, teclado y ratón. Este método no distingue usuario sino máquina, con lo cual la seguridad se puede ver comprometida. Los pasos para la utilización de xhost son:
> maquinaremota$ export DISPLAY=maquinalocal.dominio.com:1.0 (o IP:1.0) Los dos procedimientos de seguridad al utilizar las X se basan en:
dónde usuario1 es el id. del usuario que ha ejecutado las X. Este método no necesita el puerto tcp 6000 abierto.
IMPORTANTE: Como norma de seguridad no conectarse nunca al servidor X como root. Si alguna aplicación gráfica necesita ejecutarse como root se puede hacer de la forma siguiente:
Cuando se utilice este método hay que asegurarse de que el archivo ~/.Xauthority tenga permiso de lectura para el grupo al que pertenece el usuario. 8 Ejecutar las X en una máquina remotaPodemos ejecutar sesiones remotas habilitando en XDMCP las solicitudes indirectas. XDMCP es el protocolo que permite el login remoto. Para ello ejecutar en una terminal la orden gdmsetup o ir a: Sistema > Preferencias > Ventana de entrada > Pestaña 'Remota' En Estilo seleccionamos Igual que la entrada local y muestra la pantalla siguiente: Pulsamos en el botón 'Configurar XDMCP...' y muestra la ventana donde podemos establecer las opciones para la ventana de entrada XDMCP.
Comprobamos que funciona reiniciando gdm:
Y accedemos desde el cliente como prueba ejecutando la orden:
donde :1.0 indica el display 1 (se supone que el 0 está ya siendo utilizado por la sesión X del servidor) y el screen o pantalla local 0 en el cliente. Si todo es correcto veremos la pantalla de login de gdm de nuestro servidor. Si queremos volver a la sesión X local, pulsamos la combinación CTRL+ALT+F7. También podemos acceder desde el entorno gráfico cuando vamos a iniciar sesión con gdm o kdm. En este caso vamos a Opciones > Entrada remota por XDMCP... 9 Ejemplos prácticos de utilización de las X8.1 Intercambio entre consolas gráficas y texto.Hay que pulsar las combinaciones de teclas siguientes:
Donde CTRL+ALT+F7 se corresponde con el DISPLAY 0, CTRL+ALT+F8 el DISPLAY 1,...
8.2 Varias sesiones X-Window simultáneas.Se pueden abrir hasta 6 consolas gráficas concurrentes. Los cambios entre consolas gráficas se hacen como en el punto 8.1. Hay que indicar el display al cual irá cada sesión:
8.3 Diferentes entornos de escritorio en diferentes consolas gráficas.Con la orden startx siempre ejecutamos el entorno de escritorio por defecto. Pero el usuario tiene el control sobre qué entorno de escritorio quiere utilizar cada vez, con la condición, lógicamente, de tener instalados los paquetes correspondientes. ¿Cómo podemos lanzar escritorios diferentes en diferentes consolas gráficas y poder pasar de una a otra sin cerrar sesión? Método-A: Desde el modo texto, iniciamos el servidor X y una terminal en la consola gráfica 0:
Desde la terminal creada ejecutar:
Hacemos lo mismo para otra consola gráfica:
Desde la terminal creada ejecutar:
Método-B: Iniciamos el servidor X en la consola gráfica 0 ( sin terminal ):
Volver a la consola de texto y lanzar una terminal en el mismo display:
Desde este terminal lanzar el escritorio:
Hacer lo mismo para GNOME en otra consola gráfica. Método-C: Utilizamos la orden xnest. Xnest es a la vez un servidor X y una aplicación cliente X, ya que abre una ventana de conexión en la que el usuario puede trabajar dentro de la misma sesión abierta. Es como una sesión de usuario anidada. Incluso esta herramienta permite abrir ventanas en equipos remotos. Para trabajar con xnest hay que instalar:
Para probarla podemos lanzar gdm dentro de xnest desde la sesión abierta:
8.4 Sesiones gráficas remotas.Método-A: suponemos que la
Como usuario:
Comprobar qué máquina está ejecutando las aplicaciones con el comando ps. Comprobamos que el servidor después de lanzar los servicios gráficos sobre su DISPLAY 0 lo ha exportado a la máquina B (cliente) que ejecuta en local la aplicación KDE haciendo uso del servidor X que se está ejecutando sobre la máquina A (servidor). Método-B: Ejecución segura de aplicaciones gráficas X remotas con ssh. No se necesita ejecutar xhost porque ssh abre un canal seguro.
En esta secuencia de órdenes lo que se hace es activar el reenvío X11 en la máquina remota. Igual que en el Método A, arrancamos el servidor X en la máquina local y desde una terminal xterm nos conectamos vía ssh a la máquina remota. Ya en la máquina remota ejecutamos una aplicación X (xedit). 9 ConclusiónHemos comprobado la potencia del sistema gráfico X Window y su capacidad para soportar diferentes entornos de escritorio adaptándose al gusto o preferencias del usuario. Ello contrasta con la rigidez del sistema gráfico de Windows que no permite mas que una débil personalización a nivel de cambio de fondo de pantalla, resolución, colores y poco mas. El sistema X Window permite trabajar con múltiples escritorios por sesión de usuario, trabajar con múltiples consolas gráficas y cada una de ellas con un entorno de escritorio diferente, establecer de forma directa y segura conexiones remotas, múltiples efectos de escritorio, etcétera, además de las consabidas adaptaciones y preferencias de los usuarios. Pero también tiene sus inconvenientes y uno de ellos y de peso, es que el sistema X usa mucho ancho de banda, lo cual es crítico cuando varios usuarios están conectados a través de una conexión lenta. Otro inconveniente es que la información que se transmite no está cifrada, quedando a disposición de los sniffers. Si apostamos por la seguridad, cuando se utilizan los servicios X deben ser reenviados sobre un protocolo seguro como SSH. De hecho ya se están estudiando alternativas a este sistema gráfico que está vigente desde el año 1987 y que empieza a dar muestras de agotamiento en sus prestaciones. El horizonte parece estar en el 2010... NotasInit 1: es el primer proceso en ejecución después de la carga del Kernel, y ejecuta los scripts de arranque para inicializar los diferentes servicios, programas o registros que sean necesarios para que el sistema funcione como el usuario quiere o como el administrador estableció. http://es.wikipedia.org/
|