Gráficas NVIDIA en Debian

Indice

1. Introducción

2. Instalación

2.1. Driver libre "nv"
2.2. Driver libre "nouveau"
2.3. Driver privativo "nvidia"
2.3.1. Instalación desde los repositorios (squeeze)
2.3.1.1. Instalación en squeeze (Modo resumido)
2.3.2. Mediante module-assistant
2.3.3. Mediante el instalador de nVidia (.run)

3. Configuración de Xorg

4. Desinstalación

4.1. Drivers libres
4.2. Driver privativo
4.2.1. Instalado mediante module-assistant
4.2.2. Instalado mediante el instalador de nVidia (.run)

5. Problemas comunes





1. Introducción:

nVidia ciertamente ofrece drivers de calidad aceptable para sus tarjetas gráficas, pero también existen alternativas libres logradas a base de ingeniería inversa y mucho esfuerzo por parte de la comunidad.

Los drivers libres como 'nv' o 'nouveau' poseen capacidad de aceleración 2D, y además 'nouveau' cierta capacidad de aceleración 3D. Éstos son suficientes si no se requiere de efectos de escritorio ni uso de aplicaciones 3D, como juegos o programas de modelado.

En el caso de necesitar aceleración 3D, y mientras 'nouveau' no alcance una estabilidad aceptable, la única opción es usar los drivers privativos. Para esto Debian puede facilitarnos la tarea o podemos acudir al instalador oficial de nVidia.

En este artículo se trata de explicar la instalación, configuración y desinstalación de todos los drivers.

2. Instalación:

2.1. Driver libre "nv":

Hasta la versión Lenny: en la instalación estándar de Debian, este es el driver que se instalará si tu tarjeta gráfica es nvidia, por lo que en esta guía (por el momento) no se explica su instalación.
A partir de Squeeze: nv sigue siendo una opción a considerar si tu tarjeta gráfica es relativamente vieja o si nouveau te está dando problemas. Ten en cuenta que "nv" es un driver cuyo soporte a los nuevos modelos de tarjetas cesó hace tiempo, recomendándose desde Nvidia el uso del driver genérico "vesa" o del privativo "nvidia".

2.2. Driver libre "nouveau":

Es el driver para tarjetas Nvidia desarrollado por la comunidad de software libre, cuyo objetivo es ser proveer un driver libre de calidad para este tipo de tarjetas y sustituir, con el tiempo, al obsoleto driver "nv" desarrollado por Nvidia.

NOTA IMPORTANTE: Actualmente, Nouveau está disponible tanto en Squeeze como en Sid y es el driver que se selecciona por defecto siempre que no se indique lo contrario (por ejemplo, en ausencia de xorg.conf). La parte relacionada con el DRM está incluída en el kernel desde la versión (en formato debian) 2.6.32-4. La parte de las X se reduce a paquete xserver-xorg-video-nouveau.

Para instalarlo hay que tener en cuenta lo siguiente:

  • La aceleración 2D tiene una madurez suficiente para trabajar en el día a día.
  • El uso de KMS es obligado, forma parte del driver y es necesario. Es además el principal punto conflictivo para aquellos que quieren usar el driver de nvidia privativo. Es necesario, en aquellos casos, desactivar el KMS (metiendo por ejemplo el módulo nouveau en el blacklist de modprobe).
  • El driver tal y como lo proporciona el paquete de Debian no posee capacidad de aceleración 3D (a petición de los desarrolladores de nouveau). Si deseas tener soporte para aceleración 3D (totalmente experimental, y solo funciona en algunas tarjetas), dirígete al sitio de nouveau, donde se explica como compilar los drivers con soporte para Gallium3D.

Instalación:
El paquete "nvidia-glx" entra en conflicto con el paquete de 'nouveau', por lo que es recomendable no usar el driver privativo (instalado con m-a) mientras se instala el driver 'nouveau', ya sea realizando la instalación desde una tty, o desde el servidor gráfico usando un driver como el 'nv' o el 'vesa'.

Asimismo, si fuese necesario actualizar xorg, es recomendable hacerlo y comprobar el buen funcionamiento de la nueva versión antes de instalar 'nouveau'.

