Cómo instalar drivers de la tarjeta gráfica

ATENCIÓN: agradecería correcciones sobre los, posiblemente muchos, fallos que haya en este documento antes de pasarlo a la documentación (y si es después también vale). Fallos tanto de contenido/conceptos como de estilo, porque estos días estoy espesito y me temo que me salió un manual más denso de lo deseable :)

Una de las dudas más comunes es "¿Cómo instalo los drivers de mi tarjeta gráfica?". Aunque ya fue respondida infinidad de veces, esa duda sigue apareciendo en los foros de cuando en cuando. Así que ya es hora de hacer un manual sobre ello, para que la duda no vuelva a aparecer (o, si aparece, poder responder con un mero enlace). ¡Vamos a ello!

Lo primero de todo es aclarar, por si fuese necesario, qué es un driver (en español, controlador, aunque por costumbre utilizo el término inglés).

Un driver es un software (la parte lógica de un ordenador, la que sólo puedes maldecir) que permite al sistema "hablar" con una determinada pieza de hardware (la parte física del ordenador, a la que le puedes dar patadas).

Es decir, los drivers permiten que tu Linux le diga a la tarjeta gráfica, a la tarjeta de sonido, al cdrom, etc, lo que tiene que hacer. Para un mismo hardware puede haber varios drivers distintos, que difieren en la estabilidad del driver, las funcionalidades a las que permite acceder, quién y por qué lo hizo, etc.

Drivers libres y privativos

En lo que respecta a la instalación de drivers para la tarjeta gráfica, el punto más importante a considerar es la licencia del driver: si es libre o privativo.

Espera, ¿que no sabes qué son el software libre y el software privativo (ambos nombres están enlazados a sus artículos de Wikipedia en español donde podrás aprender más sobre el tema)? En resumidas cuentas, el software libre es aquél que puedes usar, copiar, modificar y distribuir libremente, y el privativo el que no (es decir, te priva de la libertad de hacer eso).

Dejando a un lado motivos ideológicos y tecnológicos (el software libre es éticamente bueno y de más calidad técnica), el que un driver sea libre tiene una ventaja muy importante para los usuarios, y ésta es que el driver puede incluirse en el kernel de Linux (el software más básico del ordenador, que coordina todos los drivers).

¿Y qué ventaja tiene que un driver esté incluido en el kernel? Pues la ventaja es que si un driver está en el kernel, el hardware asociado funcionará sin tener que hacer nada especial (en la mayoría de los casos).

¿Quiere decir eso que si el driver no está en el kernel sudaré sangre para conseguir que funcione? En absoluto, es sencillo instalar un driver privativo. Pero entre que funcione sin más, o que haya que instalar algo para que funcione, yo prefiero lo primero ;)

Actualmente, los 3 tipos de tarjetas gráficas más importantes y comunes son NVidia, ATI e Intel. Bueno, las tarjetas gráficas en sí pueden ser de muchas marcas distintas, pero los chips que utilizan suelen ser de una de esas tres marcas. No obstante, para los drivers lo que importa son los chips que utilizan, así que nos referiremos (incorrectamente) a las tarjetas gráficas y sus marcas para referirnos a los chips de las tarjetas gráficas y sus marcas. Y si no te quedó claro, vuelve a leerlo ;)

Dependiendo del tipo de tarjeta, podemos tener disponibles drivers libres o privativos con diferentes características. En el caso de las Intel, los drivers oficiales (que ofrecen aceleración 2D y 3D) son libres. Aquí puede verse la lista de tarjetas soportadas.

En el caso de NVidia, existen drivers oficiales tanto libres como privativos. La diferencia, notable, es que los libres sólo tienen aceleración 2D, mientras que los privativos tienen aceleración 3D. Aquí puedes ver la lista de tarjetas soportadas por los drivers privativos. Ha de tenerse en cuenta, además, que algunas tarjetas ya no se soportan en las versiones más modernas de los drivers, sino que deben usarse drivers "viejos" para hacerlas funcionar.

