% Linux Installation and Getting Started    -*- TeX -*-
% xwindows.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".

% Traduccion realizada por Juan Jose Amor. Envie sus comentarios a:
%            Juan Jose Amor, 2:341/12.19 (FidoNet)
%            jjamor@gedeon.ls.fi.upm.es (InterNet)
% $Log: xwindows.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:06  rcamus
% Primera beta publica
%
%

\section{El sistema X~Window}\label{sec-xwindows}
\index{X~Window~System|(}
\index{X~Window~System!defined}
X~Windows es un enorme entorno gr\'afico para sistemas Unix, potente y tambi\'en
complejo. Originalmente fue desarrollado por el MIT, y desde entonces los
desarrolladores de sistemas comerciales han convertido a las X en un est\'andar
de las plataformas Unix. Pr\'acticamente todas las estaciones de trabajo Unix del
mundo utilizan X~Window en alguna de sus variantes.

\index{X11R6}
\index{XFree86}
Existe, desarrollada por un equipo de programadores inicialmente liderados por
David Wexelblat\footnote{Se puede contactar con David en Internet mediante la
direcci\'on {\tt dwex@XFree86.org}}, una implementaci\'on gratuita de las X~Windows
versi\'on 11, {\it release} 6 (X11R6) para sistemas Unix con 80386/80486/Pentium.
Esta implementaci\'on, llamada XFree86\footnote{XFree86 es marca registrada de
The XFree86 Project, Inc.}, se encuentra disponible en Unix x86 como System
V/386, 386BSD y por supuesto Linux. Incluye todos los binarios necesarios,
ficheros de soporte, librer\'{\i}as y utilidades.

Configurar y utilizar a fondo las X~Windows se sale de los objetivos de este
libro. Le animamos a leer {\em The X~Window System: A User's Guide}---vea el
ap\'endice~\ref{app-info} para m\'as informaci\'on sobre el libro. En esta secci\'on,
le daremos una descripci\'on de c\'omo instalar y configurar paso a paso XFree86 en
Linux, pero necesitar\'a completar la informaci\'on con otra disponible en la
documentaci\'on propia de XFree86 (documentaci\'on que comentaremos m\'as adelante).
Otra fuente interesante de informaci\'on es la {\em XFree86 HOWTO\/}.

\subsection{Requisitos de hardware}
\label{sec-xwindows-reqs}

\index{XFree86!hardware requirements for}
\index{XFree86!video chipsets supported by}
\index{hardware support!video card}
Al igual que la versi\'on XFree86 3.1 de Septiembre de 1994, est\'an 
soportados los siguientes ``chipsets''. La documentaci\'on que se incluye 
con su adaptador de video deber\'{\i}a especificar cu\'al es el 
``chipset'' que utiliza. Si est\'a a punto de comprarse una nueva tarjeta 
gr\'afica, conviene pedir al vendedor el modelo exacto de tarjeta y 
``chipset'' de video. Esto supondr\'a, casi siempre, recurrir al servicio 
t\'ecnico, pero normalmente los vendedores no pondr\'an inconvenientes. La 
mayor parte de los vendedores de PCs se limitan a decir que sus 
ordenadores tienen tarjetas gr\'aficas ``SVGA est\'andar'' que ``tiene 
que funcionar'' en su sistema. Expl\'{\i}queles que su software 
(nombrando a Linux y XFree86, por supuesto) no soporta todos los 
``chipsets'' y que usted necesita por eso informaci\'on m\'as detallada.

De todas formas, puede determinar su ``chipset'' ejecutando el programa {\tt
SuperProbe} inclu\'{\i}do con la distribuci\'on de XFree86. De esto hablamos m\'as
abajo.

Est\'an soportados los siguientes ``chipsets'' SVGA:
\begin{itemize}
\item    Tseng ET3000, ET4000AX, ET4000/W32
\item    Western Digital/Paradise PVGA1
\item    Western Digital WD90C00, WD90C10, WD90C11, WD90C24, WD90C30, WD90C31,
                    WD90C33
\item    Genoa GVGA
\item    Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000,
            TVGA9000i, TVGA9100B, TVGA9200CX, TVGA9320, TVGA9400CX, TVGA9420
\item    ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3,
        68800-6, 68800AX, 68800LX, 88800
\item    NCR 77C22, 77C22E, 77C22E+
\item    Cirrus Logic CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428,
                 CLGD5429, CLGD5430, CLGD5434, CLGD6205, CLGD6215,
                 CLGD6225, CLGD6235, CLGD6420
\item    Compaq AVGA
\item    OAK OTI067, OTI077
\item    Avance Logic AL2101
\item    MX MX68000, MX680010
\item    Video 7/Headland Technologies HT216-32
\end{itemize}

Tambi\'en est\'an soportados los siguientes, con acelerador:
\begin{itemize}
\item    8514/A (y cl\'onicos)
\item    ATI Mach8, Mach32
\item    Cirrus CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429,
           CLGD5430, CLGD5434, CLGD6205, CLGD6215, CLGD6225, CLGD6235
\item    S3 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964
\item    Western Digital WD90C31, WD90C33
\item    Weitek P9000
\item    IIT AGX-014, AGX-015, AGX-016
\item    Tseng ET4000/W32, ET4000/W32i, ET4000/W32p
\end{itemize}

Todas las tarjetas gr\'aficas que usan estos ``chipsets'' est\'an soportadas,
incluso para bus local Vesa o PCI.

El soporte incluye los modos monocrom\'aticos y de 256 colores, con la excepci\'on
de Avance Logic, MX y Video 7, que est\'an soportadas solo en 256 colores. Si su
tarjeta gr\'afica tiene suficiente memoria DRAM, la mayor parte de los
``chipsets'' anteriores tambi\'en est\'an soportados para los modos de 16 y 32 bits
por pixel (en concreto, algunas Mach32, P9000, S3 y Cirrus). Lo habitual, sin
embargo, es usar 8 bits por pixel, es decir, 256 colores.

El servidor monocrom\'atico tambi\'en soporta las tarjetas VGA gen\'ericas, la
Hercules, la Hyundai HGC1280, Sigma LaserView y Apollo. Para la Compaq AVGA,
solo est\'an soportadas 64Kb de memoria de v\'{\i}deo en el servidor monocrom\'atico, y
la GVGA no ha sido probada con m\'as de 64 Kb.

Indudablemente, esta lista seguir\'a creciendo conforme pase el
tiempo. Las notas que encontrar\'a junto a la versi\'on actual de XFree86
contendr\'an probablemente una completa lista de ``chipsets'' soportados
en ese momento.

Un problema que se encuentran con frecuencia los desarrolladores de
XFree86 es que algunos fabricantes de tarjetas gr\'aficas utilizan
mecanismos no est\'andares para determinar las frecuencias de reloj a
usar en la tarjeta. Algunos de esos fabricante tampoco editan
especificaciones que describan c\'omo programar la tarjeta, o exigen a
los desarrolladores que firmen un documento de no divulgaci\'on para
poder obtener la informaci\'on. Esto, obviamente, dificulta la libre
distribuci\'on del software de XFree86. Durante mucho tiempo esto ha
impedido trabajar con las tarjetas Diamond, pero desde la versi\'on 3.1
de XFree86, Diamond ya ha comenzado a colaborar con el equipo de
desarrollo para la realizaci\'on de {\tt drivers} para esas tarjetas.

La configuraci\'on que se sugiere para ejecutar XFree86 con Linux es una
m\'aquina 486 con 8 megabytes de RAM por lo menos, y una tarjeta gr\'afica
con un ``chipset'' de los listados antes. Para obtener un rendimiento
\'optimo, se sugiere utilizar una tarjeta acelerada, como las basadas en
el ``chipset'' S3. Usted debe comprobar sobre la documentaci\'on de
XFree86 que su tarjeta est\'a soportada antes de proceder al gasto que
supone el nuevo hardware. Se han comparado rendimientos de diversos
modelos de tarjetas, y sus resultados son enviados peri\'odicamente a
los grupos de {\tt news} USENET {\tt comp.windows.x.i386unix} y {\tt
comp.os.linux.misc}.

Como nota adicional, mi sistema personal con Linux es un 486DX2-66 con
20 megabytes de RAM y equipado con una tarjeta BLV con el ``chipset''
S3-864 y 2 megabytes de DRAM. He tenido rendimientos en X superiores a
los de una Sun Sparc IPX. El sistema Linux resulta unas siete veces
m\'as r\'apido que el Sparc IPX (para el curioso, XFree86-3.1 bajo Linux,
con esta tarjeta gr\'afica, consigue unos 171,000 {\tt xstones} mientras
que la Sparc IPX consigue solo 24,000). En general, XFree86 en un
sistema Linux con una tarjeta SVGA acelerada le dar\'a mucho m\'as
rendimiento que el que se encuentra en estaciones de trabajo Unix
comerciales (que suelen emplear solo ``framebuffers'').

\index{XFree86!RAM requirements for}
Su m\'aquina necesitar\'a al menos 4 megabytes de memoria f\'{\i}sica en RAM y 16 de
memoria virtual (por ejemplo, 8 megabytes en RAM y otros 8 en
swap). Recuerde que cuanta m\'as RAM tenga, menos tendr\'a el sistema que
acudir al disco duro cuando no hay memoria suficiente. Dado que el
{\it swapping} es inherentemente lento, tener 8 megabytes de RAM o m\'as
es necesario si quiere correr XFree86 de forma confortable. Un sistema
con 4 megabytes de RAM correr\'a {\em mucho\/} m\'as lento (hasta 10
veces) que uno con 8 megabytes o m\'as.

\subsection{Instalaci\'on de XFree86}
\index{XFree86!installing}
La distribuci\'on en binario de XFree86 para Linux puede encontrarse en
muchos servidores de FTP. En {\tt sunsite.unc.edu} se encuentra en el
directorio {\tt /pub/Linux/X11}. (En el momento de escribir este
libro, la versi\'on era la 3.1; aunque periodicamente aparecen nuevas
versiones).

Es com\'un que usted haya obtenido XFree86 como parte de una
distribuci\'on de Linux, en cuyo caso no necesitar\'a obtener el software
del servidor anterior.

Si en cambio los obtiene por esta v\'{\i}a, la siguiente tabla le informar\'a
de los ficheros de los que consta la distribuci\'on XFree86-3.1.

Se requiere uno de los siguientes servidores:
\begin{center}
\small\begin{tabular}{lll} 
\hline
Fichero								& Descripci\'on				\\
\hline
{\tt XF86-3.1-8514.tar.gz}  		&  Servidor para tarjetas tipo 8514.\\
{\tt XF86-3.1-AGX.tar.gz}    		&  Servidor para tarjetas tipo AGX.\\
{\tt XF86-3.1-Mach32.tar.gz} 		&  Servidor para tarjetas tipo Mach32.\\
{\tt XF86-3.1-Mach8.tar.gz}   		& Servidor para tarjetas tipo Mach8.\\
{\tt XF86-3.1-Mono.tar.gz}    		& Servidor monocromo.\\
{\tt XF86-3.1-P9000.tar.gz}  		& Servidor para tarjetas tipo P9000.\\
{\tt XF86-3.1-S3.tar.gz}      		& Servidor para tarjetas tipo S3.\\
{\tt XF86-3.1-SVGA.tar.gz}    		& Servidor para tarjetas SVGA.\\
{\tt XF86-3.1-VGA16.tar.gz} 		& Servidor para VGA en 16 colores.\\
{\tt XF86-3.1-W32.tar.gz}     		& Servidor para tarjetas tipo ET4000/W32.\\
\hline
\end{tabular}\normalsize\rm
\end{center}

Adem\'as, son necesarios todos los ficheros siguientes:
\begin{center}
\small\begin{tabular}{lll} 
\hline
Fichero								& Descripci\'on\\
\hline
{\tt XF86-3.1-bin.tar.gz}    		& Binarios de X11R6.\\
{\tt XF86-3.1-cfg.tar.gz}    		& Ficheros de configuraci\'on para {\tt xdm}, {\tt xinit} y {\tt fs}.\\
{\tt XF86-3.1-doc.tar.gz}    		& Documentaci\'on y p\'aginas de manual.\\
{\tt XF86-3.1-inc.tar.gz}     		& Ficheros {\it include}.\\
{\tt XF86-3.1-lib.tar.gz}     		& Ficheros de soporte y librer\'{\i}as compartidas.\\
{\tt XF86-3.1-fnt.tar.gz}     		& Fuentes b\'asicas.\\
\hline
\end{tabular}\normalsize\rm
\end{center}

Los siguientes ficheros son opcionales:
\begin{center}
\small\begin{tabular}{lll} 
\hline
Fichero								& Descripci\'on     \\
\hline
{\tt XF86-3.1-ctrb.tar.gz}    		& Diversas contribuciones.\\
{\tt XF86-3.1-extra.tar.gz}   		& Otros servidores y binarios.\\
{\tt XF86-3.1-lkit.tar.gz}    		& Kit para personalizaci\'on de servidores.\\
{\tt XF86-3.1-fnt75.tar.gz}   		& Fuentes de 75 ppp.\\
{\tt XF86-3.1-fnt100.tar.gz} 		& Fuentes de 100 ppp. \\
{\tt XF86-3.1-fntbig.tar.gz}		& Otras fuentes (Kanji...).\\
{\tt XF86-3.1-fntscl.tar.gz}  		& Fuentes escalables (Speedo, Type1).\\
{\tt XF86-3.1-man.tar.gz}     		& P\'aginas de manual.\\
{\tt XF86-3.1-pex.tar.gz}     		& Binarios PEX y librer\'{\i}as.\\
{\tt XF86-3.1-slib.tar.gz}    		& Librer\'{\i}as est\'aticas de X.\\
{\tt XF86-3.1-usrbin.tar.gz}  		& {\it Daemons} que residen en /usr/bin.\\
{\tt XF86-3.1-xdmshdw.tar.gz} 		& Versi\'on de xdm para {\it shadow password}.\\
\hline
\end{tabular}\normalsize\rm
\end{center}

El directorio de XFree86 deber\'{\i}a contener los ficheros {\tt README} y otras
notas acerca de la instalaci\'on de la versi\'on actual.

Todo lo que se necesita para instalar XFree86 es obtener los ficheros
anteriores, crear el directorio {\tt /usr/X11R6} (como {\tt root}), y
desempaquetar los ficheros desde ese directorio con un comando como el
siguiente:
\begin{tscreen}
\# {\em gzip --dc XF86-3.1-bin.tar.gz $\mid$ tar xfB --} \\
\end{tscreen}
Recuerde que esos ficheros tar se empaquetan con directorios relativos a
{\tt /usr/X11R6}, con lo que es imprescindible desempaquetarlos en el lugar
indicado.

Despu\'es de desempaquetar los ficheros, necesitar\'a hacer un enlace del nombre
{\tt /usr/X11R6/bin/X} al servidor que vaya a utilizar. Por ejemplo, si desea
usar el servidor SVGA color, {\tt /usr/bin/X11/X} debe ser un enlace a
{\tt /usr/X11R6/bin/XF86\_SVGA}. Si desea utilizar el servidor monocromo en
su lugar, el enlace apuntar\'a a {\tt XF86\_MONO} con el comando
\begin{tscreen}
\# {\em ln --sf /usr/X11R6/bin/XF86\_MONO\ \ /usr/X11R6/bin/X}
\end{tscreen}

El mecanismo es similar para cualquier otro servidor que quiera usar.

Si no est\'a seguro de qu\'e servidor debe usar, o no conoce el
``chipset'' de su tarjeta gr\'afica, puede ejecutar {\tt SuperProbe}, un
programa del directorio {\tt /usr/X11R6/bin} (incluido en el fichero
{\tt XF86-3.1-bin}), que intentar\'a identificar su ``chipset'' y otras
informaciones. Anote su salida para posterior referencia.

Necesita asegurarse de que {\tt /usr/X11R6/bin} se encuentra en el
{\it path}. Esto puede hacerse editando el fichero {\tt /etc/profile}
o {\tt /etc/csh.login} (seg\'un qu\'e {\it shell} utilice). O simplemente
puede a\~nadir el directorio a su path personal modificando su propio
{\tt .bashrc} o {\tt .cshrc}.

Adem\'as, hay que asegurarse que {\tt /usr/X11R6/lib} es localizable por
{\tt ld.so}, el enlazador din\'amico. Para ello, a\~nada la l\'{\i}nea
\begin{tscreen}
/usr/X11R6/lib
\end{tscreen}
al fichero {\tt /etc/ld.so.conf}, y ejecute {\tt /sbin/ldconfig}, como
{\tt root}.

\subsection{Configuraci\'on de XFree86}
\index{XFree86!configuring}
Poner a punto XFree86 no suele ser dif\'{\i}cil. Sin embargo, si va a usar
manejadores de ``chipsets'' aun en desarrollo o desea obtener el mejor
rendimiento o resoluci\'on de una tarjeta aceleradora, en configurar a
la perfecci\'on XFree86 puede tardar bastante.

En esta secci\'on vamos a describir c\'omo crear y editar el fichero {\tt
XF86Config}, que configura al servidor. En muchos casos lo mejor es
comenzar con una configuraci\'on ``b\'asica'', de baja resoluci\'on, como
640x480 puntos, que es soportada por todas las tarjetas y
monitores. Una vez comprobado su funcionamiento a baja resoluci\'on,
puede pasar a modificar la configuraci\'on para explotar toda la
capacidad de su tarjeta de video.

Adem\'as de la informaci\'on que nosotros le damos, deber\'{\i}a leerse la
siguiente documentaci\'on:
\begin{itemize}
\item La documentaci\'on propia de XFree86 en {\tt
/usr/X11R6/lib/X11/doc} (viene con el paquete {\tt
XFree86-3.1-doc}). Debe prestar especial atenci\'on al fichero {\tt
README.Config}, que es un tutorial sobre la configuraci\'on de XWindows.
\item Diferentes ``chipsets'' de video tendr\'an sus propios ficheros
{\tt README} en el directorio anterior (por ejemplo, {\tt
README.Cirrus}). L\'ease el que le corresponda.
\item Las p\'aginas de manual para {\tt XFree86}.
\item Las p\'aginas de manual para {\tt XF86Config}.
\item Las p\'aginas de manual para el servidor concreto que utilice
(como {\tt XF86\_SVGA} o {\tt XF86\_S3}). 
\end{itemize}

\index{XFree86!configuration file for}
\index{/usr/X11R6/lib/X11/XF86Config@{\tt /usr/X11R6/lib/X11/XF86Config}}
\index{XF86Config@{\tt XF86Config}}
El fichero de configuraci\'on principal debe ser {\tt
/usr/X11R6/lib/X11/XF86Config}. Este fichero contiene informaci\'on
acerca del rat\'on, par\'ametros de la tarjeta gr\'afica, etc. El fichero
{\tt XF86Config.ed} es un ejemplo que incluye la distribuci\'on. Copie
este fichero como {\tt XF86Config} y modif\'{\i}quelo para su sistema.

Las p\'aginas de manual para {\tt XF86Config} explican el formato del
fichero con detalles. Lea ahora esas p\'aginas si aun no lo ha hecho.

Le vamos a presentar un ejemplo de {\tt XF86Config}. No tiene por qu\'e
coincidir con el ejemplo que incluye la distribuci\'on, pero en todo
caso tendr\'an estructura parecida.

\blackdiamond Observe que el formato del fichero puede cambiar algo
entre versiones de XFree86. La informaci\'on que le damos solo vale para
la versi\'on 3.1.

\blackdiamond Adem\'as, no debe limitarse a copiar este fichero e
intentar probarlo en su sistema. Si lo hace, y, por error, env\'{\i}a a su
monitor una frecuencia demasiado alta para \'el puede producir una
aver\'{\i}a. No ser\'{\i}a el primer caso. Esto ha ocurrido especialmente con
monitores de frecuencia fija. En definitiva, aseg\'urese de que su
fichero {\tt XF86Config} se corresponde con su hardware antes de
intentar utilizarlo.

Cada secci\'on del siguiente ejemplo de {\tt XF86Config} se enmarca en
un par de l\'{\i}neas {\tt Section \cparam{section-name}}\ldots{\tt
EndSection}. La primera parte del fichero es la secci\'on de {\tt
Ficheros}, que tendr\'a el siguiente aspecto:

\begin{tscreen}\begin{verbatim}
Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
\end{verbatim}\end{tscreen}
La l\'{\i}nea {\tt RgbPath} pone la ruta de acceso a la base de datos de
colores RGB para X11R6, y cada l\'{\i}nea {\tt FontPath} pone rutas de
acceso a directorios con fuentes X11. Por lo general no tendr\'a que
modificar estas l\'{\i}neas. Tan s\'olo debe comprobar que en los directorios
correspondientes se encuentran los ficheros implicados (fuentes, etc).

La siguiente secci\'on es {\tt ServerFlags}, que especifica algunos
``flags'' generales para el servidor. Por lo general la secci\'on suele
ir vac\'{\i}a.

\begin{tscreen}\begin{verbatim}
Section "ServerFlags"
# Si quita el comentario siguiente, la llegada de una se~nal al
# provocara el volcado de su memoria. Esto puede dejar la consola en
# un estado inutilizable pero el volcado puede servirle en la depuracion.
#    NoTrapSignals

# Quitando este comentario se desactiva la secuencia <Crtl><Alt><BS>
#    DontZap
EndSection
\end{verbatim}\end{tscreen}

La siguiente secci\'on es {\tt Keyboard}. Su significado es claro.

\begin{tscreen}\begin{verbatim}
Section "Keyboard"
    Protocol    "Standard"
    AutoRepeat  500 5
    ServerNumLock
EndSection
\end{verbatim}\end{tscreen}
Existen otras opciones. Vea su fichero {\tt XF86Config} si desea
modificar las opciones de teclado. Las que trae por defecto suelen
funcionar bien en casi todos los sistemas.

La siguiente secci\'on es {\tt Pointer}, y especifica los par\'ametros
para el rat\'on.
\begin{tscreen}\begin{verbatim}
Section "Pointer"

    Protocol    "MouseSystems"
    Device      "/dev/mouse"

# Los dos parametros siguientes solo son necesarios en algunos Logitech.
#    BaudRate   9600
#    SampleRate	150

# La siguiente opcion es util para ratones Microsoft de dos botones.
#    Emulate3Buttons

# La siguiente opcion es util para algunos ratones con tres botones Logitech.
#    ChordMiddle

EndSection
\end{verbatim}\end{tscreen}
Le pueden interesar las opciones {\tt Protocol} y {\tt Device}. {\tt
Protocol} especifica el {\em protocolo} que utiliza su rat\'on (no se
trata de su marca o modelo). Bajo Linux los protocolos v\'alidos son:
\begin{itemize}
\item {\tt BusMouse} 
\item {\tt Logitech}
\item {\tt Microsoft}
\item {\tt MMSeries}
\item {\tt Mouseman}
\item {\tt MouseSystems}
\item {\tt PS/2}
\item {\tt MMHitTab}
\end{itemize}
{\tt BusMouse} es el que se usa para rat\'on {\tt Logitech} en
bus. Observar que los ratones antiguos de Logitech usan {\tt Logitech}
pero los m\'as modernos usan {\tt Microsoft} o {\tt Mouseman}. Este es
un caso en el que el protocolo no coincide con la marca.

{\tt Device} especifica el dispositivo donde est\'a el rat\'on. En muchos
sistemas Linux se encuentra en {\tt /dev/mouse}, que suele ser un
enlace al dispositivo verdadero (puerto serie como {\tt /dev/cua0},
etc). Por supuesto, debe asegurarse de que el dispositivo que
corresponda est\'e en {\tt /dev}.

La siguiente secci\'on es {\tt Monitor}, que especifica las
caracter\'{\i}sticas de su pantalla TRC. La secci\'on {\tt Monitor} de {\tt
XF86Config} puede no ser \'unica, como sucede con otras secciones. Es
\'util si hay varios monitores conectados al sistema, o si se quiere
usar el mismo {\tt XF86Config} en diferentes configuraciones
hardware. Por lo general, sin embargo, solo necesitar\'a una secci\'on
{\tt Monitor}.

\begin{tscreen}\begin{verbatim}
Section "Monitor"

    Identifier  "CTX 5468 NI"

    # !! Estos valores son validos solo para un monitor "CTX 5468 NI"
    # No intente usarlo en su monitor si no es este mismo.

    Bandwidth    60
    HorizSync    30-38,47-50
    VertRefresh  50-90

    # Modos: Nombre     reloj    horiz                vert 

    ModeLine "640x480"  25       640 664 760 800      480 491 493 525
    ModeLine "800x600"  36       800 824 896 1024     600 601 603 625
    ModeLine "1024x768" 65       1024 1088 1200 1328  768 783 789 818

EndSection
\end{verbatim}\end{tscreen}

La l\'{\i}nea {\tt Identifier} se usa para dar a la secci\'on un
nombre. Puede ser cualquier cadena de caracteres y se usar\'a despu\'es
para referirse a ese monitor.

{\tt HorizSync} es el valor de frecuencia de sincronismo horizontal
v\'alida, en kHz. Si tiene un monitor ``multisync'', puede tratarse de
un rango (o diversos rangos separados por comas). Si se trata de un
monitor de frecuencia fija, ser\'a un conjunto discreto de valores como
el siguiente:
\begin{tscreen}\begin{verbatim}
    HorizSync    31.5, 35.2, 37.9, 35.5, 48.95
\end{verbatim}\end{tscreen}
El manual de su monitor deber\'{\i}a incluir estos datos en las
especificaciones t\'ecnicas. Si no tiene esta informaci\'on, contacte con
el vendedor o fabricante para obtenerla. Por supuesto, hay otras
fuentes de informaci\'on.

{\tt VertRefresh} especifica las frecuencias de refresco vertical
v\'alidas (o sincronismo vertical), en Hz. Como {\tt HorizSync} puede
ser uno o m\'as rangos o valores discretos. Tambi\'en deben indicarse en
su manual.

Los dos par\'ametros anteriores solo se utilizan para comprobar que los
modos gr\'aficos pedidos van a ser tolerados por su monitor. Esos modos
se especifican en las entradas {\tt Modeline} que tienen el formato
siguiente:
\begin{tscreen}
ModeLine \cparam{nombre} \cparam{reloj} \cparam{valores-horiz} \cparam{valores-vert}
\end{tscreen}
\cparam{nombre} es un nombre cualquiera que le damos al modo. 
\cparam{reloj} es la frecuencia de reloj o ``dot clock'' asociada al 
modo. Se suele especificar siempre en Mhz, y es la frecuencia de 
env\'{\i}o de pixels al monitor para esa resoluci\'on. 
\cparam{valores-horiz} y \cparam{valores-vert} son cuatro n\'umeros que 
especifican cu\'ando el haz de electrones del monitor debe dispararse y 
cu\'ando se env\'{\i}an los pulsos de sincronismo.

Se preguntar\'a c\'omo determinar esos valores para su monitor. El fichero
{\tt Videomodes.doc}, incluido en la distribuci\'on de XFree86 describe
en detalle c\'omo obtener los valores requeridos. En primer lugar,
\cparam{reloj} debe corresponderse con un valor de los que pueda
producir su tarjeta de video. Por lo tanto solo usar\'a modos con
valores de reloj soportados.

En la distribuci\'on se incluyen dos ficheros que pueden darle los datos
para {\tt Modeline} de su monitor. Estos ficheros son {\tt modeDB.txt}
y {\tt Monitors}, ambos en {\tt /usr/X11R6/lib/X11/doc}.

Deber\'{\i}a comenzar con valores para el est\'andar VESA, que la mayor parte
de los monitores soportan. Estos valores est\'an incluidos en {\tt
modeDB.txt}. En este fichero encontrar\'a entradas como
\begin{tscreen}\begin{verbatim}
# 640x480@60Hz Non-Interlaced mode
# Horizontal Sync = 31.5kHz
# Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
#
# name        clock   horizontal timing     vertical timing      flags
 "640x480"     25.175  640  664  760  800    480  491  493  525
\end{verbatim}\end{tscreen}
Esta es una temporizaci\'on est\'andar VESA para modo 640x480. Utiliza un
reloj de 25.175, que debe ser soportado por la tarjeta (esto lo
veremos luego). Para incluir esta entrada en el fichero {\tt
XF86Config} usar\'{\i}a la l\'{\i}nea
\begin{tscreen}
ModeLine "640x480"  25.175\ \ 640 664 760 800\ \ 480 491 493 525
\end{tscreen}
Observe que el argumento \cparam{nombre} (en este caso,
{\tt\verb+"640x480"+}) es una cadena de caracteres arbitraria, aunque
se suele seguir la convenci\'on de indicar la resoluci\'on del modo.

Para cada {\tt Modeline} indicado, el servidor comprobar\'a que sus
valores caen dentro de los rangos permitidos de frecuencias
(especificados antes), anulando el modo si no ocurre
as\'{\i}. Principalmente, el valor de reloj no debe ser mayor que el
indicado en {\tt Bandwidth}. Sin embargo, usar valores ligeramente
superiores no suele dar problemas.

Si los tiempos est\'andares en VESA no le funcionan correctamente (lo
sabr\'a cuando despu\'es los pruebe) mire los ficheros {\tt modeDB.txt} y
{\tt Monitors}, que incluyen valores espec\'{\i}ficos para muchos modelos
de monitores. Puede crear entradas {\tt Modeline} a partir de lo que
vea en estos ficheros. Aseg\'urese de que solo usa valores v\'alidos en su
monitor. Vea que muchos monitores de 14 o 15 pulgadas no soportan
modos de alta resoluci\'on como 1024x768 con se\~nales de reloj
lentas. Esto significa que si no encuentra modos de alta resoluci\'on
para su monitor en esos ficheros, no podr\'a usar dicha resoluci\'on.

Si se encuentra perdido, y no encuentra ning\'un modo que funcione en su
monitor, puede seguir las instrucciones de {\tt VideoModes.doc}, que
le ayudar\'an a calcular las entradas {\tt ModeLine} adecuadas a partir
de las especificaciones que se digan en el manual de su monitor. 
El mismo fichero {\tt VideoModes.doc} explica tambi\'en otros aspectos
del servidor de XFree86 como el formato de la directiva {\tt ModeLine}.

Por \'ultimo, si obtiene valores para {\tt ModeLine} que son aceptables
pero no del todo correcto, puede modificarlos ligeramente para obtener
el resultado deseado. Por ejemplo, si cuando ejecuta XFree86 la imagen
se desplaza ligeramente, o parece girar, puede seguir las
instrucciones de {\tt VideoModes.doc} para intentar corregir esas
deficiencias. Adem\'as, utilice tambi\'en los propios controles del
monitor. Muchas veces es necesario ajustarlos despu\'es de cambiar de
modo gr\'afico. Tener esos controles en la parte frontal del monitor le
har\'a la vida m\'as f\'acil.

\blackdiamond Nunca debe usar valores de tiempo o de {\tt Modeline}
pensados para monitores diferentes al suyo. Si lo intenta hacer, y
env\'{\i}a al monitor una frecuencia para la que no fu\'e dise\~nado, puede
producirle una aver\'{\i}a.

La siguiente secci\'on del fichero {\tt XF86Config} es {\tt Device}, que
especifica los par\'ametros de su tarjeta gr\'afica. Por ejemplo,
\begin{tscreen}\begin{verbatim}
Section "Device" 
        Identifier "#9 GXE 64"

        # Todavia nada; a~nadiremos los valores despues.

EndSection
\end{verbatim}\end{tscreen}

Esta secci\'on establece las propiedades de su tarjeta gr\'afica. {\tt
Identifier} es una cadena de caracteres usada para identificar su
tarjeta, cadena que usar\'a para referirse a las caracter\'{\i}sticas que en
esta secci\'on se detallen.

Inicialmente no necesita incluir nada m\'as a la secci\'on {\tt Device}
que la identificaci\'on de la tarjeta. Esto es as\'{\i} pues usaremos el
servidor X para probar las propiedades de su tarjeta, para incluirlas
luego en esta secci\'on. El servidor X es capaz de obtener el
``chipset'', ``RAMDAC'' y memoria RAM de su tarjeta.

Antes de hacer esto, sin embargo, necesitamos terminar el fichero {\tt
XF86Config}. La siguiente secci\'on es {\tt Screen}, que especifica qu\'e
combinaci\'on monitor/tarjeta usar para un servidor concreto.

\begin{tscreen}\begin{verbatim}
 Section "Screen"
     Driver     "Accel"
     Device     "#9 GXE 64"
     Monitor    "CTX 5468 NI"
     Subsection "Display"
         Depth      16
         Modes      "1024x768" "800x600" "640x480"
         ViewPort   0 0
         Virtual    1024 768
     EndSubsection
 EndSection
\end{verbatim}\end{tscreen}

La l\'{\i}nea {\tt Driver} indica qu\'e servidor X utiliza. Los valores
v\'alidos son:
\begin{itemize}
\item {\tt Accel}: Para servidores {\tt XF86\_S3}, {\tt XF86\_Mach32}, {\tt XF86\_Mach8},
{\tt XF86\_8514}, {\tt XF86\_P9000}, {\tt XF86\_AGX}, y {\tt XF86\_W32};
\item {\tt SVGA}: Para el servidor {\tt XF86\_SVGA};
\item {\tt VGA16}: Para el servidor {\tt XF86\_VGA16};
\item {\tt VGA2}: Para el servidor {\tt XF86\_Mono};
\item {\tt Mono}: Para manejadores monocrom\'aticos no VGA que se
encuentran en los servidores {\tt XF86\_Mono} y {\tt XF86\_VGA16}.
\end{itemize}
Debe asegurarse de que {\tt /usr/X11R6/bin/X} es un enlace simb\'olico
al servidor que va a usar.

La l\'{\i}nea {\tt Device} especifica el valor {\tt Identifier} de la
secci\'on {\tt Device} que corresponda a la tarjeta de video que se va a
usar con este servidor. Antes, hemos creado una secci\'on {\tt Device}
con la l\'{\i}nea
\begin{tscreen}\begin{verbatim}
Identifier "#9 GXE 64"
\end{verbatim}\end{tscreen}
As\'{\i} pues, utilizaremos {\tt\verb+"#9 GXE 64"+} en la l\'{\i}nea {\tt
Device} de aqu\'{\i}. 

De forma parecida, la l\'{\i}nea {\tt Monitor} especifica el nombre de la
secci\'on {\tt Monitor} que se va a usar en este servidor. Aqu\'{\i},
{\tt\verb+"CTX 5468 NI"+} es el identificador {\tt Identifier}
utilizado en la secci\'on {\tt Monitor} vista antes.

{\tt\verb+Subsection "Display"+} define distintas caracter\'{\i}sticas del
XFree86 con su particular combinaci\'on de monitor y tarjeta gr\'afica. El
fichero {\tt XF86Config} describe todas las opciones en detalle. La
mayor\'{\i}a no son necesarias para que el sistema funcione.

Las opciones que deber\'{\i}a conocer son:
\begin{itemize}
\item {\tt Depth}. Define el n\'umero de bits por pixel (o planos de
color), que normalmente valdr\'a 8 (supone 256 colores). Para el
servidor {\tt VGA16} se usar\'a una profundidad de 4, y para el
monocromo, una profundidad de 1. Si se utiliza una tarjeta acelerada
con suficiente memoria, se puede subir la profundidad a 16, 24 o
32. Si le da problemas, vuelva a profundidad 8 e intente corregir el
problema despu\'es.

\item {\tt Modes}. Es la lista de modos de video que estar\'an entre los
definidos con {\tt ModeLine} para su monitor. Los nombres usados antes
para identificarlos ( {\tt\verb+"1024x768"+}, etc) se usar\'an ahora
para expresar los modos de la siguiente manera:
\begin{tscreen}\begin{verbatim}
         Modes    "1024x768" "800x600" "640x480"
\end{verbatim}\end{tscreen}
De esta forma, XFree86 intentar\'a arrancar en el primero de los
modos. Una vez que ha arrancado, con las teclas
\key{ctrl}-\key{alt}-\key{numeric +} y
\key{ctrl}-\key{alt}-\key{numeric -} podr\'a cambiar a otro modo. 

La mejor forma de empezar, cuando se est\'a configurando XFree86, es
usar modos de baja resoluci\'on (como 640x480) que suelen funcionar
siempre. Una vez que se tenga una configuraci\'on b\'asica que va bien,
puede pasarse a modificar {\tt XF86Config} para soportar resoluciones mayores.

\item {\tt Virtual}. Pone el tama\~no del \'area de trabajo
virtual. XFree86 es capaz de usar la memoria sobrante de su tarjeta
gr\'afica para extender el tama\~no de su \'area de trabajo. Cuando mueve el
rat\'on a extremos de la pantalla, ver\'a como la pantalla se desplaza,
accediendo as\'{\i} a todo el \'area virtual. As\'{\i} pues, si usted trabaja con
una resoluci\'on inferior, como 800x600 y pone un \'area de 1024x768
(propia para 1 Mbyte de DRAM y 8 bits por pixel) podr\'a usar un \'area de
trabajo m\'as grande que la que cabe en pantalla.

El mecanismo {\tt Virtual} resulta interesante para aprovechar toda la
memoria de la tarjeta gr\'afica, pero es limitado. Si quiere usar un
\'area de trabajo virtual, el autor recomienda usar las facilidades que
al respecto dan gestores de ventanas como {\tt fvwm}. El mecanismo
aqu\'{\i} se implementa a base de ocultar ventanas, etc. en lugar de ocupar
toda la memoria de la tarjeta. Para m\'as detalle, vea las p\'aginas de
manual de {\tt fvwm}, gestor de ventanas que suelen traer los sistemas
Linux por defecto.

\item {\tt ViewPort}. Si usted utiliza la opci\'on {\tt Virtual}
descrita antes, puede usar {\tt ViewPort} para indicar en qu\'e
coordenadas virtuales comenzar XFree86. Se suele usar {\tt ViewPort 0
0} que pone el \'area de trabajo en la esquina superior izquierda. Pero
si no se indica se pondr\'a centrado, algo que quiz\'as le interese m\'as.

\end{itemize}

Hay muchas otras opciones en esta secci\'on; vea las p\'aginas de manual
para {\tt XF86Config} para m\'as detalle. En la pr\'actica no son
necesarias esas otras opciones para que funcione el sistema.

\subsection{Introducci\'on de los datos de la tarjeta gr\'afica}

Su fichero {\tt XF86Config} est\'a ya casi listo para usar, aunque aun falta
la informaci\'on de su tarjeta gr\'afica. Lo que vamos a hacer ahora es
usar el servidor X para obtener la informaci\'on que falta, e
introducirla en {\tt XF86Config}.

A veces se puede encontrar esa informaci\'on en los ficheros {\tt
modeDB.txt}, {\tt AccelCards} y {\tt Devices}, que se encuentran en
{\tt /usr/X11R6/lib/X11/doc}. Adem\'as, existen numerosos ficheros {\tt
README} para algunos ``chipsets''. Debe mirar esos ficheros para
buscar su tarjeta y usar los valores que aparezcan en ellos (de reloj,
tipo de ``chipset'' y otros) en la secci\'on correspondiente de {\tt
XF86Config}. Si falta alguna informaci\'on puede intentar obtenerla con
el procedimiento siguiente.

En estos ejemplos vamos a ver c\'omo configurar\'{\i}amos el sistema para una
tarjeta \#9 GXE 64, que usa el servidor {\tt XF86\_S3}. Es la tarjeta
que utiliza el autor, aunque el procedimiento es igualmente aplicable
a cualquier otra.

Lo primero que debe hacerse es determinar el ``chipset'' que lleva la
tarjeta. Ejecutando {\tt /usr/X11R6/bin/SuperProbe} lo averiguaremos,
aunque tambi\'en hay que conocer el nombre con el que el servidor X
conoce a ese ``chipset''. Para conseguir esto \'ultimo, ejecutar:
\begin{tscreen}
X -showconfig
\end{tscreen}
Esto le dar\'a los nombres de ``chipsets'' que conoce el servidor X
(esto tambi\'en se encuentra en las p\'aginas de manual). Por ejemplo, con
el servidor {\tt XF86\_S3} obtendremos:
\begin{tscreen}\begin{verbatim}
XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux 
Configured drivers:
  S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
      mmio_928, s3_generic
\end{verbatim}\end{tscreen}

As\'{\i} pues los nombres de ``chipsets'' que este servidor tiene son {\tt
mmio\_928} y {\tt s3\_generic}. En la p\'agina de manual para {\tt
XF86\_S3} encontrar\'a la descripci\'on de estos ``chipsets'' junto a
algunas tarjetas que los utilizan. Para la \#9 GXE 64 el ``chipset''
es {\tt mmio\_928}.

Si no conoce qu\'e ``chipset'' usar, el servidor X puede intentar
averiguarlo. Para ello, ejecutar
\begin{tscreen}
\verb!X -probeonly > /tmp/x.out 2>&1 !
\end{tscreen}
si usa {\tt bash} como shell. Si usa {\tt csh}, intente:
\begin{tscreen}
\verb!X -probeonly &> /tmp/x.out !
\end{tscreen}

El comando anterior debe ejecutarse solo cuando no hay otras
actividades en el sistema (otros usuarios, procesos, etc.) Este
comando obtiene tambi\'en los valores para los relojes y si el sistema
est\'a cargado se calcular\'an incorrectamente.

Por ejemplo, esto es lo que sale para la tarjeta del autor:
\begin{tscreen}
\verb!XFree86 Version 3.1 / X Window System !\\
\verb!(protocol Version 11, revision 0, vendor release 6000) !\\
\verb!Operating System: Linux  !\\
\verb!Configured drivers: !\\
\verb!  S3: accelerated server for S3 graphics adaptors (Patchlevel 0) !\\
\verb!      mmio_928, s3_generic !\\
{\em algunas l\'{\i}neas borradas \ldots} \\
\verb!(--) S3: card type: 386/486 localbus !\\
\verb!(--) S3: chipset:   864 rev. 0 !\\
\verb!(--) S3: chipset driver: mmio_928 !
\end{tscreen}
Aqu\'{\i} vemos los dos ``chipsets'' v\'alidos ({\tt mmio\_928} y {\tt
s3\_generic}) del servidor. Este prob\'o ambos y determin\'o que la tarjeta
usa el ``chipset'' {\tt mmio\_928}.

En la secci\'on {\tt Device} del fichero {\tt XF86Config}, a\~nada una
l\'{\i}nea {\tt Chipset} con el nombre obtenido antes. Por ejemplo,
\begin{tscreen}\begin{verbatim}
Section "Device" 
        # Este es el identificador que le pusimos...
        Identifier "#9 GXE 64"  
        # A~nadimos esta linea:
        Chipset "mmio_928"
EndSection
\end{verbatim}\end{tscreen}

Ahora hay que determinar las frecuencias de reloj. Cada una de \'estas es
simplemente la frecuencia con la que la tarjeta puede enviar p\'{\i}xeles
al monitor. Como ya sabemos, estas frecuencias dependen de la
resoluci\'on usada.

En primer lugar debe echar un vistazo a los ficheros mencionados antes
(como {\tt modeDB.txt}) y ver si los relojes de su tarjeta est\'an
listados. En su caso ver\'a una lista de 8 \'o 16 valores, todos ellos
dados en Mhz. Por ejemplo, en {\tt modeDB.txt} encontramos lo
siguiente para la tarjeta Cardinal ET4000:
\begin{tscreen}\begin{verbatim}
# chip    ram   virtual   clocks                           default-mode  flags
 ET4000   1024  1024 768   25  28  38  36  40  45  32   0  "1024x768"    
\end{verbatim}\end{tscreen}
Como vemos, los relojes son 25, 28, 38, 36, 40, 45, 32 y 0 MHz. 

En la secci\'on {\tt Devices} del fichero {\tt XF86Config} debe a\~nadir
una l\'{\i}nea {\tt Clocks} como la siguiente (para nuestro ejemplo):
\begin{tscreen}\begin{verbatim}
        Clocks 25 28 38 36 40 45 32 0
\end{verbatim}\end{tscreen}
Esto estar\'a en la secci\'on {\tt Devices}, despu\'es de {\tt
Chipset}. Observe la importancia del orden de los relojes. No los cambie.

Si no encuentra las frecuencias de reloj para su tarjeta en los ficheros,
el servidor X tambi\'en los puede intentar averiguar. Con el comando ya
visto {\tt X -probeonly} obtendr\'a una l\'{\i}nea como la siguiente:
\begin{tscreen}\begin{verbatim}
(--) S3: clocks:  25.18  28.32  38.02  36.15  40.33  45.32  32.00  00.00
\end{verbatim}\end{tscreen}
Con esta l\'{\i}nea podemos hacer la l\'{\i}nea {\tt Clocks} en {\tt
XF86Config}. Si hay muchos valores y no caben en una l\'{\i}nea puede crear
m\'as l\'{\i}neas {\tt Clock}, pero respete el orden de todas formas.

Aseg\'urese de que no hay ninguna l\'{\i}nea {\tt Clocks} en la secci\'on {\tt
Devices} cuando use el comando {\tt X -probeonly} puesto que en este
caso no har\'a pruebas reales de los relojes, sino que probar\'a solo los
valores que haya en el fichero {\tt XF86Config}.

Observe que algunas tarjetas aceleradas tienen chip de reloj
programable (vea las p\'aginas de manual de  {\tt XF86\_Accel} para m\'as
detalle. Estas son aplicables a las tarjetas S3, AGX y XGA-2). Este
chip viene a permitir que el servidor X diga a la tarjeta qu\'e relojes
usar. Si este es el caso, no debe haber una lista de valores v\'alidos
de reloj en el fichero {\tt XF86Config}. Si no, la lista de valores de
reloj que devuelve {\tt X -probeonly} contendr\'a solo uno o dos valores
discretos de reloj, dejando el resto copiados de los primeros o a cero.

Para placas con reloj programable, deber\'a usar una l\'{\i}nea {\tt
ClockChip} en lugar de {\tt Clocks}. Esta l\'{\i}nea da el nombre del chip
correspondiente a la tarjeta. Esos nombres se encuentran en las
p\'aginas de manual. Por ejemplo, en el fichero {\tt README.S3}, veremos
que diversas tarjetas S3-864 utilizan un chip ``ICD2061A'', y deber\'a
existir la l\'{\i}nea
\begin{tscreen}
\verb!        ClockChip "icd2061a" !
\end{tscreen}
en lugar de la l\'{\i}nea {\tt Clocks} en el fichero {\tt XF86Config}. Como
sucede con {\tt Clocks}, la l\'{\i}nea formar\'a parte de la secci\'on {\tt
Devices} e ir\'a a continuaci\'on de {\tt Chipset}.

De manera similar, algunas tarjetas aceleradas requieren que se
especifique el tipo de chip RAMDAC del fichero {\tt XF86Config}, con
una l\'{\i}nea {\tt Ramdac}. Esta opci\'on se describe en {\tt
XF86\_Accel}. Normalmente, el servidor X ya se ocupa de tomar un valor
correcto para el RAMDAC.

