Compilar un kernel con aceleracion 3D para ATI
COMPILACION DE UN KERNEL PARA LINUX
Vamos a explicar cómo compilar un kernel para Debian para conseguir aceleración 3D en una targeta gráfica ATI 9600 XT. Para ello realizaremos una serie de pasos que describo a continuación:
1)Instalar los paquetes necesarios
Si tenemos Debian instalado, esto es muy fácil, dado que Debian cuenta con una herramienta llamada apt-get, que permite bajar e instalar automáticamente cualquier paquete. Suponiendo que tenemos el fichero “sources.list” (que se encuentra en /etc/apt) correctamente configurado, hemos de actualizar la lista de paquetes disponibles (si no lo hemos hecho antes):
apt-get update
Ahora hemos de descargar los paquetes necesarios para realizar la compilacion de nuestro kernel, para ello, haremos:
apt-get install kernel-package
apt-get install libqt3-mt-dev
2)Bajar las fuentes del Kernel.
Una vez instalados los paquetes necesarios, hemos de bajar las fuentes del kernel que deseemos
(es bastante recomendable bajarse el último kernel disponible, sobre todo si tenemos un hardware relativamente nuevo).
Si tenemos una tarjeta gráfica ATI, y deseamos instalar los drivers de ATI, recomiendo descargar dichas fuentes con la herramienta apt-get, de la siguiente forma:
apt-get install kernel-source-2.6.10
(en vez de 2.6.10 podemos poner otra cualquiera, actualmente el 2.6.10 es la más moderna disponible)
esto nos dejará en el directorio /usr/src un archivo comprimido que descomprimiremos con la siguiente órden:
cd /usr/src
tar -jxvf kernel-source-2.6.10.tar.bz2
Una vez descomprimido, tendremos un directorio llamado “kernel-source-2.6.10” en /usr/src, y ahora
es aconsejable realizar un enlace simbólico a este directorio (si anteriormente ya tenemos otro
enlace simbólico hemos de borrarlo con la órden rm -f linux)
ln -sf /usr/src/kernel-source-2.6.10 linux
Llegados a este punto, conviene comentar que también podemos bajarnos las fuentes del kernel de Kernel.org (en este momento el último estable es el 2.6.11.2), para ello bajaremos el fichero “linux-2.6.11.2.tar.bz” y lo descomprimiremos exactamente igual que
antes:
tar -jvxf linux-2.6.11.2.tar.bz2 -C /usr/src
Y ahora haremos el enlace simbólico igual que hicimos antes:
cd /usr/src
ln -sf /usr/src/linux-2.6.11.2 linux
NOTA IMPORTANTE: Para instalar los drivers de ATI es muy recomendable bajarse las fuentes del kernel
con el gestor de paquetes apt y no directamente desde Kernel.org
3)Configurar el Kernel.
Ahora viene la parte más pesada, configurar el kernel para nuestro hardware,
lo que nos permitirá optimizar el kernel para dicho hardware. Para ello, suponiendo que ya estamos en el directorio /usr/src, haremos:
cd linux
Entrando en el enlace simbólico linux anteriormente creado.
Ahora hemos de copiar la configuración de nuestro actual kernel, que se suele encontrar en el directorio /boot, para ello haremos:
uname -r
cp /boot/config-2.X.XX .config
(dónde pone unas X, tendremos que poner la versión del kernel que hemos obtenido con el comando uname -r)
Y ahora debemos “adaptar” la configuración de nuestro kernel actual a la del nuevo kernel, para ello ejecutaremos la órden:
make oldconfig
Nos irá preguntando acerca de las nuevas características del nuevo kernel que el anterior no tenía, aquí si desconocemos lo que nos pregunta, podemos darle a enter y él mismo se encargará de poner la opción por defecto (yo le doy a enter en todas las opciones y lo configuro luego en el menú grafico).
Una vez realizado esto, se pasará a la configuración del kernel, para ello tendremos que ejecutar la siguiente órden para que nos abra un menú gráfico:
make xconfig
Aquí podremos seleccionar un montón de cosas, desde nuestro tipo de procesador,
hasta los sistemas de ficheros que vamos a utilizar en nuestro sistema linux.
Suele haber tres opciones para cada casilla: activado dentro del kernel (marca V), activado cómo módulo (marcado con un punto) o desmarcado.
Las casillas correspondientes al chipset y sistema de ficheros es aconsejable no variarlas (si estan dentro del kernel no cambiarlas a módulos), ya que esto puede hacer que nuestro nuevo kernel no arranque.
En caso de querer instalar posteriormente los drivers de la tarjeta gráfica ATI, deberemos configurar ciertas cosas tal y como se indica en el apéndice 1
Cuando finalicemos de configurar nuestro nuevo kernel (lleva su tiempo hacerlo bien), guardaremos la configuracion y pasaremos a compilarlo.
Para compilarlo existen varias opciones, pero nosotros vamos a crear un paquete .deb que nos permitirá volver a instalarlo posteriormente en otro sistema Debian
(ojo: el hardware ha de ser prácticamente igual) o volver a instalarlo en nuestro sistema cuando formateemos nuestro disco duro (lógicamente para ello hemos de salvarlo). Para compilarlo, ejecutaremos la siguiente órden:
make-kpkg clean
make-kpkg –append-to-version “-XXXX” --initrd kernel_image
(en donde pone XXXX podemos poner cualquier cosa que se nos ocurra, esto identificará posteriormente a nuestro kernel)
Una vez hecho esto el sistema nos informará que es posible que nuestro nuevo kernel no arranque (si has sido cuidadoso esto no pasará), y nos preguntará si deseamos abortar el proceso, lógicamente responderemos N y el proceso continuará. El proceso de compilación lleva
bastante tiempo (10-15 minutos en un AMD64 3200+ y hasta 4 horas en un Intel Pentium II de 333 Mhz)
4)Instalar el Kernel.
Una vez finalizado el proceso, el comando “make-kpkg” nos ha dejado un paquete .deb en el directorio /usr/src, ahora sólo quedará instalarlo. Para ello:
cd /usr/src
dpkg -i kernel-image*
Si tenemos instalado grub como selector de arranque, el proceso ya estará finalizado, en caso de tener instalado lilo, tendremos que actualizar el fichero /etc/lilo.conf, añadiendo un nuevo párrafo para el nuevo kernel que acabamos de instalar.
Hemos de añadir una entrada para el vmlinuz y para el initrd.img que acabamos de crear (se encuentran en el directorio /boot y los distinguiremos por lo que pusimos a continuacion del “append-to-version”).
Una vez hecho esto, deberemos actualizar la configuración de LILO ejecutando la siguiente órden:
/sbin/lilo
APENDICE 1: CONFIGURACION ATI
En este apéndice indico cómo debemos configurar nuestro kernel si deseamos instalar posteriormente drivers para una tarjeta gráfica ATI:
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_KMOD=y
CONFIG_MTRR=y
CONFIG_AGP=m
CONFIG_AGP_chipset=m
CONFIG_DRM=y
CONFIG_DRM_RADEON=m
CONFIG_FB is not set
CONFIG_TMPFS=y
y= V (incluido directamente en el kernel)
m = module (para ello ha de quedar marcada con un punto)
COMPILACION E INSTALACION DE DRIVERS ATI
A continuación explico cómo compilar e instalar los drivers de las tarjetas gráficas ATI.
Esto es sólo para distribuciones basadas en Debian
(para el resto de distribuciones que utilizan paquetes RPM, ATI dispone del paquete rpm ya listo para instalar).
1)Instalacion de los paquetes necesarios.
Realizaremos la instalación de los siguientes paquetes, utilizando el maravilloso gestor de paquetes de Debian:
apt-get install debhelper xlibs-dev libxtst-dev rpm wget fakeroot
2)Instalación del driver.
Descargaremos el paquete fglrx-installer_8.10.19-1.dsc
y fglrx-installer_8.10.19-1.tar.gz
Ahora procederemos a instalar estos paquetes:
dpkg-source -x fglrx-installer_8.10.19-1.dsc
cd fglrx-installer-8.10.19
fakeroot Debian/rules binary
Esto descargará los drivers de ATI y nos creará en nuestro directorio los siguientes paquetes:
fglrx-driver_8.10.19-1_i386.deb
fglrx-driver-dev_8.10.19-1_i386.deb
fglrx-kernel-src_8.10.19-1_i386.deb
fglrx-control-qt3_8.10.19-1_i386.deb
fglrx-sources_8.10.19-1_i386.deb
3)Instalación de fglrx-driver y fglrx-kernel-src.
De todos estos paquetes sólo nos interesan el primero y el tercero,
que instalaremos con las siguientes órdenes:
dpkg -i fglrx-driver_8.10.19-1_i386.deb
dpkg -i fglrx-kernel-src_8.10.19-1_i386.deb
4)Compilar los drivers.
Ahora nos toca compilar los drivers para el kernel que previamente hemos creado. Para ello,
primero hemos de descomprimir el paquete “fglrx-kernel-src” de la siguiente forma:
cd /usr/src
tar xzvf fglrx-kernel-src.tar.gz
Y ahora compilarlos con la siguiente órden:
cd linux
make-kpkg --append-to-version "-XXXX" --added-modules fglrx-kernel-src modules_image
(OJO: donde pone XXXX, hemos de poner lo que anteriormente hemos utilizado para compilar nuestro kernel)
Esto nos creará un paquete en el directorio /usr/src que instalaremos de la siguiente forma:
cd /usr/src
dpkg -i /usr/src/fglrx-kernel*.deb
Si no ha habido ningún fallo hasta ahora, ya podremos cargar el driver de ATI con la siguiente órden:
modprobe fglrx
5) Configuración del XF86Config-4
NOTA IMPORTANTE: Antes de realizar modificaciones en el fichero, es recomendable que guardeis el actual, por si hacéis
alguna modificación que impida que arranque el servidor X, para ello podeis ejecutar lo siguiente:
Ahora sólo nos queda editar el fichero /etc/X11/XF86Config-4,
y modificarlo de la siguiente forma:
cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.antiguo
Section "Module"
...
Load "GLcore"
Load "glx"
Load "dri"
...
# Load "extmod" but omit DGA extension
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
...
EndSection
Section "Device"
Identifier "ATI"
Driver "fglrx" # this is the important bit
# If X refuses to use the screen resolution you asked for,
# uncomment this
#Option "NoDDC"
# === Video Overlay for the Xv extension ===
Option "VideoOverlay" "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
# will be disabled automatically
Option "OpenGLOverlay" "off"
# === Use internal AGP GART support? ===
# If OpenGL acceleration doesn't work, try using "yes" here
# and disable the kernel agpgart driver.
Option "UseInternalAGPGART" "no"
EndSection
Section "Screen"
Identifier "your screen"
Device "ATI"
Monitor "your monitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x960" # this is only an example,
# use your preferred resolution here
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
6) Comprobaciones finales.
Ahora sólo nos queda reiniciar el ordenador y comprobar que el driver está funcionando correctamente, para ello abriremos un terminal y escribiremos:
glxgears
y comprobaremos que el número de “frames” esta entre 1000-2000.
En caso de que no se inicie el servidor X, podemos recuperarlo (si lo hemos salvado previamente) de la siguiente forma (como root):
cp /etc/X11/XF86Config-4.antiguo /etc/X11/XF86Config-4
Y ahora iniciar el servidor X (como usuario normal y NO como root) con la órden
startx
Así es como yo he conseguido que funcionase la aceleración gráfica en mi tarjeta ATI- 9600XT, y este artículo lo hice basándome en otro que podeis ver en el siguiente link:
http://xoomer.virgilio.it/flavio.stanchina/Debian/fglrx-installer.html
Enviado por lemon el 23 Marzo, 2005 - 14:07.
Me parece interesante encontrar esta buena descripción, pero creo que deberias añadir al principio, y con letras grandes, que esto es solo para usuarios avanzados.
Un novato nunca deberia compilar su propio kernel si no sabe como hacerlo, casi siempre va a tener problemas y siempre va a quedar con un kernel que es menos optimo que los de debian.
Aparte de eso, es muchisimo mas fácil instalar los drivers de ati SIN compilar el kernel, SIN utilizar los dos ficheros que has comentado antes, que cojes de la página de flavio, pues Flavio ademas de esos ficheros nos da unos magnificos paquetes debian ya listos para instalar, de forma que solo hay que añadir al sources.list los repositorios de flavio y muy poca cosa mas.
En los foros, en el apartado X hay un post sticky con las instrucciones para instalar los drivers de ATI de la forma "fácil".
De todos modos, muchas gracias por haber hecho una descripción tan extensa, aunque creo que, mejor que decir "hay que elegir estas opciones", dijeras por que hay que elegir esas y no otras, y por que de esa forma. Ya que has hecho una currada tan grande, añadir un par de lineas con estas explicaciones es algo que vale mucho la pena.
Saludos!
Enviado por miguel1111 el 24 Marzo, 2005 - 12:44.
Yo tambien creia que existia una forma facil para hacerlo, sin compilar el kernel ni nada de eso, pero siempre encontraba problemas,por ejemplo, basta que te bajes un kernel que esta compilado con una version diferente del gcc con el que se compilaron los drivers de flavio para que eso no funcione. Si se hace todo tal y como lo hice yo, SEGURO que funciona.
Creo que casi cualquier persona puede ponerse a compilar el kernel siguiendo estas instrucciones, y teniendo cuidado con no quitar cosas importantes (lo que no sabes dejalo como esta), no deberia haber problema.
En cuanto a lo de que puede quedar suboptimo, mientras que no nos dediquemos a meter cosas (que estaban como modulos y no necesitabamos) dentro del kernel, no creo que nos quede suboptimo.
Trato de explicarlo lo mejor posible para que todo el mundo lo entienda, espero que sirva para algo..
Enviado por andandare el 28 Marzo, 2005 - 21:48.
Mira, he hecho lo que ponía paso a paso, pero al comprobar la firma me da el siguiente error:
dpkg-source: error: file fglrx-installer_8.10.19-1.tar.gz has size 8291 instead of expected 22213
¿Podrías decirme porqué? ¿Modificaste el código y no actualizaste la firma?
Un saludo.
Enviado por miguel1111 el 29 Marzo, 2005 - 07:30.
Respuesta a Mira, he hecho lo que
No he modificado ningun codigo, de hecho este enlace es a la pagina de flavio stanchina, el hombre que ha "hecho" este instalador.. Yo no he vericado la firma y me ha funcionado perfectamente...
Enviado por miguel1111 el 29 Marzo, 2005 - 07:40.
Respuesta a Mira, he hecho lo que
Efectivamente mi archivo tar.gz tiene el mismo tamaño que el tuyo, pese a todo me ha funcionado (creo recordar que sin ningun error). Solo me queda sugerirte que intentes evitar la comprobacion de la firma
Enviado por andandare el 29 Marzo, 2005 - 13:50.
Respuesta a Efectivamente mi archivo tar.gz tiene
Gracias por contestar.
Voy a repetir el proceso y comento mis avances aquí mismo por si a alguien le ocurriese lo mismo.
Un saludo.
---
El que tiene un poder de proporcionar un bien, tiene la responsabilidad de evitar su mal.
Linux Registered User #297006
Smartly using GNU/Linux Debian since
Enviado por andandare el 29 Marzo, 2005 - 22:18.
Respuesta a Efectivamente mi archivo tar.gz tiene
Leyendo más detenidamente el artículo en el que te basaste me he dado cuenta de que los drivers no son libres y he encontrado la otra forma de hacer las cosas en
http://dri.freedesktop.org/wiki/
Gracia por toda la atención que me has prestado, miguel1111.
Un saludo.
---
El que tiene un poder de proporcionar un bien, tiene la responsabilidad de evitar su mal.
Linux Registered User #297006
Smartly using GNU/Linux Debian since
Enviado por miguel1111 el 1 Abril, 2005 - 02:18.
Respuesta a Leyendo más detenidamente el artículo
Por supuesto que hay otra forma de hacerlo, usando los drivers dri, pero no hay comparacion en rendimiento de la tarjeta. Dentro del poco rendimiento que tienen las tarjetas ati en linux, esta es la unica forma de obtener un rendimiento aceptable..