Finalmente, para ATI existen drivers oficiales privativos, y drivers no oficiales libres, ambos con aceleración 3D. No obstante, reconozco no tener mucha idea sobre los drivers de ATI, por lo que quien quiera puede completar esta información ;)

Además, existe un driver libre adicional, llamado vesa, que puede ser utilizado como último recurso si nuestra tarjeta no está soportada por ninguno de los demás drivers. No obstante, el driver vesa, aunque permite mostrar la interfaz gráfica, carece de aceleración. Es un driver muy básico a utilizar cuando no hay más opción.

Con todo esto, la forma de instalar los drivers para nuestra tarjeta gráfica cambiarán dependiendo de si son libres o privativos. Es más, la forma cambiará incluso dependiendo del "sabor" de Mandriva que estemos utilizando, ya que algunos llevan de serie drivers privativos mientras que otros no.

Sabores de Mandriva

Los "sabores" de Mandriva son las diferentes ediciones disponibles de Mandriva: Free, One, Discovery y Powerpack. Mandriva Free es una edición gratuita que contiene única y exclusivamente software libre. Mandriva One es una versión en LiveCD, también gratuita, que incluye tanto software libre como drivers privativos. Discovery y Powerpack son versiones de pago de Mandriva que contienen software y drivers libres y privativos.

Cabe notar que todo, absolutamente todo el software libre disponible en Mandriva puede obtenerse desde los repositorios públicos y gratuitos. Desde Mandriva 2007.1, también los drivers privativos están disponibles públicamente y de forma gratuita en el repositorio non-free (en versiones anteriores se encontraban en la rama de software no libre de PLF (Penguin Liberation Front)). Así pues, en cualquier sabor de Mandriva podemos instalar los drivers privativos desde los repositorios públicos.

La instalación de los drivers libres es trivial en todos los sabores de Mandriva, al igual que ocurre con la instalación de los drivers privativos en Mandriva One, Discovery y Powerpack. La instalación de los drivers privativos en Mandriva Free tiene un poco más de miga, pero nada realmente complicado.

Mandriva One es un LiveCD instalable, de forma que cuando arranca el sistema automáticamente selecciona el mejor driver disponible para la tarjeta gráfica y lo utiliza. Al instalar desde el icono del escritorio, ya instala el driver que está utilizando. Listo, nada más que hacer :D

Mandriva Free, Discovery y Powerpack, en cambio, son DVDs de instalación/actualización. Esto quiere decir que es el usuario quien tiene el control sobre qué se instala, qué configuración se utiliza y demás. En la mayor parte de los casos, el propio instalador deduce qué driver de los que tiene disponibles (recordemos que la edición Free sólo tiene drivers libres) es el más apropiado para nuestra tarjeta. No obstante, en ciertas ocasiones tenemos que darle una ayudita.

Así, al llegar a la ventana de configuración del instalador, donde se especifica la configuración de la tarjeta gráfica, de la impresora, de la tarjeta de sonido, etc... puede darse el caso de que la tarjeta gráfica aparezca como "No configurada". Si ése fuese el caso, habría que pulsar en el botón "Configurar..." y especificar el modelo de la tarjeta gráfica y del monitor.

El mismo programa mediante el que se configura la tarjeta gráfica en la instalación se utiliza para realizar dicha configuración en el funcionamiento normal del sistema: drakx11.

DrakX11

El lector atento se habrá percatado de que, por ahora, no abordamos cómo instalar drivers privativos en nuestra Mandriva Free. El lector más atento todavía, podrá suponer a raíz del título de este apartado y lo mencionado en el párrafo anterior que será ahora cuando lo expliquemos.

Entre los múltiples y útiles asistentes de los que dispone Mandriva (recordemos que TODOS son software libre), tenemos drakx11 (también llamado XFdrake). Su función es la configuración de la tarjeta gráfica, el monitor y su resolución.

Una característica importante a destacar de drakx11 es que tiene dos tipos de interfaces de usuario: gráfica y en consola. Dependiendo de si hay un servidor gráfico activo o no, al invocarlo automáticamente él mismo mostrará una interfaz u otra. Esto es muy útil cuando, por algún motivo, el servidor gráfico no funciona y tenemos que reconfigurarlo de nuevo. Incluso en esa situación, drakx11 seguirá funcionando y nos permitirá establecer la configuración fácilmente.

Para que drakx11 (y algunos otros asistentes) pueda hacer su magia, generalmente los repositorios (concretamente, el repositorio non-free de Mandriva, o en su defecto de PLF) deben estar configurados (de modo que pueda instalar los paquetes que sean necesarios de forma automática).

Esto es indispensable en un sistema instalado, aunque cuando se ejecuta drax11 desde el instalador del DVD no es necesario (es posible, no obstante, pero no necesario, ya que una vez instalado el sistema pueden configurarse los repositorios y reconfigurarse la tarjeta gráfica si durante la instalación no estuviese disponible el driver óptimo, como ocurriría en una Mandriva Free con los drivers privativos).

Instalar paquetes adicionales deberá hacerse cuando el driver de la tarjeta gráfica esté en un paquete separado del kernel, es decir, cuando el driver sea privativo (ya que los drivers libres de tarjetas gráficas recordemos que van incluidos en el kernel).

Por tanto, algunas tarjetas no necesitarán que los repositorios estén configurados para que drakx11 pueda usarse con ellas... pero eso no quita para que configurar los repositorios sea igualmente una de las primeras cosas que debe hacerse al instalar una distribución de Linux.

Con todo esto, ¿cómo utilizo drakx11 para configurar mi tarjeta gráfica? Lo primero de todo, como es lógico, es arrancar drakx11. Hay varias posibilidades, a saber:

Ahora que ya tenemos drakx11 abierto ante nosotros, simplemente pulsaremos en el botón al lado de Tarjeta gráfica. Esto nos mostrará una nueva ventana con una serie de marcas de tarjetas gráficas (bastantes más que NVidia, ATI e Intel, si bien muchas de ellas son marcas antiguas ahora desaparecidas que se mantienen en la lista por compatibilidad). Dentro de cada marca, aparecen las familias de tarjetas gráficas, no modelos concretos (ya que si fuese por modelos en lugar de por familias, la lista sería eterna). Seleccionamos la familia a la que pertenece nuestra tarjeta gráfica, y aceptamos.

En caso de que para nuestra tarjeta gráfica haya disponible un driver privativo (bien porque los repositorios están configurados, bien porque sea el DVD de instalación de Mandriva Discovery o Powerpack), drakx11 nos preguntará si deseamos utilizarlo. Si aceptamos, él mismo instalará el driver y todo aquello que necesitase para hacerlo funcionar de forma automática.

Además de la organización por marcas de la tarjeta gráfica, existe una categoría para drivers de X.Org, genéricos. Entre ellos están el driver vesa mencionado anteriormente, o nv, el driver libre de NVidia. Sin embargo, los drivers genéricos de X.Org deben usarse como última opción, cuando los drivers normales por familias de tarjetas no sirven. Es más, si se selecciona una tarjeta NVidia y no se escoge (o no está disponible) usar el driver privativo, implícitamente y de forma automática drakx11 escogerá por sí mismo el driver nv.

Una vez instalado el driver (haya paciencia, ya que puede llevarle cierto tiempo en el caso de los privativos ;) ), de vuelta en la pantalla principal de drakx11, es importante probar la configuración seleccionada para evitar sorpresas. Pulsando el botón Probar deberían aparecernos una serie de rayas verticales en un patrón similar a varios arcoiris, y un diálogo preguntándonos si la configuración es correcta. Si vemos dichas rayas verticales y el diálogo, lo más probable es que la configuración sea correcta, por lo que podemos decirle que sí.

Si la configuración no es correcta, la familia de tarjeta gráfica puede estar mal seleccionada, la resolución escogida puede ser superior a la máxima representable por el monitor... Lo mejor es revisar la configuración, y si sabemos que todo está bien... entonces estamos ante un problema.

Si estábamos ejecutando drakx11 en modo gráfico, al salir nos dirá que debemos salir de la sesión y volver a entrar. Esto no es reiniciar el ordenador, sino simplemente salir de la sesión del usuario para que se pueda reiniciar el servidor gráfico y utilizar el nuevo driver escogido. Una vez hecho esto, y si todo fue bien, ya está. Ya tenemos nuestro driver instalado y funcionando. No fue tan complicado, ¿verdad? :)

DKMS

Es posible que te estés preguntando algo así como "Todo esto es muy bonito, pero si los drivers no están en el kernel, ¿qué pasa cuando actualizo el kernel? ¿Qué ocurre con los drivers?". Buena pregunta. Aquí es donde entra en juego DKMS.

DKMS son las siglas de Dynamic Kernel Module Support (soporte para módulos dinámicos del kernel). Su función es permitir con facilidad el uso de drivers no incluidos en el propio kernel. Se utiliza tanto para drivers privativos, como para drivers libres muy específicos (por ejemplo, el driver kqemu utilizado por la máquina virtual qemu) que no están incluidos en el kernel.

La idea es la siguiente. Ya que el driver no está en el propio kernel, DKMS compila los drivers cuando se arranca Linux con un kernel nuevo (sólo la primera vez que se arranca con dicho kernel). Una vez compilados, los drivers ya pueden usarse con el kernel en cuestión.

Por tanto, si se utiliza DKMS, al actualizar el kernel y arrancar con él, los drivers propietarios de nuestra tarjeta gráfica se compilarán automáticamente sin que nosotros tengamos que hacer nada.

Hay que tener una cosa en cuenta, eso sí. Para que los drivers puedan compilarse, debemos tener exactamente la misma versión del paquete kernel como del kernel-sources (que contiene el código fuente del kernel). En lugar del kernel-source, puede tenerse instalado el kernel-source-stripped, que es una versión reducida (sin comentarios en el código y cosas así) de los fuentes del kernel.

Por defecto, el kernel y el kernel-source no se actualizan automáticamente, sino que ha de hacerse explícitamente. Así mismo, la actualización del kernel no implica la actualización del kernel-source, sino que debe indicarse también explícitamente.

Éste es uno de los motivos por los que DKMS puede tener problemas: cuando se actualiza el kernel y por error no se actualiza su código fuente. No obstante, poniendo cuidado en este aspecto, no debería haber problemas.

Cuando drakx11 instala los paquetes con los drivers propietarios para la tarjeta gráfica, instala 3 paquetes, a saber: driver, dkms-driver y driver-kernel (donde "driver" es el nombre del driver, por ejemplo, ati, nvidia96xx, etc).

El primero contiene el driver binario para X.Org empaquetado para Mandriva. El segundo, el paquete DKMS del driver, que compila la interfaz del driver para el kernel (es decir, prepara el puente para poder usar el driver binario en el kernel). El tercero reconozco no estar muy seguro de qué es. Parece ser un paquete DKMS para una versión concreta del kernel (la indicada por la versión del paquete), pero desconozco su utilidad, ya que únicamente con los paquetes driver y dkms-driver debería funcionar.

No existen dependencias entre ninguno de los tres paquetes, por lo que pueden instalarse o desinstalarse individualmente... con los problemas que ello puede conllevar (por ejemplo, que esté instalado el paquete DKMS, pero falte el binario, o viceversa). drakx11, no obstante, reinstala los paquetes que hubiesen podido ser eliminados por error, así que no hay problema ;)

¡Pero yo no tengo internet!

Hasta ahora, hemos asumido que los repositorios pueden ser usados sin ningún problema. No obstante, hay quien no dispone de Internet, por lo que no puede configurar los repositorios de paquetes por FTP/HTTP. Dado que drakx11 se apoya en la disponibilidad de los paquetes de los repositorios para instalar drivers privativos (de nuevo recordemos que para drivers libres no hay ningún problema), ¿qué podemos hacer?

Posiblemente este tema daría para un manual por sí mismo, pero veremos aquí de forma resumida qué es lo que habría que hacer. De entre las opciones disponibles, veremos la más sencilla, aunque por ello también la menos práctica.

Bueno, en honor a la verdad, la opción más sencilla sería comprar una Mandriva Discovery o Powerpack en caja e instalarla, o en su defecto descargar de algún modo una Mandriva One gratuita (aunque recordemos que ésta, aunque bastante completa, es un LiveCD mientras que las otras son DVDs, y por tanto incluyen más software). Pero asumiremos que, por la razón que sea, instalamos una Mandriva Free, queremos drivers privativos y no tenemos Internet en nuestro ordenador.

Lo primero de todo es saber qué paquete tenemos que instalar. Es decir, hemos de averiguar el driver que utiliza nuestra tarjeta gráfica. Para ello, nada mejor que ir a la página web del fabricante y buscar ahí qué drivers son usados con qué tarjetas.

Una vez sabemos qué driver necesitamos, descargamos los paquetes rpm driver y dkms-driver de algún repositorio y lo llevamos a nuestro ordenador. Ahora, abrimos una terminal y nos dirigimos en la terminal hasta el directorio que contiene el archivo rpm (para cambiar de directorio en consola se utiliza la orden cd directorioDestino). Una vez en dicho directorio, utilizaremos urpmq para conocer las dependencias del paquete que todavía no fueron instaladas: urpmq -m nombreArchivoDriver.rpm.

Una vez conocemos las dependencias, las apuntamos en algún lugar, las descargamos manualmente desde un repositorio y las llevamos a nuestro ordenador sin Internet. Ubicamos dichas dependencias en el mismo directorio que el archivo rpm que contiene el driver, hacemos doble click sobre dicho rpm (o en su defecto, en una consola, urpmi nombreArchivoDriver.rpm) y se instalarán el driver y sus dependencias (deben estar en el mismo directorio todos). Una vez hecho esto, ya podemos ejecutar drakx11, seleccionar la familia de nuestra tarjeta gráfica, y listo, él hará el resto (la configuración a bajo nivel del servidor gráfico).

Driver oficial

Además de todo lo visto hasta ahora, los drivers privativos de ATI y NVidia están disponibles para bajar en forma de instalador en sus respectivas páginas. Sin embargo, si el driver está disponible empaquetado para Mandriva, ¿por qué usarlo?

En principio, el único motivo por el que podría interesar usarlo es para tener la última versión disponible del driver. Por algún motivo que ignoro, los drivers en el repositorio non-free público no están todo lo actualizados que deberían. Sin embargo, los drivers en PLF sí están en la última versión disponible, y también utilizan DKMS, por lo que si es indispensable tener la versión más actualizada, con instalar la versión empaquetada por PLF es suficiente.

De hecho, teniendo los repositorios configurados adecuadamente, al realizar las actualizaciones del sistema los paquetes más actuales sustituirán a sus versiones anteriores sin tener que realizar nosotros mismos la instalación explícitamente, incluso si el nuevo paquete es de PLF y el antiguo del repositorio non-free de Mandriva.

Así pues, no hay necesidad de utilizar el binario oficial. Salvo excepciones muy concretas, cuando hay disponible un mismo programa, driver, biblioteca... en formato binario genérico o empaquetado explícitamente para Mandriva, lo mejor es utilizar el paquete para Mandriva.

Y hasta aquí hemos llegado. Felicidades a quien aún siga despierto después de toda esta parrafada ;)