Pasos para la instalación:

  • Actualizar la lista de paquetes
    # aptitude update
  • Instalar el último kernel disponible de esa rama (nouveau disponible a partir de 2.6.32-4) y la parte de las Xorg
    # aptitude install linux-image-2.6.32-4-686 (alternativamente -amd64 o la arquitectura que estés usando).
    # aptitude install xserver-xorg-video-nouveau
  • Añadir a /etc/initramfs-tools/modules "nouveau modeset=1"
  • Editar el xorg.conf y sustituir el driver actual ('nv', 'vesa' o 'nvidia') por 'nouveau' (y eliminar opciones propias de otros drivers). Este paso es muy importante, puesto que si no se hace la máquina se quedará prácticamente bloqueada (aunque responde a un REISUB) al cargar el KMS de nouveau e intentar arrancar las X con un driver no compatible con ese KMS.
  • Reiniciar el sistema o cargar el módulo "modprobe nouveau modeset=1" y reiniciar las X

Nota: En caso de haber tenido instalado el driver privativo, será necesario descargar el módulo 'nvidia' antes de iniciar xorg con el nuevo driver (en otras palabras, hacer un modprobe -r nvidia).

2.3. Driver privativo "nvidia":

2.3.1. Instalación desde los repositorios (squeeze)

En la actual estable (squeeze) es muy simples instalar los driver de nvidia ya que están disponibles todos los paquetes necesarios en los repositorios, NO es necesario compilar con module-assistant (se requiere la sección contrib y non-free), osea, es necesario que el source.list tenga una linea semejante a esta:

deb http://ftp.debian.org/debian/ squeeze main contrib non-free

después de comprobar que tenga contrib y non-free conviene actualizar la lista de paquetes:

# aptitude update

y también conviene actualizar el sistema para que no genere errores de dependencias insatisfechas:

# aptitude full-upgrade

Nota: En algunos casos full-upgrade intenta eliminar paquetes obsoletos, si no deseamos que sea así, podemos usar:

# aptitude safe-upgrade

Después, para instalar nvidia, es necesario conocer el kernel actual del sistema:

# uname -r

Y luego como root habrá que instalar:

# aptitude install nvidia-kernel-2.6-686 nvidia-glx

Nota: hay que reemplazar "2.6-686" por el correspondiente al kernel actual.

Ahora ya esta instalada la tarjeta de nvidia, solo resta configurarla, para ello habrá que editar el archivo de configuración /etc/xorg.conf, esto se podrá hacer de forma automática, será necesario la siguiente herramienta nvidia-xconfig:

# aptitude install nvidia-xconfig 

luego de instalar hay que ejecutar el siguiente comando (como root):

# nvidia-xconfig

y ya...
Además nvidia puede ser configurada desde el entorno gráfico, con el programa nvidia-settings, que es una GUI escrita en gtk, esta GUI puede servirnos a la hora de configurar varios monitores, color, brillo, etc. para instalarla:

# aptitude install nvidia-settings 

Nota: Será necesario reiniciar para que tome los cambios, o desde la tty como root:

#modprobe nvidia
#/etc/init.d/[gdm kdm slim] stop
# modprobe -r nouveau
# modprobe nvidia
#/etc/init.d/[gdm kdm slim] start

2.3.1.1. Instalación en squeeze (Modo resumido)
Después de configurar el repositorio (agregando contrib y non-free):

# aptitude update && aptitude safe-upgrade && aptitude install -y nvidia-kernel-$(uname -r) nvidia-glx nvidia-xconfig nvidia-settings && nvidia-xconfig

Reiniciar...

2.3.2. Instalación mediante module-assistant:

Método general de instalación
Primero asegurarse de tener activada la sección non-free de nuestros repositorios.

Luego, instalar los drivers privativos de Nvidia en Debian usando module-assistant es tan sencillo como hacer los siguiente:

# aptitude install module-assistant
# m-a prepare
# m-a a-i nvidia

Por favor, refierase al manual de module-assistant en consola para ver las opciones disponibles, sobre todo si usa la opcion "purge", ejecute para ello:

#man m-a

Revisa antes los mensajes de error ya que muy probablemente no puedas instalarlo porque previamente exista una compilación errónea o "restos" de una mala instalación. En caso de no instalarse por éste motivo ejecuta:

#m-a clean nvidia

Vuelve al paso "2.3.2" para intentarlo de nuevo o continúa con el siguiente método:

# m-a a-i nvidia-kernel-source

Luego, para asegurarnos de tener todo actualizado:

# aptitude install nvidia-glx

En este punto, si todo ha salido bien, sólo resta editar el xorg.conf de modo que usemos el driver:
En la sección "Device" debe quedar especificado el driver 'nvidia':

Section "Device"
...
...
Driver          "nvidia"
...
EndSection

¿Que ventajas tiene este método con respecto al .run de nvidia?

Todo quedará mucho más integrado en Debian, y la desinstalación de estos drivers se hará mucho más sencilla (aptitude purge los_paquetes_que_fueren).