Algunas tarjetas gr\'aficas necesitan que se especifiquen diversas
opciones en la secci\'on {\tt Devices}. Estas opciones se describen en
ficheros como {\tt README.cirrus} o p\'aginas de manual, y se integran
en una l\'{\i}nea {\tt Option} del fichero {\tt XF86Config}. Por ejemplo,
una tarjeta \#9 GXE 64 necesita dos opciones:
\begin{tscreen}
\verb!        Option "number_nine" !\\
\verb!        Option "dac_8_bit" !
\end{tscreen}
Normalmente, el servidor X funcionar\'a sin las opciones, pero conviene
ponerlas para aumentar el rendimiento de la tarjeta. Hay muchas
opciones y muchas particulares de cada tarjeta. Para utilizarlas, mire
los ficheros del directorio {\tt /usr/X11R6/lib/X11/doc}.

As\'{\i} pues, cuando haya acabado, tendr\'a una secci\'on {\tt Devices} como
la siguiente:
\begin{tscreen}
\verb!Section "Device"  !\\
\verb!        # Solo valida para la tarjeta #9 GXE 64! !\\
\verb!        Identifier "#9 GXE 64" !\\
\verb!        Chipset "mmio_928" !\\
\verb!        ClockChip "icd2061a" !\\
\verb!        Option "number_nine" !\\
\verb!        Option "dac_8_bit" !\\
\verb!EndSection !
\end{tscreen}
Observe que en muchos casos se requiere una l\'{\i}nea {\tt Clocks} en
lugar de {\tt Clockchip}, etc. Lo anterior es s\'olo un ejemplo.

Hay otras opciones para la secci\'on {\tt Devices}. Los detalles los
ver\'a en las p\'aginas de manual correspondientes.

\subsection{Funcionamiento de XFree86}

Con el fichero {\tt XF86Config} terminado, puede probar ya el servidor
X. En primer lugar, debe asegurarse de que {\tt /usr/X11R6/bin} est\'a
en el {\it path}.

El comando para iniciar XFree86 es 
\begin{tscreen}
startx
\end{tscreen}
Que es un programa que llama a {\tt xinit} (en el caso de que usted
haya usado {\tt xinit} para iniciar XWindows en otros sistemas).

Este comando arrancar\'a el servidor X y ejecutar\'a los comandos
encontrados en el fichero {\tt .xinitrc} de su directorio {\it
home}. {\tt .xinitrc} es un {\it shell-script} que contiene los
clientes a ejecutar. Si no existe se buscar\'a un equivalente en {\tt
/usr/X11R6/lib/X11/xinit/xinitrc}.

Un t\'{\i}pico {\tt .xinitrc} ser\'{\i}a el siguiente:
\begin{tscreen}\begin{verbatim}
#!/bin/sh

xterm -fn 7x13bold -geometry 80x32+10+50 &
xterm -fn 9x15bold -geometry 80x34+30-10 &
oclock -geometry 70x70-7+7 &
xsetroot -solid midnightblue &

exec twm 
\end{verbatim}\end{tscreen}
Este script arrancar\'a dos clientes {\tt xterm} y un {\tt oclock}, y
pondr\'a el fondo (root window) en color {\tt midnightblue}. Entonces
arrancar\'a el gestor de ventanas {\tt twm}. Observe que {\tt twm} se
ejecuta con la sentencia {\tt exec}. Esto quiere decir que el proceso
de {\tt xinit} ser\'a reemplazado por {\tt twm}. Por lo tanto, al
ordenar la terminaci\'on de {\tt twm} desde los men\'us el servidor X
tambi\'en terminar\'a. Para hacerlo pulse el bot\'on 1 del rat\'on sobre el
fondo de la pantalla (no en las ventanas) y ver\'a un men\'u con la opci\'on
de terminar {\tt twm} entre otras.

Aseg\'urese que el \'ultimo comando de {\tt .xinitrc} se arranca con {\tt
exec}, y no se le pone en {\it background} (con el ``\&''). Si no, el
servidor X terminar\'a tan pronto se arranquen los clientes de {\tt .xinitrc}.

Otra forma de salir de X es pulsando a la vez
\key{ctrl}-\key{alt}-\key{backspace}. Esto detendr\'a el servidor X y se
saldr\'a del sistema XWindows.

Lo anterior es una configuraci\'on de desktop muy sencilla. Hay otros
muchos programas X disponibles que pueden especificarse en el fichero
{\tt .xinitrc}. Por ejemplo, puede usar {\tt fvwm} en lugar de {\tt
twm}, para obtener un desktop virtual, posibilidad de personalizar
colores, fuentes, ventanas... En principio puede parecer muy simple
el sistema XWindows, aunque con las personalizaciones se descubre lo
potente que es.

Si usted es nuevo en X~Windows, le sugerimos que consulte libros como
{\em The X~Window System: A User's Guide\/}. Aqu\'{\i} se tratan los temas
de X~Windows en profundidad, que se completar\'an con las p\'aginas de
manual para {\tt xterm}, {\tt twm}, etc.

\subsection{Ejecuci\'on con problemas}

No siempre le saldr\'a perfecta la primera prueba con el servidor
X. Suele venir causado por un error en el fichero {\tt
XF86Config}. Normalmente, los valores de reloj del monitor o de la
tarjeta han sido mal puestos. Si su pantalla ``gira'' o los lados
est\'an difusos, se trata de un error en los valores para los relojes
del monitor. Otra fuente de problemas es especificar mal el
``chipset'' de la tarjeta de video as\'{\i} como otras opciones de la
secci\'on {\tt Device} de {\tt XF86Config}. Compruebe tambi\'en que el
nombre {\tt /usr/X11R6/bin/X} es un enlace simb\'olico al servidor X que
quiera usar.

Si todo lo anterior no le sirve, prueba a iniciar X en modo ``bare'',
o sea, con el comando:
\begin{tscreen}
\verb!X > /tmp/x.out 2>&1 !
\end{tscreen}
A continuaci\'on puede {\it matar} el servidor X (con la combinaci\'on de
teclas \key{ctrl}-\key{alt}-\key{backspace}) y ver el contenido del
fichero {\tt /tmp/x.out}, en el que el servidor X habr\'a puesto todo
tipo de avisos y errores, como los correspondientes a valores de reloj
no encontrados en la tarjeta, etc.

El fichero {\tt VideoModes.doc} incluido en la distribuci\'on contiene
muchas ayudas para calcular los valores para su fichero {\tt XF86Config}.

Recuerde que puede conmutar entre modos de video con las combinaciones
de teclas \key{ctrl}-\key{alt}-\key{numeric +} y
\key{ctrl}-\key{alt}-\key{numeric -}. Si la m\'axima resoluci\'on no sale
bien, es porque alguna parte del fichero {\tt XF86Config} se ha puesto mal.

Compruebe tambi\'en los mandos de tama\~no de imagen del monitor. Muchas
veces hay que retocarlos cuando se entra en X. Por ejemplo, si la
pantalla se ve desplazada, act\'ue sobre el mando correspondiente.

El el grupo de {\it news USENET} {\tt comp.windows.x.i386unix}
encontrar\'a m\'as ayuda sobre la utilizaci\'on de XFree86. Puede ser una
buena idea comprobar si en el grupo alguien ha enviado mensajes con
configuraciones para un sistema similar al suyo.

\index{X~Window~System|)}
