Preparación para el examen LPI 101

Tema 110.1
Instalando y configurando el entorno gráfico

Créditos y licencia de uso

Coordinación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Traducción:

Juan Maria Gil (Smooth) yo@juanmaria.com

Maquetación:

Manuel Guillán (xLekOx) lpi@xlekox.org

Versión 1.0 (02-03-2005 14:00)

Distribuido por FreeUOC (www.freeuoc.org) bajo licencia: Attribution-NonCommercial-ShareAlike2.0 de commons creative

http://creativecommons.org/licenses/by-nc-sa/2.0/

ÍNDICE

Índice de contenido

Tema 110.1
Instalando y configurando el entorno gráfico	1

Créditos y licencia de uso	2

ÍNDICE	3

Introducción	4

El entorno X	5

Requerimientos de Hardware	5

Instalando Xfree86	6

Configurando el sistema X Window	7

El fichero XF86Config	10

Controlando X	14

Iniciando X	15

Bibliografia y enlaces recomendados	16

Introducción

En este capítulo se verá como instalar y configurar el entorno gráfico de los sistemas GNU/Linux, los proyecto Xfree86 y x.org (más actualmente) son los principales proveedores. Se verá como se estructura el fichero de configuración, monitor, tarjeta gráfica, fuentes...

Nota: Este tema puede tener contenidos que a fecha de hoy estén desfasados o cambiados.

Este tema tiene un peso (importancia) de 5 de cara al examen final de la certificación LPI 101. El total de la suma de pesos de todos los temas es de 106.

El entorno X

El sistema X Window fue desarrollado como el componente de visualización del Proyecto Athena en el MIT. El sistema X Window es un entorno gráfico amplio y potente para los sistemas UNIX. Desde que aparecieron las primeras versiones de X Window muchos distribuidores de UNIX la incorporaron a sus plataformas. La amplia disponibilidad de X Window en Unix ha hecho que se convierta en la interfaz gráfica estándar para los sistemas Unix. Prácticamente todos los sistemas Unix del mundo ruedan alguna variedad del sistema X Window.

La implementación del sistema X Window en Linux se basa en la adaptación distribuible de X Window versión 11 release 6 (habitualmente conocida como X11R6). Esta adaptación de libre distribución se conoce como Xfree86 para las familias de procesadores 08386/80486 y Pentium. Desde su adaptación inicial, Xfree86 ha estado disponible para otras plataformas incluyendo System V/386, 386BSD.

La implementación Xfree86 incluye todos los fuentes, binarios, librerías y herramientas.

En primer lugar es necesario aclarar alguna terminología. El servidor X es el controlador de visualización y se encarga de controlar la pantalla en la estación de trabajo local. Esto contrasta con la definición típica de servidor, que es un recurso que suele encontrarse en un sistema remoto.

Los clientes X son los programas aplicativos como el administrador de ficheros o el manejador de ventanas (por ejemplo KDE), con los que el usuario interactúa. Al contrario que el servidor que se encuentra en el equipo local, un cliente puede rodar tanto en el sistema local como en uno remoto.

Requerimientos de Hardware

El sistema X Window está muy ligado al hardware de vídeo del sistema y una configuración incorrecta del servidor X podría dañar el monitor o la tarjeta de vídeo. No obstante, la mayoría de los monitores multisync actuales son bastante resistentes a este tipo de averías ya que son capaces de ajustarse automáticamente al sincronismo y frecuencia de refresco del adaptador. De todas formas es conveniente tener cuidado al modificar este tipo de ajustes.

Durante la instalación de Linux, el programa de instalación de X Window detecta el hardware de vídeo disponible y solicita verificación de dicha selección al usuario. Especialmente importante es el chipset de la tarjeta de vídeo que determinará que servidor X se utilizará.

Nota: Existe una lista de hardware soportado con los correspondientes chipsets en www.xfree86.org/4.0/Status.html.

Cada fabricante de adaptadores de vídeo utiliza un determinado chipset responsable de las funcionalidades gráficas del producto. Este chipset está indicado normalmente en la documentación del adaptador pero, en ocasiones, será necesario contactar con el fabricante para poder averiguarlo.

Para rodar X Window en un sistema Linux es necesario, como mínimo, un sistema 80486 con un adaptador de vídeo compatible con un mínimo de 8MB de RAM. Para unas prestaciones óptimas se recomienda más RAM y una tarjeta con acelerador de vídeo.

En todo caso, antes de comprar o intentar configurar un adaptador de vídeo es conveniente verificar su compatibilidad consultando la información de www.xfree86.org/4.0/Status.html.

También se recomienda añadir RAM al PC, ya que un sistema con 4MB de RAM puede ser hasta diez veces más lento que uno con 8MB (debido al swapping). El mínimo ideal para un sistema X Window system sería 16MB de RAM.

Instalando Xfree86

La mayoría de las distribuciones de Linux incluyen el sistema X Window con pequeñas diferencias en la instalación dependiendo del proveedor. RedHat por ejemplo utiliza un programa de instalación para su sistema RedHat 7 totalmente basado en X y, por tanto, el usuario ha de escoger y chequear la configuración de X Window antes de comenzar la instalación del sistema. Este método apenas requiere de configuración adicional a no ser que haya que configurar alguna función o prestación específica.

Generalmente no habrá que descargar los fuentes de Xfree86 por separado porque normalmente se instalan durante la instalación de Linux.

Se pueden encontrar distribuciones binarias de Xfree86 para Linux en varios servidores FTP. (P.Ej. en el sitio FTP XFree86: ftp://ftp.xfree86.org/pub/XFree86/4.0.2//binaries/).

También serán necesarios los subdirectorios Linux-axp-glibc21, Linux-ix86-glibc20, o Linux-ix86-glibc21, dependiendo del tipo de procesador (axp=alpha, ix86=Intel80x86) y de la versión de la librería Gnu C.

Antes de hacer nada más, se debe descargar y ejecutar el script Xinstall.sh, porque de esta forma conoceremos cualquier requisito necesario que haya que cumplir antes de continuar con la instalación.

Las instrucciones completas para la instalación de los binarios de Xfree86 se encuentran en www.xfree86.org/4.0/Install2.html.

Para descargar los ficheros es mejor utilizar FTP ya que hay que descargar bastantes ficheros.

Por ejemplo, al ejecutar Xinstall.sh podríamos obtener los siguientes resultados:

[root@poweredge chare]# sh Xinstall.sh

Welcome to the XFree86 4.0 installer

You are strongly advised to backup your existing XFree86

installation before proceeding. This includes the /usr/X11R6

and /etc/X11 directories. The installation process will overwrite

existing files in those directories, and this may include some

configuration files that may have been customised.

Do you wish to continue? (y/n) [n] y

Checking which OS you're running...

uname reports 'Linux' version '2.2.16-22smp', architecture 'i586'.

Object format is 'ELF'. libc version is '6.1'.

Checking for required files ...

You need to download the 'extract' (or 'extract.exe') utility

and put it in this directory.

When you have corrected the problem, please re-run 'sh Xinstall.sh'

to proceed with the installation.

En este ejemplo, el script Xinstall.sh script identifica algunos componentes que faltan, en particular, el programa de extracción. Lo único que hace falta para instalar XFree86 es conseguir la distribución binaria, crear el directorio /usr/X11R6 (como root), y desempaquetar los ficheros desde /usr/X11R6.

Una vez que los ficheros estén desempaquetados en /usr/X11R6, hay que añadir /usr/X11R6/bin al path de búsqueda editando el .profile o añadiéndolo al entorno actual, pero de esta última forma se perderán los cambios al desconectarse del sistema.

Aunque se hable de .profile será necesario editar el script de inicio de la shell que se esté utilizando, ya sea .profile o .cshrc o .login. Si el sistema tiene varios usuarios la mejor solución es editar los ficheros de inicio generales del sistema /etc/profile o /etc/.login.

También se debe verificar que el enlazador en modo de ejecución -runtime linker-, ld.so, puede encontrar las librerías compartidas que utiliza el sistema X Window. Esto se hace añadiendo la línea

/usr/X11R6/lib

Al fichero /etc/ld.so.conf (si es que ya no estaba allí). A partir de este momento ya podemos configurar el sistema X Window.

Repetimos de nuevo, que si se está utilizando una distribución Linux que incluya el sistema X Window system posiblemente no sea necesaria más configuración adicional.

Configurando el sistema X Window

Cuando se lanzó por primera vez el sistema X Window, era todo un desafío poderlo configurar correctamente. No obstante, con las nuevas versiones de Xfree86 y el trabajo realizado por varios distribuidores de Linux, la configuración se ha convertido en algo mucho más sencillo.

El servidor X ha cambiado para soportar módulos cargables dependiendo de la tarjeta de vídeo y del chipset utilizados, haciendo más fácil su manejo. El único secreto que tiene esta configuración en los sistemas Linux actuales es conocer el comando correcto de configuración del entorno X.

Normalmente será XF86Setup o xf86config. Otras distribuciones Linux pueden tener otros comandos diferentes: RedHat utiliza Xconfigurator, y Mandrake utiliza Xfdrake.

Todos estos comandos sirven para lo mismo, configurar el entorno X Window para que trabaje correctamente con el hardware de vídeo. Estos programas crean el fichero
/etc/X11/XF86Config, que define los parámetros y el comportamiento del servidor X, incluyendo la localización de los ficheros, definiciones de fuentes, resoluciones de pantalla y configuraciones del monitor.

El programa XF86Setup arranca el servidor X VGA de 16 colores e interactúa con el usuario para definir los parámetros de configuración y chequear el servidor X seleccionado. RedHat y Debian Linux utilizan un programa llamado xf86config o Xconfigurator, que no inicia el servidor X hasta que no están listos para chequear la configuración.

La siguiente figura muestra al configurador Xconfigurator de RedHat confirmando el hardware de vídeo detectado:

Pantalla principal de Xconfigurator

El programa Xconfigurator es una versión mejorada de xf86config, que está totalmente basado en texto como se puede ver en la siguiente figura:

Configuración del ratón en xf86config

Todos los programas de configuración de X Window van pasando por una serie de pasos para verificar el hardware de vídeo, el ratón, el tipo de monitor, las resoluciones deseadas y la profundidad del color como se ilustra en la siguiente figura:

Ejemplo de selección de monitor

Con esta información, la herramienta de configuración intenta determinar que servidores X son los apropiados y, a continuación, los somete a un test para averiguar cual de ellos es el que funciona. El usuario debe decidir si la visualización es aceptable antes de que finalice el test o el programa decidirá que no es aceptable.

La documentación de X Window identifica un problema bastante molesto con los tipos de teclado, el programa XF86Setup considera que el teclado genérico es el de 102 teclas y no el típico de 101 teclas. Si se elige el de 101 teclas podríamos encontrarnos con problemas con el teclado numérico y otras teclas.

La selección de monitor es fundamental para que el servidor X conozca que prestaciones y que límites existen para la resolución y las frecuencias de refresco.

Si no estamos seguros del tipo del monitor o no apareciese en el listado, siempre será mejor intentar seleccionar los tipos genéricos y luego continuar con otros de nuestro mismo fabricante, posiblemente haya que contactar con el fabricante para conocer las características del monitor y, así, poder seleccionar el tipo adecuado.

Algunos de los programas de configuración X llaman a xvidtune, que nos permite trucar los ajustes para obtener la mejor visualización. Por eso aparece un banner de aviso diciendo que podríamos dañar el monitor. Esto podría suceder aunque, como se comentó antes los monitores multisync modernos son bastante resistentes.

Pantalla de xvidtune

El programa XF86Config asume que el ratón se encuentra en /dev/mouse. Esto debería ser lo correcto ya que es lo que normalmente se define en tiempo de instalación, de todas formas, si esto no funcionase habría que averiguar a que puerto está conectado el ratón y hacer un link entre ese puerto y /dev/mouse.

El fichero XF86Config

Todos los programas de configuración X terminan creando el fichero XF86Config que, normalmente, se guarda en /etc/X11.

Durante la inicialización, el servidor mira la configuración que hay en /etc/X11/XF86Config antes de presentar el interfaz X al usuario.

El servidor X busca el fichero XF86Config en los siguientes directorios:

Como usuario normal:

/etc/X11/<cmdline>

/usr/X11R6/etc/X11/<cmdline>

/etc/X11/$XF86CONFIG

/usr/X11R6/etc/X11/$XF86CONFIG

/etc/X11/XF86Config-4

/etc/X11/XF86Config

/etc/XF86Config

/usr/X11R6/etc/X11/XF86Config.<hostname>

/usr/X11R6/etc/X11/XF86Config-4

/usr/X11R6/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config.<hostname>

/usr/X11R6/lib/X11/XF86Config-4

/usr/X11R6/lib/X11/XF86Config

Como usuario root:

<cmdline>

/etc/X11/<cmdline>

/usr/X11R6/etc/X11/<cmdline>

$XF86CONFIG

/etc/X11/$XF86CONFIG

/usr/X11R6/etc/X11/$XF86CONFIG

$HOME/XF86Config

/etc/X11/XF86Config-4

/etc/X11/XF86Config

/etc/XF86Config

/usr/X11R6/etc/X11/XF86Config.<hostname>

/usr/X11R6/etc/X11/XF86Config-4

/usr/X11R6/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config.<hostname>

/usr/X11R6/lib/X11/XF86Config-4

/usr/X11R6/lib/X11/XF86Config

El fichero XF86Config está dividido en secciones según la información específica de cada una:

Secciones del fichero XF86Config

Sección	Descripción
Files	Localización de los ficheros.
Server Flags	Banderas o switches del servidor.
Module	Carga dinámica de módulos.
InputDevice	Descripción de los dispositivos de entrada.
Device	Descripción de los dispositivos gráficos.
VideoAdaptor	Descripción del adaptador de vídeo Xv.
Monitor	Descripción del monitor.
Modes	Descripción de los modos de vídeo.
Screen	Configuración de la pantalla.
ServerLayout	Presentación general.
DRI	Configuración específica de DRI.
Vendor	Configuración específica del proveedor/fabricante.

Los nombres de sección obsoletos Keyboard y Pointer aún se reconocen pero solo por motivos de compatibilidad, en su lugar debe utilizarse la sección InputDevice.

Las secciones ServerLayout enlazan los dispositivos de entrada y de salida utilizados en una sesión. Los dispositivos de entrada se describen en las secciones InputDevice.

Los dispositivos de salida, normalmente, están formados por varios componentes independientes (como una tarjeta gráfica y un monitor). Las tarjetas gráficas se describen en las secciones Device y los monitores en Monitor. El monitor y la tarjeta de vídeo se tratan como uno solo en las secciones Screen, y a esos mismos conjuntos se hace referencia en la sección ServerLayout.

Se puede encontrar una documentación mas extensa sobre el formato y contenido del fichero XF86Config en las páginas man de Linux.

No debe hacerse ningún cambio en el fichero XF86Config sin consultar en las páginas del manual la información específica sobre la sección que se va a modificar.

El fichero XF86Config es bastante grande. (No es raro encontrar más de 400 líneas.)

El servidor de fuentes X proporciona al servidor X el trazado de las fuentes. Aunque normalmente esto siempre ha estado unido a la aplicación del servidor X, desde RedHat 6.0 se ha independizado del servidor y rueda por separado. El fichero XF86config tiene una sección que identifica la localización de las fuentes en el sistema.

Consideremos el siguiente ejemplo de un fichero XF86config file:

# Multiple FontPath entries are allowed (they are

#concatenated together)

# By default, Red Hat 6.0 and later now use a font

#server independent of

# the X server to render fonts.

FontPath "/usr/X11R6/lib/X11/fonts/TrueType"

FontPath "unix/:7100"

Esto indica que la ruta de las fuentes corresponde al directorio /usr/X11R6/lib/X11/fonts/TrueType, y se especifica una conexión con un servidor de fuentes. Las especificaciones del servidor de fuentes utilizan la sintaxis:

<trans>/<hostname>:<port-number>

donde <trans> es el tipo de transporte utilizado para conectar con el servidor de fuentes (como unix para Unix-domain sockets o tcp para una conexión TCP/IP), <hostname> es el nombre de la máquina que rueda el servidor de fuentes, y <port-number> es el número de puerto donde el servidor de fuentes escucha las peticiones (normalmente 7100).

Teniendo esto en mente, miremos de nuevo al ejemplo:

FontPath "unix/:7100"

Sabemos que la ruta de fuentes apunta a un transporte del tipo Unix-domain socket. La ausencia de un nombre de máquina a la izquierda de los dos puntos implica que la conexión es con la máquina local en el puerto 7100. Si el servidor de fuentes que queremos utilizar estuviese en otra máquina diferente, la entrada anterior podría ser:

FontPath "unix/fontserver.mydomain.com:7100"

Cuando no se especifica la entrada FontPath en el fichero XF86Config, el servidor retorna al modo histórico de fuentes precompiladas:

/usr/X11R6/lib/X11/fonts/misc/

/usr/X11R6/lib/X11/fonts/Speedo/

/usr/X11R6/lib/X11/fonts/Type1/

/usr/X11R6/lib/X11/fonts/CID/

/usr/X11R6/lib/X11/fonts/75dpi/

/usr/X11R6/lib/X11/fonts/100dpi/

La lista FontPath recomendada consta de los siguientes elementos:

/usr/X11R6/lib/X11/fonts/local/

/usr/X11R6/lib/X11/fonts/misc/

/usr/X11R6/lib/X11/fonts/75dpi/:unscaled

/usr/X11R6/lib/X11/fonts/100dpi/:unscaled

/usr/X11R6/lib/X11/fonts/Type1/

/usr/X11R6/lib/X11/fonts/CID/

/usr/X11R6/lib/X11/fonts/Speedo/

/usr/X11R6/lib/X11/fonts/75dpi/

/usr/X11R6/lib/X11/fonts/100dpi/

Las rutas de fuentes que se detecte que sean incorrectas se eliminarán de la lista de rutas durante la inicialización del servidor. Si hubiese directorios adicionales de fuentes instaladas deberían añadirse a la lista mediante entradas FontPath. No obstante, el fichero XF86Config es utilizado por el servidor X y no por el servidor de fuentes X. El servidor de fuentes X, conocido normalmente como XFS, se arranca durante la inicialización del sistema. XFS lee su propio fichero de configuración que define su modo de operación independientemente del servidor X. Este fichero se encuentra en /etc/X11/fs/config. A continuación tenemos un ejemplo de un fichero de configuración XFS:

#

# Default font server configuration file for Red Hat Linux

#

# allow a max of 10 clients to connect to this font server

client-limit = 10

# when a font server reaches its limit, start up a new one

clone-self = on

# alternate font servers for clients to use

#alternate-servers = foo:7101,bar:7102

# where to look for fonts

#

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,

/usr/X11R6/lib/X11/fonts/75dpi:unscaled,

/usr/X11R6/lib/X11/fonts/misc,

/usr/X11R6/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/Speedo,

/usr/X11R6/lib/X11/fonts/75dpi,

/usr/share/fonts/default/Type1

# in 12 points, decipoints

default-point-size = 120

# 100 x 100 and 75 x 75

default-resolutions = 75,75,100,100

# use lazy loading on 16 bit (usually Asian) fonts

deferglyphs = 16

# how to log errors

use-syslog = on

# don't listen to TCP ports by default for security reasons

no-listen = tcp

Particularmente interesante es la palabra clave catalogue, ya que es esencialmente equivalente a la palabra clave FontPath de CF86config. Por tanto, si se hacen cambios en la directiva FontPath de XF86config, también habría que hacer los mismos cambios en catalogue de /etc/X11/xfs/config para que el servidor de fuentes se entere.

El servidor de fuentes X se inicia normalmente durante la inicialización del sistema en /etc/rc.d/init.d/xfs. Este script puede ser utilizado además para parar y/o reiniciar el servidor de fuentes X.

Se puede encontrar más información sobre el servidor de fuentes X en las páginas man correspondientes a XFS.

Controlando X

El servidor X puede controlarse para proporcionar determinadas configuraciones cuando arranquen los clientes utilizando el fichero .Xresources. Si existiese este archivo, debería encontrarse en el directorio home del usuario. El fichero .Xresources no se crea automáticamente y hay una configuración por defecto válida para todo el sistema. Este fichero contiene directivas que se aplicarán al cliente X cuando se inicialice. El siguiente extracto de un fichero .Xresources indica como se mostrara el color en un xterm

xterm_color*background: Black

xterm_color*foreground: Wheat

xterm_color*cursorColor: Orchid

xterm_color*reverseVideo: false

xterm_color*scrollBar: true

xterm_color*saveLines: 5000

xterm_color*reverseWrap: true

xterm_color*font: fixed

xterm_color.geometry: 80x25+20+20

xterm_color*fullCursor: true

xterm_color*scrollTtyOutput: off

xterm_color*scrollKey: on

xterm_color*VT100.Translations: #override\n\

<KeyPress>Prior : scroll-back(1,page)\n\

<KeyPress>Next : scroll-forw(1,page)

xterm_color*titleBar: false

Cada una de estas directivas es una directiva del sistema X Window que describe como se visualizará el cliente. Cada línea consiste de un nombre de cliente seguido por un asterisco y del parámetro X.

A través de un fichero .Xresources cuidadosamente ensamblado, el usuario puede manipular y definir el aspecto que presentará cada aplicación al iniciarse.

Iniciando X

Hay dos métodos principales para iniciar una sesión X. Uno es conectando en un entorno de texto que, después, arranque el servidor X. El otro es utilizando el sistema de login gráfico de XDM. En esta sección se describirá como hacerlo desde una shell de texto.

Para tener acceso al servidor X y a los clientes locales relacionados, /usr/X11R6/bin ha de encontrarse en la variable PATH, si no estuviese habría que añadirlo en el .profile.

La forma más fácil de iniciar el sistema X Window es a través del comando startx. startx a su vez, llama a los programas necesarios para inicializar el entorno e inicializar el servidor X. Una vez arrancado el servidor X, se ejecuta el fichero .xinitrc situado en el directorio home del usuario. Si no existiese se ejecutaría por defecto el fichero /usr/X11R6/lib/X11/xinit/xinitrc.

Por ejemplo, el fichero xinitrc podría contener lo siguiente:

#!/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

Este script arranca dos clientes xterm y un oclock, y selecciona el color de fondo de la ventana de root como midnight blue. Después arranca twm, el manejador de ventanas.

Hay que tener en cuenta que twm se ejecuta con el comando shell exec, lo que provoca que el proceso xinit sea reemplazado por twm. Una vez finalice el proceso twm, el servidor X se cerrará.

El comando twm es un gestor de ventanas, hay muchos gestores disponibles como twm, kwm,

y fvwm95, por nombrar solo unos pocos.

El último comando en .xinitrc debe ser arrancado con exec y no debe ser enviado al background. Si no se utilizase exec o se enviase el comando al background, el servidor X finalizaría justo después de completar la ejecución de los clientes del fichero xinitrc.

Bibliografia y enlaces recomendados

LPIC 1 Certification Bible (Bible) by Angie Nash, Jason Nash

John Wiley & Sons; Bk&CD-Rom edition (July 1, 2001) ISBN: 0764547720
LPI Linux Certification in a Nutshell by Jeffrey Dean
O'Reilly & Associates; 1st ed edition (May 15, 2001) ISBN: 1565927486
CramSession's LPI General Linux Part 1 : Certification Study Guide
CramSession.com; ISBN: B000079Y0V; (August 17, 2000)

Referencias Unix Reviews

http://www.unixreview.com/documents/s=7459/uni1038932969999/

Página LPI: www.lpi.org

Apuntes IBM: http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html

Manuales GPL: http://www.nongnu.org/lpi-manuals/

Tema 110.1 Instalando y configurando el entorno gráfico

Página 16 de 16

Tema 110.1 LPI

2004-07-21T14:39:00