Installazione driver proprietari Nvidia

Versione del 20 giu 2010 alle 23:04 di S3v (discussione | contributi) (Annullata la modifica 21207 di S3v (Discussione))
Debian-swirl.png Versioni Compatibili

ERRORE: valore non valido ( Tutte le versioni di Debian )! Vedi qui.

Introduzione

L'installazione dei driver proprietari Nvidia su Debian si può fare in tre modi, tutti abbastanza semplici da mettere in pratica.

Il primo metodo prevede di utilizzare l'installer automatico fornito da Nvidia: si tratta di uno script per la shell che tramite un menù ci guida nell'installazione. Questo metodo, per quanto semplice e funzionale, ha uno svantaggio: aggira il sistema di gestione dei pacchetti (APT nel caso di Debian, ma anche qualunque altro), con il risultato che questo non saprà mai dell'esistenza del modulo e non potrà aiutarci nella gestione di eventuali dipendenze o conflitti con altri pacchetti.

Il secondo metodo utilizza un tool specifico di Debian: module-assistant. Module-assistant è un programma che permette di automatizzare la compilazione di molti moduli proprietari, e la creazione di pacchetti .deb contenenti i moduli compilati, per la successiva installazione tramite APT. Lo svantaggio di questo metodo è che non tutte le versioni dei driver sono disponibili (vedi il paragrafo successivo "Versioni del driver") e, per quelle che ci sono, gli aggiornamenti arrivano sempre con qualche giorno di ritardo rispetto all'installer, come è ovvio che sia.

Il terzo metodo prevede l'installazione dei driver proprietari attraverso l'installazione di pacchetti presenti nei repository di Debian.

Warning.png ATTENZIONE
Si raccomanda di usare uno solo dei tre metodi proposti.


Versioni del driver

Attualmente esistono tre serie di driver NVIDIA:

  • 7xxx (legacy): supporta solo le schede video più datate.
  • 8xxx (stabile): supporta le schede video più recenti
  • 9xxx (beta): versione di sviluppo (necessaria se si vuole usare compiz).

Metodo 1: l'installer Nvidia

Occorrente

Ecco di cosa abbiamo bisogno per l'installazione:

  • Headers del kernel che stiamo utilizzando (occhio alle subversion, per controllare si può usare uname -r) o, in alternativa, i sorgenti dello stesso kernel (gli headers fanno parte dei sorgenti, ed esistono come pacchetto indipendente solo ed esclusivamente per poter compilare moduli fuori dal kernel senza dover scaricare tutto il kernel).

Per installarli, è sufficiente digitare:

# apt-get install linux-headers-`uname -r`
  • Driver corretto per la nostra architettura scaricabile da www.nvidia.com
Info.png Nota:
se avete compilato un kernel personalizzato, il pacchetto degli headers per il vostro kernel può non esistere, nel qual caso dovete usare i sorgenti del kernel configurati; se avete compilato un kernel personalizzato con kernel-package (Debian Kernel Howto), invece, potete generare e utilizzare il pacchetto kernel-headers con la stessa utility.


Cosa fare

Prima di tutto occorre chiudere X. Non basta fare logout, bisogna proprio killare il server grafico: se avete installato un desktop manager andate in una console non grafica (per es. con Ctrl+Alt+F1), e usate, da root:

# invoke-rc.d gdm stop

se il vostro desktop manager è GDM, oppure:

# invoke-rc.d kdm stop

se il vostro desktop manager è KDM.

Ora, controllate (con ls -l) che il link /usr/src/linux punti agli headers del kernel in funzione o ai sorgenti.

In caso contrario,

 ln -s /usr/src/linux-`uname -r` linux 

Si noti che i sorgenti devono essere configurati esattamente come il nostro kernel corrente.

Per fare un esempio supponiamo di aver installato il .deb dei sorgenti, e di doverli quindi configurare:

$ cd /usr/src
$ tar xvfj linux-source-xxx
$ cd linux-source-xxx
$ cp /boot/config-`uname -r` .config
$ make oldconfig

dopo di che siamo pronti per avviare l'installazione.

Warning.png ATTENZIONE
Potreste aver già installato un driver NVIDIA, in questo caso:
  1. Se lo avete installato voi, allora questa guida non vi serve perché sapete già come fare :)
  2. Se ve lo ha installato un'altra persona, allora potete tranquillamente dire all'installer di sovrascriverlo se state installando una versione più aggiornata.


Per avviare l'installazione dobbiamo spostarci nella directory dove abbiamo salvato il driver Nvidia e dare il comando:

# sh NVIDIA-*

dove NVIDIA-* è il nome del driver che abbiamo scaricato.

Info.png Aggiornamento:
con X.org 7.0 è cambiata la locazione dei driver del server grafico, ed è necessario dire all'installer dove deve mettere i driver, pena il non funzionamento dei driver stessi, e anche il probabile malfunzionamento delle applicazioni che usano OpenGL. Il comando per l'installazione diventa:
# sh NVIDIA-* --x-module-path=/usr/lib/xorg/modules/

Con le versioni più recenti dei driver la specificazione del percorso può essere omessa.


Una volta avviato l'installer comparirà un menù interattivo che ci guiderà nell'installazione, dove dovremo rispondere alle domande dicendo che vogliamo installare il driver.

Il nuovo installer permette l'aggiornamento automatico di xorg.conf. Potete farlo anche a mano, semplicemente editando il file /etc/X11/xorg.conf come indicato nella sezione successiva.

Warning.png ATTENZIONE

Durante l'installazione potremmo essere avvertiti del fatto che la versione di gcc non è corretta. Per verificare la corretta versione in uso usiamo il terminale:

$ cat /proc/version
Linux version 2.6.32-5-686 (Debian 2.6.32-15) (ben@decadent.org.uk) 
(gcc version 4.3.5 (Debian 4.3.5-1) ) #1 SMP Tue Jun 1 04:59:47 UTC 2010

in questo caso il comando da dare sarà:

# CC=/usr/bin/gcc-4.3 sh NVIDIA*.run

Attualmente in testing con l'arrivo del nuovo kernel 2.6.32-5 si possono riscontrare interferenze nell'installazione del driver proprietario da parte di nouveau. Occorrerà blacklistare nouveau inserendo in /etc/modprobe.d/blacklist.conf la seguente riga

blacklist nouveau


Dopo aver installato il driver per il kernel può essere utile installare il tool grafico per configurarlo:

# aptitude install nvidia-settings

ricordate che molte delle impostazioni che potete modificare con nvidia-settings necessitano del riavvio della sessione per avere effetto.

In fine possiamo far ripartire il server grafico con il comando:

# invoke-rc.d gdm start

oppure:

# invoke-rc.d kdm start

Driver Nvidia per diversi kernel

Molto spesso si avverte l'esigenza di dover avviare il driver Nvidia per ciascun kernel presente nel nostro sistema. L'installazione di default del driver per uno specifico kernel, infatti, rimuove una precedente installazione eseguita per un kernel differente; questo costringe ad avviare l'installer Nvidia ogni volta che si avvia un diverso kernel dal menù di Grub. Per evitare questo fastidio basta lanciare l'installer passandogli l'opzione -K. In questo modo verrà installato solo il modulo Nvidia per il kernel corrente senza disinstallare il precedente driver:

$ sh NVIDIA-* -K

Questo comando presuppone che il driver Nvidia sia già stato installato almeno una volta con il metodo descritto nel precedente paragrafo e che la versione del driver sia esattamente la stessa del modulo che si va ad installare.

Metodo 2: module-assistant

Occorrente

Per usare questo metodo è sufficiente una connessione ad internet, oltre, ovviamente, a module-assistant: se non l'abbiamo:

# aptitude install module-assistant

Cosa fare

Come per l'altro metodo, bisogna fermare il server grafico, e poi non dobbiamo fare altro che lanciare module-assistant:

<Ctrl+Alt+F1> ----> login come root

# invoke-rc.d kdm stop
# m-a

module-assistant ci mostra un menu grafico (ncurses) tramite il quale dobbiamo, nell'ordine:

  • aggiornare la lista dei pacchetti disponibili;
  • preparare il sistema per la compilazione;
  • selezionare il modulo da compilare dalla lista fornita;
  • compilare;
  • installare il pacchetto ottenuto;

il tutto senza uscire da m-a.

  Nota:
module-assistant si occupa automaticamente di installare un compilatore se non l'avete, e anche gli headers del kernel. Se possedete già gli headers giusti, o anche l'intero kernel (che, ricordo, deve essere configurato esattamente come il vostro kernel), è sufficiente controllare di avere impostato il link simbolico /usr/src/linux in modo che punti agli headers o ai sorgenti:
# ln -s /usr/src/linux-headers-xxx /usr/src/linux


A questo punto bisogna modificare /etc/X11/xorg.conf, nella sezione "Device", in modo che nella riga "Driver" sia scritto nvidia (di solito al posto di nv o vesa), inoltre bisogna sostituire, nella sezione "Module", le righe:

Load    "dri"
Load    "GLcore"

con la riga:

Load    "glx"


Se invece di una nuova installazione state facendo un aggiornamento, è probabile che sia ancora in memoria il modulo vecchio: potete controllare con:

$ lsmod | grep nvidia

se il modulo viene elencato non dovete fare altro che rimuoverlo prima di riavviare il server grafico (da root):

# rmmod nvidia


Ora non resta che installare i driver per xfree/xorg (che sono sempre proprietari, ma non sono da compilare, e in Debian sono in un pacchetto a parte) e, volendo, anche il tool grafico per configurarli, e poi si può lanciare X:

# aptitude install nvidia-glx nvidia-settings
# invoke-rc.d kdm start

Metodo 3: driver proprietari pacchettizzati

Utilizzando questo metodo i passi da seguire sono i seguenti, tutti abbastanza semplici se non banali:

  • Assicurarsi che sia presente la sezione non-free in corrispondenza della sorgente dei pacchetti in /etc/apt/sources.list. Ad esempio (per Squeeze):
deb http://ftp.it.debian.org/debian/ squeeze main non-free
  • Aggiornare la lista dei pacchetti:
# apt-get update
  • Arrestare il server grafico come descritto nei due metodi precedenti.
  • Installare i pacchetti necessari al funzionamento della scheda, gli headers del kernel attualmente in uso e il tool di configurazione grafico:
# apt-get install nvidia-glx nvidia-settings linux-headers-`uname -r`
  • Modificare la riga seguente in /etc/X11/xorg.conf nella sezione Device:
Section "Device"
...
Driver      "nvidia"
...
EndSection

se il file /etc/X11/xorg.conf non fosse presente allora bisogna crearlo con:

# Xorg -configure
# mv ~/xorg.conf.new /etc/X11/xorg.conf
  • Riavviare il server grafico come spiegato nei due metodi sopra proposti o raivviare direttamente il PC.

Il vantaggio di questo metodo è la possibilità di usufruire degli aggiornamenti direttamente dai repository di Debian oltre al fatto di non dover ricompilare il modulo della scheda video all'aggiornamento del kernel. Di questo se ne occuperà il DKMS.
Se l'aggiornamento del kernel comporta un salto di 'minor revision', ad esempio da 2.6.30 a 2.6.32 oppure da 2.6.32 a 2.6.34, bisogna necessariamente installare gli headers del nuovo kernel.

Verifica

Per verificare velocemente se tutto funziona potete usare glxgears, da lanciare in un terminale.

Glxgears è un semplicissimo programma che produce in una finestra l'animazione di tre ruote dentate che girano, e nel frattempo conta quanti frame al secondo riesce a generare il vostro sistema. Non è pensato per effettuare un vero benchmark, ma è solo un test indicativo, e i suoi risultati dipendono vistosamente dal carico presente sulla CPU, quindi per ottenere indicazioni attendibili evitate di lanciarlo mentre la CPU sta facendo altre cose.

Opzioni utili

In /etc/X11/xorg.conf ci sono alcune opzioni specifiche del driver Nvidia che si possono inserire nella sezione "Device", per esempio se non vogliamo vedere il logo Nvidia ad ogni avvio possiamo inserire:

Option "NoLogo" "1"

invece per usare il codice AGP del driver proprietario invece di quello libero possiamo inserire:

Option "NvAGP" "On"

personalmente con questa opzione attivata riscontro con glxgears un aumento di prestazioni pari al 50%.

In certi casi ci possono essere dei problemi nell'uso di un monitor esterno su di un laptop: per ovviare all'inconveniente si può provare ad aggiungere:

Option "UseEDID" "0"

Per abilitare l'uso dell'uscita TV come monitor addizionale (ove disponibile):

Option "TwinView"

Se l'immagine sulla TV risulta essere in bianco e nero o con i colori falsati occorre impostare lo standard video utilizzato:

Option "TVStandard" "PAL-B"

Ci sono molte altre opzioni possibili, che trovate elencate, su Debian, in /usr/share/doc/nvidia-glx/README.txt.gz.


Autore: Bedo

Correzioni, metodo 2, verifica e opzioni utili aggiunti da tindal

Opzioni TV e altre correzioni minori test

Modifica nota per kernel personalizzati (kernel-package) by die_z

Verifica barabba