Casos especiales en las diferentes ramas de Debian

En Lenny no están los drivers completos. En Etch creo recordar que sí, y en Sid también (por supuesto, en las ramas non-free). Esto es sencillo de ver si usando los repositorios de lenny hacemos:

# apt-cache search nvidia

cpufreqd - fully configurable daemon for dynamic frequency and voltage scaling
dmraid - Device-Mapper Software RAID support tool
nvclock - Allows you to overclock your nVidia card under GNU/Linux
nvclock-gtk - Allows you to overclock your nVidia card under GNU/Linux
nvclock-qt - Allows you to overclock your nVidia card under GNU/Linux
nvidia-xconfig - The NVIDIA X Configuration Tool
nvtv - tool to control TV chips on NVidia cards under Linux
sensors-applet - Display readings from hardware sensors in your Gnome panel
trigger - free 3D rally racing car game
trigger-data - free 3D rally racing car game - data files
xserver-xorg-video-nv - X.Org X server -- NV display driver
nvidia-cg-toolkit - NVIDIA Cg Toolkit Installer
nvidia-kernel-common - NVIDIA binary kernel module common files
nvidia-settings - Tool of configuring the NVIDIA graphics driver
python-cg - nVidia Cg driver binding for Python

Que paquetes (básicos) nos faltan:
nvidia-glx (o nvidia-glx-legacy-loquesea)
nvidia-kernel-source

Así, metemos los repositorios de sid:

deb http://ftp.fr.debian.org/debian sid non-free

# apt-cache search nvidia

cpufreqd - fully configurable daemon for dynamic frequency and voltage scaling
dmraid - Device-Mapper Software RAID support tool
nvclock - Allows you to overclock your nVidia card under GNU/Linux
nvclock-gtk - Allows you to overclock your nVidia card under GNU/Linux
nvclock-qt - Allows you to overclock your nVidia card under GNU/Linux
nvidia-xconfig - The NVIDIA X Configuration Tool
nvtv - tool to control TV chips on NVidia cards under Linux
sensors-applet - Display readings from hardware sensors in your Gnome panel
trigger - free 3D rally racing car game
trigger-data - free 3D rally racing car game - data files
xserver-xorg-video-nv - X.Org X server -- NV display driver
nvidia-cg-toolkit - NVIDIA Cg Toolkit Installer
nvidia-kernel-common - NVIDIA binary kernel module common files
nvidia-settings - Tool of configuring the NVIDIA graphics driver
python-cg - nVidia Cg driver binding for Python
nvidia-glx - NVIDIA binary Xorg driver
nvidia-glx-dev - NVIDIA binary Xorg driver development files
nvidia-glx-legacy-71xx - NVIDIA binary Xorg driver (71xx legacy version)
nvidia-glx-legacy-71xx-dev - NVIDIA binary Xorg driver development files
nvidia-glx-legacy-96xx - NVIDIA binary Xorg driver (96xx legacy version)
nvidia-glx-legacy-96xx-dev - NVIDIA Xorg driver development files (96xx legacy version)
nvidia-kernel-2.6-486 - NVIDIA binary kernel module for 2.6 series compiled for 486
nvidia-kernel-2.6-686 - NVIDIA binary kernel module for 2.6 series compiled for 686
nvidia-kernel-2.6-k7 - NVIDIA binary kernel module for 2.6 series compiled for k7
nvidia-kernel-2.6.18-4-486 - NVIDIA binary kernel module for Linux 2.6.18-4-486
nvidia-kernel-2.6.18-4-686 - NVIDIA binary kernel module for Linux 2.6.18-4-686
nvidia-kernel-2.6.18-4-k7 - NVIDIA binary kernel module for Linux 2.6.18-4-k7
nvidia-kernel-legacy-2.6-486 - NVIDIA binary kernel module for 2.6 series compiled for 486
nvidia-kernel-legacy-2.6-686 - NVIDIA binary kernel module for 2.6 series compiled for 686
nvidia-kernel-legacy-2.6-k7 - NVIDIA binary kernel module for 2.6 series compiled for k7
nvidia-kernel-legacy-2.6.18-4-486 - NVIDIA binary kernel module for Linux 2.6.18-4-486 (legacy version)
nvidia-kernel-legacy-2.6.18-4-686 - NVIDIA binary kernel module for Linux 2.6.18-4-686 (legacy version)
nvidia-kernel-legacy-2.6.18-4-k7 - NVIDIA binary kernel module for Linux 2.6.18-4-k7 (legacy version)
nvidia-kernel-legacy-71xx-2.6-686 - NVIDIA binary kernel module for 2.6 series compiled for 686
nvidia-kernel-legacy-71xx-2.6-k7 - NVIDIA binary kernel module for 2.6 series compiled for k7
nvidia-kernel-legacy-71xx-2.6.18-4-686 - NVIDIA binary kernel module for Linux 2.6.18-4-686 (legacy version)
nvidia-kernel-legacy-71xx-2.6.18-4-k7 - NVIDIA binary kernel module for Linux 2.6.18-4-k7 (legacy version)
nvidia-kernel-legacy-71xx-source - NVIDIA binary kernel module source (71xx legacy version)
nvidia-kernel-legacy-96xx-2.6-686 - NVIDIA binary kernel module for 2.6 series compiled for 686
nvidia-kernel-legacy-96xx-2.6-k7 - NVIDIA binary kernel module for 2.6 series compiled for k7
nvidia-kernel-legacy-96xx-2.6.18-4-686 - NVIDIA binary kernel module for Linux 2.6.18-4-686 (legacy version)
nvidia-kernel-legacy-96xx-2.6.18-4-k7 - NVIDIA binary kernel module for Linux 2.6.18-4-k7 (legacy version)
nvidia-kernel-legacy-96xx-source - NVIDIA binary kernel module source (96xx legacy version)
nvidia-kernel-source - NVIDIA binary kernel module source

Ahora sí, ya podemos instalar los drivers usando module-assistant.

2.3.3. Instalación mediante el instalador de nvidia:

Para conseguir el driver debemos ir a la siguiente URL AQUI

Instalación:

- Entramos en un terminal (CTRL+ALT+F1) y nos logeamos como root:

$su root

- Desactivamos las X:

Depende de lo que utilices, deberás ejecutar:
GDM: #/etc/init.d/gdm stop
KDM: #/etc/init.d/kdm stop
XDM: #/etc/init.d/xdm stop

Como alternativa, puedes pasar a modo monousuario con:

#init 1

- Verificamos cual es la version de nuestro Kernel instalado:

#uname -r

ó

#uname -a

Y apuntamos el resultado para usarlo en el siguiente paso.

- Agregamos a la instalación de nuestro sistema los siguientes componentes:

apt-get install linux-headers-"aqui colocamos la versión que nos aparecio al hacer uname -r" gcc make

Ejemplo para la version "2.6.25-2-486" del kernel (esto puede variar según el resultado del paso enterior):

#apt-get install linux-headers-2.6.25-2-486 gcc make

- Instalamos el driver; nos ubicamos en el lugar donde lo hemos descargado y escribimos:

#sh NVIDIA-Linux-x86-173.14.12-pkg1.run

La pantallas que aparecerán después son simples cuadros de dialogos en inglés, les suguiero traducirlos y tomar una decisión (no es nada dificil).

En la parte que nos dice del tipo de compilador que estamos usando (gcc) y que no es quizá el mismo que tenemos instalado, tan solo le damos un NO y continuamos con nuestra instalación.

El instalador nos preguntará casi al final si queremos que auto configure el archivo "xorg.conf", pues le decimos SI.

Ojo: Leamos bién los cuadros de diálogo..!!

Para pre finalizar, reiniciamos las X. Dependiendo de que utilices, ejecutarás:

GDM: /etc/init.d/gdm restart
KDM: /etc/init.d/kdm restart
XDM: /etc/init.d/xdm restart

Si pasaste a modo monousuario:

#init 2 && startx

- Para finalizar, verificamos que todo marche bien: quizá nuestro idioma de teclado haya cambiado, pero eso lo restauramos copiando o modificando la sección correspondiente al teclado y que tenemos guardado en nuestro backup de los archivos xorg.conf.old)

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Generic Keyboard" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Los resaltados con negro deben ser escritos iguales, porque sino, arrojaría un error (es simple, solo precaución)

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "latam"
EndSection

3. Configuración del xorg:

En este manual, por el momento, la configuración del xorg se explicó arriba en la sección correspondiente del capítulo "Instalación".

4. Desinstalación:

4.1. Desinstalación de los drivers libres:

4.2. Desinstalación del driver privativo:

4.2.1. Desinstalación del driver privativo instalado mediante module-assistant:

Tan sencillo como escribir en consola (como root):

# aptitude purge nvidia

4.2.2. Desinstalación del driver privativo instalado mediante el instalador de nvidia:

Tan sencillo como escribir en consola (como root):

# nvidia-uninstall

Y lo hace todo automágicamente.

5. Problemas comunes: