Entendiendo el archivo xorg.conf

Una de las cosas más irritantes que tiene Linux para un novato es poder configurar correctamente el monitor y el video.

Si poseemos una buena tarjeta de video y un monitor más o menos estándar, entonces quizás nunca tengamos problemas.

Pero son muchas las veces que la tarjeta “Te-nvidian-aTí” y el monitor “elecede” no son bien reconocidos por el configurador del servidor X. Y ahí se nos viene la noche. Nos queda una lastimosa resolución de 800×600 a 60Hz con una profundidad de 16bits de colores y hay que empezar a tocar parámetros, cargar módulos, buscar las frecuencias correctas del monitor para no quemarlo

¿Y por qué, a ver, por qué?

¿Si yo tengo mi súper placa aceleradora gástrica de 600 tetrabay que se banca una resolución de 2485789485×6509595 pixels a 150Hz y mi monitor es un súper elecedé de 144 pulgadas?


pc_crashBueno, a veces lo mejor de lo mejor no está soportado en linux por la sencilla razón de que los fabricantes no se dignan a crear drivers para linux y hay que esperar un alma caritativa que haga ingeniería inversa y programe dicho driver.

Otra veces, nuestro hardware es tan viejo que el mismo linux se niega a correr.

Como casi nadie sabe son muy pocos los newbies que saben como modificar el archivo xorg.conf, y mucho menos entender que contiene cada sección, me propuse escribir un pequeño artículo para tirar algo de luz sobre este simpático archivito de configuración.

1. Introducción

Xorg utiliza un archivo de configuración en su inicialización. Este archivo se llama xorg.conf y se encuentra generalmente en /etc/X11.
Es un archivo de texto plano (es decir que es legible por el hombre) y consta de distintas secciones.
El formato del archivo xorg.conf es:

Section  "Nombre_de_sección"
    Opción1
    Opción2
    ...
EndSection

Cada opción (Opción1, Opción2, …) son entradas con valores asociados y que irán configurando las diversas características del servidor gráfico.

1.1 Valores

Son los datos que acompañan a cada opción, por ejemplo:

Monitor "Monitor0"
DefaultDepth "24"
Option "XAANoOffscreenPixmaps" "true"

Note que todos los valores de las opciones deben ir entre comillas (” “).

1.2 ¿Porqué en algunas configuraciones las opciones booleanas varían?

Seguramente nos habremos encontrado que un archivo xorg.conf de un linux a otro varía, aún cuando sean máquinas idénticas con identico GNU/Linux instalado.
Esto es porque los valores booleanos (verdadero y falso) pueden representarse de varias formas

Verdadero: Los valores booleanos reconocidos son 1, on, true, yes
Falso: Los valores booleanos reconocidos son 0, off, false, no.

Si una opción tiene prefijo “No” entonces se interpreta como una opción negada.

Veamos un ejemplo de opciones que son equivalentes:

Option "Accel"   "Off"
Option "NoAccel"
Option "NoAccel" "On"
Option "Accel"   "false"
Option "Accel"   "no"

2. Secciones

Encontraremos distintas secciones entre las cuales nos interesará reconocer

ServerLayout   Capa principal
Files          Rutas de archivos
Module         carga dinámica de módulos
InputDevice    descripción de dispositivos de entrada
Monitor        descripción del Monitor
Device         descripción de dispositivos gráficos
Screen         configuración de pantalla
DRI            configuración específica para el módulo DRI

2.1 Sección ServerLayout

Aquí se encuentra la configuración principal del servidor. Se indica que configuraciones puntuales utilizará para Screen y los InputDevice (teclado y mouse).
En un archivo Xorg.conf pueden coexistir varias configuraciones diferentes.

Por ejemplo, quiero tener dos configuraciones diferentes para mi placa de video porque realizo programación gráfica y quiero hacer testing.
Entonces solo tendré que especificar en esta sección (ServerLayout) que utilizaré la configuración Screen0 para mi actividad normal y con solo modificar el archivo e indicar la configuración Screen1 podré reiniciar el servidor X para trabajar con la configuración de testeo.

2.2 Sección Files

Esta sección generalmente nunca se edita, dado que son rutas a archivos específicos del servidor X: rutas a los módulos, rutas a las fuentes que utilizará el servidor X, etc.

2.3 Sección Module

En esta sección se indican los módulos que se cargarán al iniciar el servidor X.
No es frecuente que se edita esta sección, a menos que queramos activar la aceleración 3D y debamos activar los módulos glx y dri

2.4 Sección InputDevice

Pueden existir varias secciones con el mismo nombre. Todo dependerá de cuantos dispositivos de entrada tengamos: teclado, mouse, touchpad, lapiz óptico, lectores de códigos de barra, etc.
Lo mas común es que tengamos dos secciones que se diferenciarán por la opción Identifier: Keyboard y Mouse
Estas secciones tampoco necesitan una edición manual dado que al ser dispositivos estándares, en el proceso de instalación de linux, se configuran correctamente.

2.5 Sección Monitor

En esta sección se configura nuestro monitor.
Las opciones VendorName y ModelName son simplemente informativas. La opción Identifier servirá para realizar la relación entre monitor y tarjeta de video en la sección Screen.
Dos opciones muy importantes de esta sección son HorizSync y VertRefresh.
Es muy frecuente que Xorg no detecte correctamente las frecuencias a las que trabaja un monitor, con lo cual coloca valores “seguros” para no dañarlo. Pero al colocar estos valores, no se aprovechan al máximo las posibilidades del monitor.
Aquí es donde entran en juego los manuales de nuestro monitor. Al examinar los valores que soporta nuestro hardware, podremos configurar correctamente estas dos opciones.
Ejemplo de un LCD Viewsonic VA1903wb

HorizSync    24.0 - 82.0
VertRefresh  50.0 - 75.0

2.6 Sección Device

Esta es la sección para configurar la tarjeta de video.
Si bien existen muchas opciones, las más comunes y con las cuales debería funcionar sin problemas son: Identifier y Driver. Identifier servirá para relacionar al monitor con la tarjeta de video.
Cuando no se puede detectar el driver de la tarjeta de video, es muy útil colocar como driver “vesa” o “vga“.
De esta manera se obtiene compatibilidad básica y se podrá ejecutar el servidor X. Una vez que funcione correctamente, se puede investigar e instalar el driver que corresponda a nuestra tarjeta de video.

2.6.1 Opciones disponibles

Identifier                             # [<cadena>]
Driver                                 # [<cadena>]
VendorName                             # [<cadena>]
BoardName                              # [<cadena>]
BusID                                  # [<cadena>]
Option     "NoAccel"                   # [<booleano>]
Option     "SWcursor"                  # [<booleano>]
Option     "Dac6Bit"                   # [<booleano>]
Option     "Dac8Bit"                   # [<booleano>]
Option     "BusType"                   # [<cadena>]
Option     "CPPIOMode"                 # [<booleano>]
Option     "CPusecTimeout"             # <entero>
Option     "AGPMode"                   # <entero>
Option     "AGPFastWrite"              # [<booleano>]
Option     "AGPSize"                   # <entero>
Option     "GARTSize"                  # <entero>
Option     "RingSize"                  # <entero>
Option     "BufferSize"                # <entero>
Option     "EnableDepthMoves"          # [<booleano>]
Option     "EnablePageFlip"            # [<booleano>]
Option     "NoBackBuffer"              # [<booleano>]
Option     "DMAForXv"                  # [<booleano>]
Option     "FBTexPercent"              # <entero>
Option     "DepthBits"                 # <entero>
Option     "PCIAPERSize"               # <entero>
Option     "AccelDFS"                  # [<booleano>]
Option     "DDCMode"                   # [<booleano>]
Option     "IgnoreEDID"                # [<booleano>]
Option     "DisplayPriority"           # [<cadena>]
Option     "PanelSize"                 # [<cadena>]
Option     "ForceMinDotClock"          # <frecuencia>
Option     "ColorTiling"               # [<booleano>]
Option     "VideoKey"                  # <entero>
Option     "RageTheatreCrystal"        # <entero>
Option     "RageTheatreTunerPort"      # <entero>
Option     "RageTheatreCompositePort"  # <entero>
Option     "RageTheatreSVideoPort"     # <entero>
Option     "TunerType"                 # <entero>
Option     "RageTheatreMicrocPath"     # <cadena>
Option     "RageTheatreMicrocType"     # <cadena>
Option     "ScalerWidth"               # <entero>
Option     "RenderAccel"               # [<booleano>]
Option     "SubPixelOrder"             # [<cadena>]
Option     "ShowCache"                 # [<booleano>]
Option     "DynamicClocks"             # [<booleano>]
Option     "VGAAccess"                 # [<booleano>]
Option     "ReverseDDC"                # [<booleano>]
Option     "LVDSProbePLL"              # [<booleano>]
Option     "AccelMethod"               # <cadena>
Option     "DRI"                       # [<booleano>]
Option     "ConnectorTable"            # <cadena>
Option     "DefaultConnectorTable"     # [<booleano>]
Option     "DefaultTMDSPLL"            # [<booleano>]
Option     "TVDACLoadDetect"           # [<booleano>]
Option     "ForceTVOut"                # [<booleano>]
Option     "TVStandard"                # <cadena>
Option     "IgnoreLidStatus"           # [<booleano>]
Option     "UseFBDev"                  # [<booleano>]
Option     "XAANoOffscreenPixmaps"     # [<booleano>]
Option     "DPMS"                      # [<booleano>]
Option     "BackingStore"              # [<booleano>]

2.7 Sección Screen

En esta sección se determina la relación entre la tarjeta de video y el monitor y se configuran aspectos de video como profundidad de colores y resolución.
El valor Identifier es el mismo que figurará en ServerLayout.
El valor Device será el mismo que figura en Identifier de la sección Device
El valor Monitor será el mismo que figura en Identifier de la sección Monitor.
La opción DefaultDepth indicará la profundidad de color predeterminada. Una buena elección será el valor 24.

Esta sección, además cuenta con subsecciones “Display”
Estas subsecciones son por profundidad de color 1,4,8,16 y 24 bits
Dentro de éstas se puede especificar la o las resoluciones deseadas.
La opción “Modes” permite indicar que resolución queremos utilizar con cada profundidad de color.
He aquí un ejemplo de la sección Screen:

Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    DefaultDepth 24
    SubSection "Display"
        Viewport   0 0
        Depth     "24"
        Modes    "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

En el ejemplo se indican cuatro resoluciones diferentes. Xorg al iniciar tratará de iniciarse con una profundidad de 24 bits (porque así lo indica la opción DefaultDepth) y con la primer resolución que tenga en Modes (en este caso 1280×1024″). De no poder iniciar con esa resolución utilizará la siguiente y así sucesivamente.
Se puede colocar una sola resolución para que X no tome la resolución “más cómoda”. Muchas veces nuestra tarjeta y monitor soportan resoluciones altas, pero Xorg se rehusa a utilizarlas y nos presenta una “lastimosa” resolución de 800×600. Colocando solo la resolución deseada, obligamos a Xorg a iniciarse en esa única resolución que tiene su opción Modes.

2.8 Sección DRI

Esta sección es siempre igual y se utiliza para activar la aceleración 3D.

Section "DRI"
    Mode 0666
EndSection

Cabe aclarar que debe cargarse el módulo dri en la sección Modules arriba descripta.

Recuerden hacer SIEMPRE backups de los archivos que modifican, después no quiero que anden llorando por los rincones.
Saludos

6 comentarios (+¿añadir los tuyos?)

  1. Caronte
    Nov 21, 2009 @ 16:50:37

    Vaya, me ha quedado claro como el agua. Gracias por el artículo.

    Responder

  2. iKernel
    Dic 18, 2009 @ 19:47:39

    Excelente post! La verdad es que hoy en día es escaso encontrar información tan util y con una calidad tan buena (Se acaba cansando uno de leer los man).

    Responder

    • jinetedeldragon
      Dic 19, 2009 @ 07:04:50

      Muchas gracias… Mi idea es mantener conceptos claros sin abundar en detalles, tener un breve know-how de las cosas que es lo que tanto les cuesta a quienes se inician en linux.

      Responder

  3. Alonso
    Mar 29, 2010 @ 13:58:07

    Jojojo muchas gracias, me ayudo bastante a resolver mi problema con la resolución :) .

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Archivos

mayo 2009
D L M X J V S
    Jun »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
A %d blogueros les gusta esto: