NVIDIA/nvidia-drivers/it

è il driver grafico proprietario per schede grafiche nVidia. Una alternativa open source è nouveau.

I drivers vengono rilasciati da nVidia e sono costruiti per il kernel di Linux. Essi contengono una parte binaria che fa il lavoro pesante per dialogare con la scheda video. I driver sono costituiti da due parti, un modulo del kernel, e un driver X11. Entrambe le parti sono incluse in un singolo pacchetto. A causa del modo in cui nVidia ha creato i suoi drivers, è necessario fare delle scelte prima di installarli.

Il pacchetto contiene i driver più recenti di nVidia con supporto per tutte le schede video, con diverse versioni disponibili a seconda dell'età della scheda. Si avvale di un eclass per rilevare che tipo di scheda è in esecuzione sul sistema, in modo che installi la versione corretta.

Compatibilità hardware
Il pacchetto supporta una vasta gamma di schede nVidia disponibili. Versioni multiple sono disponibili per l'installazione, a seconda della scheda video che ha il sistema. Consultare la documentazione ufficiale di nVidia, What's a legacy driver?, per scoprire che versione di dovrebbe essere installata. Un modo abbastanza buono per scoprirlo è attraverso an interactive form. Inserire la scheda grafica che viene utilizzata dal sistema (ricordare l'opzione Legacy nel campo 'Tipo di prodotto') e il form dirà qual'è la versione più supportata.

Se la scheda è stata identificata come legacy, mascherare le più recenti releases di, cioè

Si noti che Gentoo non fornisce la versione 71.86.xx. Se il sistema dispone di una scheda che ha bisogno di queste versioni di drivers, allora è consigliabile utilizzare il driver nouveau.

Kernel
Come accennato in precedenza, il driver del kernel nVidia installa ed esegue in opposizione al kernel corrente. Se costruito come modulo, il kernel deve supportare il caricamento dei moduli (vedi sotto).

Il modulo del kernel è costituito da una parte proprietaria (comunemente nota come "binary blob") che pilota il chip grafico, e una parte open source (detta "glue") che durante il fuzionamento opera come intermediario tra la parte proprietaria e il kernel. Questi tutti hanno bisogno di lavorare bene insieme, altrimenti l'utente potrebbe trovarsi di fronte alla perdita di dati (attraverso kernel panic, X server crashing con i dati non salvati nelle applicazioni X) e anche guasti hardware (surriscaldamento e altre questioni di alimentazione relative che potrebbero venire in mente).

Compatibilità del kernel
Di tanto in tanto, una nuova release del kernel cambia l'ABI interno per i drivers, il che significa che tutti i drivers che utilizzano tali ABI devono essere modificati di conseguenza. Per i drivers open source, in particolare quelli distribuiti con il kernel, questi cambiamenti sono banali da risolvere dal momento che l'intera catena di chiamate tra i drivers e le altre parti del kernel possono essere riviste abbastanza facilmente. Per i drivers proprietari come nvidia.ko, non è proprio la stessa cosa. Quando l'ABI interno viene cambiato non è possibile sistemare semplicemente il "glue", perché nessuno sa come tale "glue" (collante) è utilizzato dalla parte proprietaria. Anche dopo essere riusciti a sistemare le cose e anche dopo che queste sembra funzionino bene, l'utente rischia ancora l'esecuzione di nvidia.ko nel nuovo kernel non supportato, e ciò porterà alla perdita di dati e guasti hardware.

Quando una nuova incompatibile versione del kernel viene rilasciata, è probabilmente meglio attaccarsi per un po' al nuovo kernel supportato. Nvidia richiede solitamente un paio di settimane per preparare una nuova release e in genere pensano che questa sia adatta per un uso generale. Sii paziente. Se assolutamente necessario è possibile utilizzare il comando epatch_user con gli ebuild nvidia-drivers: questo permette all'utente di adattare in qualche modo i drivers nvidia con l'ultima versione del kernel non supportata. Da notare che né i manutentori dei drivers nvidia né Nvidia stessa sosterranno questa situazione. La garanzia hardware molto probabilmente sarà nulla, i manutentori di Gentoo non potranno iniziare a risolvere i problemi in quanto si tratta di un driver proprietario che solo Nvidia può correttamente mettere a punto, e i manutentori del kernel certamente non supportano i driver proprietari o qualsiasi "sistema contaminato" che funziona in difficoltà.

Se per configurare il kernel è stato utilizzato, ogni cosa è impostata. Se non è stato utilizzato, invece, va fatto un doppio controllo nella configurazione del kernel, in modo che il seguente supporto sia abilitato:

Abilitare anche il "Memory Type Range Register" nel kernel:

Se il sistema ha una scheda grafica AGP, abilitare opzionalmente l'agpgart supportato dal kernel, sia compilato direttamente nel kernel sia come modulo. Se il modulo agpgart compilato direttamente nel kernel non viene utilizzato, i drivers utilizzeranno la propria implementazione agpgart, chiamata NvAGP. Su alcuni sistemi, questa si comporta meglio rispetto alla agpgart compilata direttamente sul kernel, e su altri, invece, si comporta peggio. Valutare la scelta sul proprio sistema per ottenere le migliori prestazioni. Quando incerti sul da farsi, utilizzare l'agpgart compilato nel kernel:

Un'alternativa al framebuffer è uvesafb, che può essere installato parallelamente al pacchetto.

Per i sistemi (U)EFI uvesafb non funzionerà. Sappiate che l'abilitazione del supporto "efifb" nel kernel causa problemi intermittenti con l'inizializzazione dei drivers nvidia. Non c'è alcun framebuffer alternativo conosciuto per i sistemi (U)EFI.

Gli ebuild nvidia-drivers rilevano automaticamente la versione del kernel basato sul link simbolico. Si prega di assicurarsi che tale link simbolico punti ai sorgenti corretti e che il kernel sia configurato correttamente. Si prega di consultare la sezione "Configuring the Kernel" del Gentoo Handbook per dettagli sulla configurazione del kernel.

Primo, scegliere la giusta sorgente del kernel utilizzando. Quando si utilizza la versione 3.7.10 del pacchetto per esempio, la lista dei kernel potrebbe essere simile a questa:

Nella schermata sopra, si noti che il kernel linux-3.7.10-gentoo è contrassegnato con un asterisco (*) per mostrare che è il kernel selezionato con un collegamento simbolico.

Se il link simbolico non punta ai sorgenti corretti, aggiornare il collegamento selezionando il numero della versione del kernel desiderata, come nell'esempio precedente.

Drivers
Ora è tempo di installare i drivers. Primo, segui la guida X Server Configuration Guide e imposta  su. Durante l'installazione del server X, verrà installata la versione corretta del pacchetto.

Una volta terminata l'installazione, eseguire il comando per caricare il modulo del kernel in memoria. Se si tratta di un aggiornamento, rimuovere il modulo precedente.

Per evitare di dover caricare manualmente il modulo ad ogni avvio, per far si che questo sia fatto automaticamente ogni volta che il sistema viene avviato, editare ed aggiungerci.

Firmare i moduli del kernel (opzionale)
Se si utilizza l'avvio sicuro del kernel con firma, allora si avrà bisogno di firmare i moduli del kernel Nvidia prima che possano essere caricati.

Questo si fa utilizzando lo script per il kernel fornito da, come segue.

Come per la versione del driver 358.09, è stato fatto un nuovo modulo per la gestione della modalità monitor e per questa versione del driver deve essere firmato tale modulo.

Una volta firmati questi moduli, il driver viene caricato all'avvio come previsto. Questo metodo di firma può essere utilizzato per firmare altri moduli non solo nvidia-drivers. Di conseguenza si dovrà modificare il percorso e il modulo corrispondente.

L'X server
Una volta che i driver appropriati sono installati, configurare il server X per utilizzare il driver  invece che quello di default.

Eseguire così che X server utilizzi le librerie GLX nVidia:

Abilitazione del supporto globale nvidia
Alcuni pacchetti, come ad esempio e, utilizzano una USE flag locale chiamata   la quale abilita il supporto XvMCNVIDIA, utile quando si guardano filmati ad alta risoluzione. Aggiungere  nella variabile USE sul file  o aggiungerla come USE flag su  e/o  su.

GeForce 8 series and later GPUs do come with VDPAU support which superseded XvMCNVIDIA support. See the VDPAU article for enabling VDPAU support.

There are also some applications that use the  USE flag, so it might be a good idea to add it to.

Then, run to rebuild the applications that benefit from the USE flag change.

Using the nVidia settings tool
nVidia also provides a settings tool. This tool allows the user to monitor and change graphical settings without restarting the X server and is available through Portage as. As mentioned earlier, it will be pulled in automatically when installing the drivers with the  USE flag set in  or in.

Enable OpenGL/OpenCL
To enable OpenGL and OpenCL though the device, run:

Make sure that the Xorg server is not running during these changes.

Testing the card
To test the nVidia card, fire up X and run, which is part of the package. It should say that direct rendering is activated:

To monitor the FPS, run.

Driver fails to initialize when MSI interrupts are enabled
The Linux NVIDIA driver uses Message Signaled Interrupts (MSI) by default. This provides compatibility and scalability benefits, mainly due to the avoidance of IRQ sharing. Some systems have been seen to have problems supporting MSI, while working fine with virtual wire interrupts. These problems manifest as an inability to start X with the NVIDIA driver, or CUDA initialization failures.

MSI interrupts can be disabled via the NVIDIA kernel module parameter. This can be set on the command line when loading the module, or more appropriately via the distribution's kernel module configuration files (such as those under ).

For instance:

Getting 2D acceleration to work on machines with 4GB memory or more
When nVidia 2D acceleration is giving problems, then it is likely that the system is unable to set up a write-combining range with MTRR. To verify, check the contents of :

Every line should contain  or. When a line shows up with  in it then it is necessary to change a BIOS setting to fix this.

Reboot and enter the BIOS, then find the MTRR settings (probably under "CPU Settings"). Change the setting from  to   and boot back into Linux. There is now no  entry anymore and 2D acceleration now works without any glitches.

"no such device" appears when trying to load the kernel module
This is usually caused by one of the following issues:


 * 1) The system does not have a nVidia card at all.  Check  output to confirm that the system has a nVidia graphics card installed and detected.
 * 2) The currently installed version of  does not support the installed graphics card model.  Check the README file in /usr/share/nvidia-drivers-*/ for a list of supported devices, or use the driver search at http://www.geforce.com/drivers.
 * 3) Another kernel driver has control of the hardware. Check  to see if another driver like "nouveau" is bound to the graphics card. If so, disable or blacklist this driver.

Xorg says it can't find any screens
When after booting the system, it ends up with a black screen or a console prompt instead of the GUI; then press ++ to bring up a virtual console. Next, run:

to see the output of Xorg. If one of the first errors is that Xorg can't find any screens, then follow the following steps to resolve the issue.

It should be enough to run the following command before rebooting:

But if that doesn't work, run and notice that the video card starts off like this:

Take the first bit,  and put it in the  file with the   option:

Direct rendering is not enabled
If direct rendering does not work, it may be because the kernel has Direct Rendering Manager enabled, which conflicts with the driver. See the direct rendering status by following instructions in the section Testing the card.

First, disable Direct Rendering Manager in the kernel :

Next, rebuild since the driver may have built against the kernel DRM symbols. It should fix the problem.

Video playback stuttering or slow
Lately there seems to be some breaking with playback of some types of video with the NVidia binary drivers, causing slow video playback or significant stuttering. This problem seems to be occurring within the Intel CPU Idle replacement instead of the common ACPI CPU idling method for certain CPU's.

Disable the Intel CPU idling method using  on the kernel command line boot method, which should cause the kernel to automatically fall back to the normal or older ACPI CPU idling method. Also, disabling the NVidia Powermizer feature, or setting Powermizer to maximum performance within has been said to help. Although the Intel CPU idling method recently was introduced as the default CPU idling method for i5 and i7 CPUs (versus using ACPI CPU idling) is the root cause here. This idling method significantly solves the problem, however some minimal stuttering or slow video is encountered if deinterlacing was enabled; this is when the video is likely already deinterlaced (ie. alias  with something similar to   as a work around.)

No vertical synchronization (no VSync, tearing) in OpenGL applications
Adding the following option to the screen section prevents tearing on GTX 660, 660 Ti, and probably some other GPUs (reference):

Documentation
The package also comes with comprehensive documentation. This is installed into and can be viewed with the following command:

Kernel module parameters
The  kernel module accepts a number of parameters (options) which can be used to tweak the behaviour of the driver. Most of these are mentioned in the documentation. To add or change the values of these parameters, edit the file. Remember to run after modifying this file, and bear in mind to reload the   module before the new settings take effect.

Edit :

Update module information:

Unload the  module...

...and load it once again:

Advanced X configuration
The GLX layer also has a plethora of options which can be configured. These control the configuration of TV out, dual displays, monitor frequency detection, etc. Again, all of the available options are detailed in the documentation.

To use any of these options, list them in the relevant Device section of the X config file (usually ). For example, to disable the splash logo: