XFree86-4.3.0

Introducción a XFree86

Localización de descarga (HTTP):		
Localización de descarga (FTP):			ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/
Versión usada:					4.3.0
Tamaño del paquete:				137 MB
Estimación del espacio necesario en disco:	633 MB
Estimación del tiempo de construcción:		75m (667 MHz)

XFree86 es una implementación en código abierto y de libre distribución del Sistema de Ventanas X. XFree86 proporciona una interfaz cliente/servidor entre el hardware (ratón, teclado y vídeo) y el entorno de escritorio, mientras que también proporciona la infraestructura para la creación de ventanas y una interfaz de aplicaciones estandarizada (API).

XFree86 depende de: 
freetype-2.1.3, expat-1.95.6 y libpng-1.2.5.

Son varios los ficheros que deben obtenerse de la localización de descarga:
X430src-1.tgz 10736 KB 
X430src-2.tgz  7776 KB   
X430src-3.tgz 12077 KB   
X430src-4.tgz 12604 KB   
X430src-5.tgz  4286 KB   
X430src-6.tgz  7886 KB   
X430src-7.tgz  9099 KB

Los tres primeros paquetes son los programas de XFreee86, el cuarto y el quinto son fuentes tipográficas, el sexto contiene los fuentes de la documentación y el séptimo es la documentación lista para consultar. También hay otros dos paquetes, doctools-1.3.1.tgz que contiene programas para procesar los fuentes de la documentación y utils-1.1.0.tgz que contiene gnutar y zlib que ya están instalados en un sistema LFS.

Para comprobar la integridad de los paquetes, descarga el fichero SUMS.md5sum. Luego haz:
md5sum X430src* > md5sums &&
diff md5sums SUMS.md5sum
Las únicas diferencias que deberías ver son los ficheros README, doctools-1.3.1.tgz y utils-1.1.0.tgz si no los descargaste.

Instalación de XFree86

Ajustes para la compilación del núcleo

Si tienes un Intel P6 (Pentium Pro, Pentium II y superior) es recomendable que compiles el soporte MTRR (Registros del Rango del Tipo de Memoria) dentro del núcleo. El núcleo puede mapear CPUs Cyrix y AMD en la interfaz MTRR, por lo que seleccionar esta opción también es útil para estos procesadores. Esta opción se encuentra en el menú "Processor type and features" ("Tipo de procesador y características"). Puede incrementar las prestaciones de las operaciones de escritura de imágenes 2.5 veces o más en tarjetas de vídeo PCI o AGP.

En la sección "Character Devices" ("Dispositivos de Caracteres"), activa el soporte para AGP y selecciona el soporte del chipset de tu placa base. Si no conoces el chipset puedes seleccionar todos los tipos a expensas de una tamaño mayor del núcleo. Normalmente puedes determinar el chipset de tu placa base mediante:
cat /proc/pci

En la sección "Character Devices", desactiva Direct Rendering Manager ("Administración de Representación Directa") a menos que tengas una tarjeta de vídeo con soporte para Direct Rendering Infrastructure (DRI) (Infraestructura de representación Directa). Encontrarás una lista completa de las tarjetas de vídeo que soporta DRI en la sección Status de http://dri.sourceforge.net. Por el momento, entre las tarjetas soportadas se incluyen las de 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815), y Matrox (G200, G400, G450). Adicionalmente, NVidia provee sus propios controladores binarios de código cerrado (propietarios). Si activas DRI aquí, asegúrate de seleccionar la tarjeta (o tarjetas) de vídeo para la que quieras soporte como módulo.

Si haces cualquier cambio en la configuración del núcleo, recompila con
make dep &&
make bzImage &&
make modules &&
make modules_install

Copia /usr/src/linux/arch/i386/boot/bzImage y /usr/src/linux/System.map a /boot, edita adecuádamente /etc/lilo.conf y ejecuta lilo. Si usas grub, edita /boot/grub/grub.conf y agrega el nuevo núcleo al menú de arranque.

Nota: Si construyes XFree86 en un entorno chroot, asegúrate de que la versión del núcleo del sistema base y del sistema destino es la misma. Esto es especialmente importante si activas el soporte para DRI como módulo, tal y como se ha indicado antes.

Crear host.def

Aunque XFree86 compilará sin un fichero host.def, se recomienda el siguiente fichero para personalizar la instalación. Sitúate dentro del directorio xc.

cat > config/cf/host.def << "EOF"
/* Inicio del fichero XFree86 host.def */

/* Información Relativa al Sistema. Si lees y configuras sólo una sección.
 * entonces debe ser esta. La arquitectura Intel se establece por defecto
 * para i686 y superior. Axp es para la arquitectura Alpha y Ppc es para
 * Power PC. Ten en cuenta que se ha informado que la línea de optimización
 * para Ppc provoca violaciones de segmento durante la compilación. Si esto
 * sucede, prueba a construirlo sin la línea DefaultGcc2PpcOpt. ************/

/* #define DefaultGcc2i386Opt  -O2 -fomit-frame-pointer -march=i686 */
/* #define DefaultGcc2AxpOpt   -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt   -O2 -mcpu=750 */

/* Las siguientes definiciones normalmente se ajustan correctamente por
 * guiones de XFree86. Puedes descomentarlas si quieres asegurarte. ****/

/* #define HasMTRRSupport      YES  */ /* Activado en el núcleo, ver su 
 * documentación*/
/* #define HasMMXSupport        NO  */ /* Cualquier i586 o superior */
/* #define HasKatmaiSupport     NO  */ /* Instrucciones PIII SSE */
/* #define Has3DNowSupport      NO  */ /* Instrucciones AMD */

/* Estos ajustes reducen algo el tiempo de compilación al omitir dispositivos de
 * entrada de raro uso. Encontrarás la lista completa en config/cf/xfree86.cf */

#define XInputDrivers                 mouse void

/* CONTROLADORES DE VÍDEO **************************************************/

/* Si estás seguro de que sólo quieres los controladores para una o unas pocas
 * tarjetas de vídeo, puedes borrar los controladores que no quieras. *********/


#define XF86CardDrivers  mga glint nv tga s3 s3virge sis rendition \
                         neomagic i740 tdfx savage \
                         cirrus vmware tseng trident chips apm \
                         GlideDriver fbdev i128 nsc \
                         ati i810 AgpGartDrivers DevelDrivers ark \
                         cyrix siliconmotion \
                         vesa vga \
                         dummy XF86OSCardDrivers XF86ExtraCardDrivers

/* SERVIDOR DE FUENTES Y AJUSTES DE LIBRERÍAS ****************************/

/* Estos ajustes se establecen por defecto. **********************************/

/* #define BuildFontServer       YES  */ /* Para el servidor de impresión 
 * GhostScript*/
/* #define SharedLibFont            YES  */
/* #define CompressAllFonts         YES  */
/* #define GzipFontCompression      YES  */

/* Estos ajustes aseguran que utilicemos nuestras librerías ******************/
#define HasFreetype2             YES
#define HasExpat                 YES
#define HasLibpng                YES
#define HasZlib                  YES

/* La ruta de las fuentes puede redefinirse en el fichero XF86Config *********/

/*
#define DefaultFontPath                $(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\
$(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\
$(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo
*/


/* FUENTES INTERNACIONALES.  Cambia a YES si necesitas alguna. Estas son
 * las opciones por defecto. *************************************************/

/* #define BuildCyrillicFonts            NO  */
/* #define BuildArabicFonts              NO  */
/* #define BuildISO8859_6Fonts           NO  */
/* #define BuildGreekFonts               NO  */
/* #define BuildISO8859_7Fonts           NO  */
/* #define BuildHebrewFonts              NO  */
/* #define BuildISO8859_8Fonts           NO  */
/* #define BuildKOI8_RFonts              NO  */
/* #define BuildJapaneseFonts            NO  */
/* #define BuildJISX0201Fonts            NO  */
/* #define BuildKoreanFonts              NO  */
/* #define BuildChineseFonts             NO  */

/* AJUSTES PARA LA DOCUMENTACIÓN *******************************************/

/* Estos son los ajustes por defecto. *****************************************/

/* #define BuildLinuxDocHtml             NO  */  /* Documentos de X en formato 
 * HTML */
/* #define BuildLinuxDocPS               NO  */  /* Y en formato PostScript */
/* #define BuildAllSpecsDocs             NO  */  /* Varios documentos */
/* #define BuildHtmlManPages             NO  */

/* AJUSTES GENERALES: Generalmente querrás dejar esto como está cuando
 * construyas X en un sistema LFS *********************************************/

#define GccWarningOptions         -pipe /* Acelera la compilación*/
#define TermcapLibrary            -lncurses
#define XprtServer                YES /* Necesario para realplayer */
#define XnestServer               YES
#define XAppLoadDir               EtcX11Directory/app-defaults
#define VarLibDir                 /var/lib
#define XFree86Devel               NO
#define FSUseSyslog               YES
#define ThreadedX                 YES
#define HasPam                     NO        
#define SystemManDirectory        /usr/share/man /* En vez de /usr/man */
#define HasLibCrypt               YES
#define InstallXinitConfig        YES
#define InstallXdmConfig          YES
#define ForceNormalLib            YES
#define BuildSpecsDocs             NO

/* Fin del fichero XFree86 host.def */
EOF

Edita el fichero según tu hardware y preferencias.

Comandos de construcción

Instala XFree86 ejecutando los siguientes comandos:

WORLDOPTS="" make World 2>&1 | tee xfree-compile.log &&
make install &&
make install.man &&
ln -sf /usr/X11R6/bin /usr/bin/X11 &&
ln -sf /usr/X11R6/lib/X11 /usr/lib/X11 &&
ln -sf /usr/X11R6/include/X11 /usr/include/X11

Actualizar la Infraestructura de Representación Directa (DRI)

Si tienes una tarjeta de vídeo soportada por DRI y activaste los módulos DRI del núcleo como se explica más arriba, necesitas actualizar los módulos del núcleo para asegurarte que sean compatibles con la versión actual de XFree86. Para esto, haz lo siguiente:

cd programs/Xserver/hw/xfree86/os-support/linux/drm/kernel && 
make -f Makefile.linux  && 
mkdir -p /lib/modules/`uname -r`/kernel/drivers/char/drm/  && 
cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o \
    /lib/modules/`uname -r`/kernel/drivers/char/drm/  && 
depmod -a

Aviso

Si recompilas o actualizas el núcleo, deberás volver a copiar los módulos controladores a la librería de módulos del núcleo y ejecutar depmod.

Explicación de los comandos

WORLDOPTS="" make World 2>&1 | tee xfree-compile.log: Este comando ejecuta múltiples makefiles para reconstruir por completo el sistema. WORLDOPTS="" desactiva el comportamiento por defecto de continuar si se produce un error. 2>&1 redirige los mensajes de error a la misma localización que la salida normal. El comando tee permite visualizar la salida mientras se registran los resultados en un fichero.

ln -sf /usr/X11R6/bin /usr/bin/X11, ln -sf /usr/X11R6/lib/X11 /usr/lib/X11, y ln -sf /usr/X11R6/include/X11 /usr/include/X11 : Estos comandos están presentes para permitir que otros paquetes (incorrectos) se construyan contra XFree86. Hacemos esto aunque el Estándar de la Jerarquía del Sistema de Ficheros (FHS) dice: "En general, el software no debe instalarse o administrarse mediante los enlaces simbólicos anteriores. Están pensados para que solamente los utilicen los usuarios."

make -f Makefile.linux : Esto construye los módulos del núcleo compatibles con XFree86.

cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o /lib/modules/`uname -r`/kernel/drivers/char/drm/ : Pone los módulos del núcleo donde éste pueda encontrarlos.

depmod -a : Actualiza el fichero de administración de módulos modules.dep.

Configuración de XFree86

Edita /etc/ld.so.conf y añade /usr/X11R6/lib. Ejecuta
ldconfig

Añade /usr/X11R6/bin a tu variable de entorno PATH en .bash_profile. La sentencia debe ser similar a PATH=$PATH:/usr/X11R6/bin y colocarse antes de la sentencia export PATH.

Ejecuta
source ~/.bash_profile

Activa tu ratón
cd /dev
ln -s psaux mouse
Ajusta el enlace simbólico de la forma necesaria para otros tipos de ratón. Por ejemplo, un ratón serie en el primer puerto serie debe enlazarse a ttyS0.

Crea el fichero XF86Config con
cd ~
XFree86 -configure
La pantalla se pondrá negra y puede que oigas algunos clics del monitor. Este comando creará un fichero, XF86Config.new, en tu directorio personal.

Edita XF86Config.new para afinar tu sistema. Los detalles del fichero se encuentran en la página de manual man XF86Config. Algunas cosas que puedes querer hacer:

Comprueba el sistema con
XFree86 -xf86config ~/XF86Config.new
Sólo obtendrás un fondo de pantalla gris con un puntero de ratón en forma de X, pero esto confirma que el sistema funciona. Ciérralo con Control-Alt-Retroceso. Si el sistema no funciona, revisa /var/log/XFree86.0.log para ver qué ha ido mal.

Mueve el fichero de configuración a su localización final
mv ~/XF86Config.new /etc/X11/XF86Config-4

Crea .xinitrc
cat > ~/.xinitrc << "EOF"
# Inicio del fichero .xinitrc
xterm  -g 80x40+0+0   &
xclock -g 100x100-0+0 &
twm
EOF
Esto proporciona una pantalla inicial con una xterm y un reloj, manejados por un administrador de ventanas simple, el Tab Window Manager. Para los detalles sobre twm, mira su página de manual.

Inicia X con
startx
para tener un Sistema de Ventanas X básico y funcional.

Contenido

El paquete XFree86 contiene el Sistema de Ventanas X para Linux (y otros sistemas operativos). Incluye el servidor X, fuentes, xterm, un administrador de ventanas simple (twm), varias utilidades, controladores de salida de vídeo y varios controladores de entrada incluidos el ratón y el teclado.

XFree86 también contiene librerías y ficheros de cabecera para el desarrollo de programas para las X.

Descripciones