Capítulo 4. El sistema X Window

Tabla de contenidos

4.1. Optimizar la instalación del sistema X Window
4.2. Instalación y configuración de tipos de letra
4.3. Configuración de OpenGL/3D

Resumen

El sistema X Window (X11) es prácticamente el estándar para interfaces gráficas de usuario en Unix. X11 es además un sistema basado en redes. Así, las aplicaciones que estén funcionando en un ordenador pueden mostrar sus datos de salida en otro siempre que ambas máquinas estén conectadas a través de una red. El tipo de red (LAN o Internet) es irrelevante.

En este capítulo le presentamos algunas posibilidades de optimización para su sistema X Window y le ofrecemos información sobre los tipos de letra en SUSE LINUX y la configuración 3D de OpenGL. La descripción de los módulos de YaST para configurar el monitor, la tarjeta gráfica, ratón y teclado está recogida en el Manual de Usuario.

X11™ se desarrolló gracias a la cooperación entre DEC™ (Digital Equipment Corporation™) y el proyecto Athena del MIT™ (Massachusetts Institute of Technology™). La primera versión (X11R1™) vio la luz en septiembre de 1987. Desde la versión 6 (Release 6), X Consortium, Inc.™ así como The Open Group™ desde 1996, se encargan del desarrollo del X Window System™.

XFree™ es una implementación de libre disponibilidad de servidores X para sistemas PC Unix (ver http://www.XFree86.org). XFree sigue siendo desarrollando por programadores de todo el mundo que se unieron en 1992 para formar el equipo XFree. De esta unión surgió en 1994 la empresa The XFree86 Project, Inc.™, cuyo objetivo es poner XFree™ al alcance de un público lo más amplio posible y contribuir al desarrollo e investigación futuros del sistema X Window.

Para usar el hardware existente (ratón, tarjeta de vídeo, monitor, teclado) de la mejor forma posible se puede optimizar la configuración de forma manual. A continuación se discutirán solamente los aspectos más importantes de esta optimización manual. Puede encontrar información detallada sobre la configuración del sistema X Window en diversos archivos del directorio /usr/share/doc/packages/xf86 al igual que en la correspondiente página del manual man XF86Config.

[Warning]Aviso

Se recomienda mucha precaución a la hora de configurar el sistema X Window. Jamás se debe arrancar X sin haber terminado la configuración. Un sistema mal configurado puede ocasionar daños irreparables en el hardware; los monitores de frecuencia fija corren un riesgo especial. Los autores de este libro y SUSE LINUX AG no se responsabilizan de posibles daños. El presente texto fue redactado con máximo cuidado, no obstante, no se puede garantizar que los métodos presentados sean correctos para su hardware y que no pueda causarles daño.

4.1. Optimizar la instalación del sistema X Window

A continuación se describe la estructura del archivo de configuración /etc/X11/XF86Config. Este archivo se divide en secciones (sections) que comienzan con la palabra clave Section "nombre" y terminan con EndSection. Estas secciones se explican a grandes rasgos en los siguientes apartados.

Los programas SaX2 y xf86config generan el archivo XF86 Config y lo copian generalmente en el directorio /etc/X11. Este es el archivo de configuración principal del X Window System™ que contiene las definiciones de ratón, monitor y tarjeta de vídeo.

XF86Config se compone de varios párrafos llamados secciones (sections) y cada una contempla un determinado aspecto de la configuración. Cada sección tiene la estructura:

Section "Nombre"
  definición 1
  definición 2
  definición n
EndSection

Existen los siguientes tipos de secciones:

Tabla 4.1. Secciones en /etc/X11/XF86Config

TipoSignificado
Files Esta sección describe las rutas para los juegos de caracteres y la tabla de colores RGB.
ServerFlags Aquí se apuntan indicadores generales (flags).
InputDevice Esta es la sección de configuración de los dispositivos de entrada. Se configuran tanto teclados y ratones como dispositivos de entrada especiales tales como joysticks, tabletas digitalizadoras, etc. Las variables importantes aquí son Driver y las opciones Protocol y Device para determinar el protocolo y el dispositivo.
Monitor Descripción del monitor usado. Los elementos de esta sección son un nombre que se utilizará más adelante como referencia en la definición de la pantalla (Screen), así como el valor de la anchura de banda (Bandwidth [MHz]) y de las frecuencias de sincronización permitidas (HorizSync [kHz] y VertRefresh [Hz]). El servidor rechaza cualquier modeline que no cumpla con la especificación del monitor; de esta forma se evita enviar al monitor por error frecuencias demasiado altas cuando se está experimentando con los modelines.
Modes Aquí se definen los parámetros para las determinadas resoluciones de pantalla. SaX2 calcula estos parámetros en base a las indicaciones por parte del usuario y por lo general no se requiere ninguna modificación. Se puede realizar una intervención manual por ejemplo en caso de usar un monitor con frecuencia fija. La explicación exacta de todos los parámetros se encuentra en el archivo HOWTO /usr/share/doc/howto/en/XFree86-Video-Timings-HOWTO.gz.
Device Esta sección define una determinada tarjeta gráfica cuya referencia es el nombre que aparece por detrás de la palabra clave Device.
Screen Esta sección une finalmente un Monitor con un Device para formar así las indicaciones necesarias para XFree. La subsección Display permite la definición de un tamaño de pantalla virtual (Virtual), del ViewPort y de los Modes usados con este Screen.
ServerLayout Esta sección define el diseño de una configuración con uno o varios monitores (“single” o “multihead”). Los dispositivos de entrada InputDevice y los monitores Screen se unen para formar un conjunto.

A continuación se contemplan más de cerca las secciones Monitor, Device y Screen. En las páginas del manual relativas a XFree86 y XF86Config encontrará información adicional sobre el resto de secciones.

El archivo XF86Config puede contener varias secciones de tipo Monitor y Device. También pueden aparecer diversas secciones Screen. De la siguiente sección ServerLayout depende cuál de ellas se va a utilizar.

4.1.1. Sección Screen

Primero queremos profundizar un poco más en la sección Screen. Esta une una sección de Monitor y de Device y determina qué resolución debe utilizarse con qué profundidad de color.

Una sección del tipo Screen puede parecerse, por ejemplo, a la del archivo  4.1, “La sección Screen del archivo /etc/X11/XF86Config”.

Ejemplo 4.1. La sección Screen del archivo /etc/X11/XF86Config

 
Section "Screen" 
  DefaultDepth  16 
  SubSection "Display"
    Depth       16 
    Modes       "1152x864" "1024x768" "800x600" 
    Virtual     1152x864 
  EndSubSection 
  SubSection "Display" 
    Depth       24 
    Modes       "1280x1024"
  EndSubSection 
  SubSection "Display" 
    Depth       32 
    Modes "640x480" 
  EndSubSection 
  SubSection "Display" 
    Depth        8 
    Modes       "1280x1024" 
  EndSubSection 
  Device        "Device[0]" 
  Identifier    "Screen[0]" 
  Monitor       "Monitor[0]" 
EndSection

La línea Identifier (en este ejemplo el identificador es Screen[0]) da un nombre único a la sección para poder identificarla de forma inequívoca en la siguiente sección ServerLayout. La tarjeta gráfica y el monitor definido se asignan mediante las líneas Device y Monitor a la pantalla Screen. No son más que referencias a las secciones de dispositivo (Device) y Monitor con los nombres correspondientes o identificadores (identifiers). Estas secciones se explican más adelante.

La variable DefaultDepth indica la profundidad de color por defecto que usa el servidor cuando arranca sin definición explícita de ella. A cada profundidad de color le sigue una subsección de Display. La profundidad de color de cada subsección se define por la palabra clave Depth. Los valores posibles para Depth son 8, 15, 16, 24 y 32. No todos los módulos de servidor X soportan todos los valores.

Después de definir la profundidad de color se define una lista de resoluciones con Modes. El servidor X lee esta lista de izquierda a derecha. Para cada una de las resoluciones listadas, el servidor busca en la sección Modes un Modeline que pueda ser representada por el monitor y la tarjeta gráfica.

La primera resolución adecuada en este sentido es la que usa el servidor X para arrancar (Default-Mode). Con las teclas CtrL-Alt-gris + se puede navegar en la lista de resoluciones a la derecha y con CtrL-Alt-gris - a la izquierda. Gris indica aquí que se trata de teclas del bloque numérico, ya que estas se resaltan a veces en color gris. Así se puede modificar la resolución en pantalla durante el tiempo de ejecución del sistema X Window.

La última línea de la subsección Display con la expresión Depth 16 se refiere al tamaño de la pantalla virtual. El tamaño máximo de la pantalla virtual depende de la cantidad de memoria instalada y de la profundidad de color deseada pero no depende de la resolución máxima del monitor. Ya que las tarjetas gráficas modernas ofrecen mucha memoria, se pueden crear escritorios virtuales muy grandes. En tal caso es posible que ya no se pueda aprovechar la aceleración 3D por haber ocupado toda la memoria de vídeo con un escritorio virtual. Si la tarjeta tiene por ejemplo 16 MB Vídeo RAM, la pantalla virtual puede ser de hasta 4096x4096(!) puntos con una profundidad de color de 8 Bit. Para los servidores X acelerados no se recomienda de ninguna manera usar todo el espacio de memoria disponible para la pantalla virtual, ya que estos servidores usan la zona de memoria no usada de la tarjeta para diferentes cachés de juegos de caracteres y de zonas de gráficos.

4.1.2. Sección Device

Una sección de dispositivo (Device-Section), describe una determinada tarjeta gráfica. XF86Config puede incluir una cantidad infinita de secciones de dispositivo siempre que sus nombres, indicados con la palabra clave Identifier, se distingan. Si hay varias tarjetas gráficas montadas en la máquina, estas secciones reciben números consecutivos comenzando con Device[0] para la primera, Device[1] para la segunda, etc. El siguiente archivo muestra el extracto de una sección del tipo Device de un ordenador con una tarjeta PCI tipo Matrox Millennium:

Section "Device" 
  BoardName     "MGA2064W" 
  BusID         "0:19:0" 
  Driver        "mga" 
  Identifier    "Device[0]" 
  VendorName    "Matrox" 
  Option        "sw_cursor" 
EndSection

La sección Device debería ser semejante a la que se muestra arriba si se usa SaX2 para la configuración. SaX2 determina automáticamente Driver y BusID, los cuales dependen del hardware integrado en su máquina. BusID determina la posición que ocupa la tarjeta gráfica en el bus PCI o AGP y es equivalente al número que lspci indica. Hay que tener en cuenta que el servidor X usa valores decimales mientras que los de lspci son hexadecimales.

En el parámetro Driver se determina el controlador para la tarjeta gráfica, que en el caso de la Matrox Millennium es mga. El servidor X busca el controlador en el subdirectorio drivers de la rama ModulePath definido en el apartado Files. La rama completa para una instalación estándar es /usr/X11R6/lib/modules/drivers. El nombre completo del controlador se obtiene añadiendo _drv.o al identificador, lo que resulta en nuestro ejemplo en mga_drv.o.

Existen opciones adicionales para activar ciertas características del servidor X y de su controlador. En este caso se ha usado como ejemplo la opción sw_cursor que desactiva el cursor hecho por hardware para emularlo mediante software. Según el controlador usado, hay diferentes opciones que se explican junto con los controladores en el directorio /usr/X11R6/lib/X11/doc. También puede encontrar opciones generales en las páginas del manual man XF86Config y man XFree86.

4.1.3. Secciones Monitor y Modes

Las secciones de Monitor y de Modes, así como las de Device, describen un monitor por cada sección y puede haber una cantidad infinita de estas secciones en el archivo de configuración /etc/X11/XF86Config. En la sección de ServerLayout se determina qué sección de monitor vale a efectos de la configuración.

Sólo usuarios muy experimentados deberían generar o ajustar una sección de Monitor (y sobre todo la de Modes) al igual que una sección de tarjeta gráfica. Una parte fundamental de la sección Modes son los Modelines que indican las sincronizaciones (timings) horizontales y verticales para cada resolución. La sección Monitor contiene las características del monitor y entre ellas sobre todo las frecuencias de refresco máximas.

[Warning]Aviso

Sin un buen conocimiento de la función de monitor y de tarjeta gráfica no se debería cambiar ningún valor de los Modelines, ya que esto podría provocar averías en el monitor.  

Si realmente se atreve a hacer sus propias configuraciones de monitor, debería leer antes la documentación de /usr/X11/lib/X11/doc. Se recomienda especialmente la lectura de [fang:93] que explica detalladamente la función del hardware y la definición de los Modelines.

Por fortuna, hoy en día casi nunca hace falta generar Modelines o definiciones de monitores manualmente. Si dispone de un monitor de multifrecuencia moderno, SaX2 puede leer vía DDC los rangos de frecuencia admitidas y las resoluciones óptimas directamente del monitor. Si esto no fuera posible, siempre se puede recurrir a uno de los modos VESA del servidor X que funcionan prácticamente con todas las combinaciones posibles de monitor y de tarjeta gráfica.