Il set di driver NVIDIA Accelerated Linux è costituito dai seguenti componenti (il file tra parentesi è il nome completo del componente dopo l'installazione; "x.y.z" indica la versione corrente; in questi casi vengono creati collegamenti simbolici appropriati durante l'installazione):
- Un driver X (/usr/X11R6/lib/modules/drivers/nvidia_drv.o); questo driver è necessario al server X per utilizzare l'hardware NVIDIA. Il driver nvidia_drv.o è compatibile a livello binario con XFree86 4.0.1 e versioni successive, nonché con il server Xorg X.
- Un modulo di estensione GLX per X (/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z); questo modulo viene utilizzato dal server X per fornire supporto glx lato server.
- Una libreria OpenGL (/usr/lib/libGL.so.x.y.z); questa libreria fornisce i punti di ingresso API per tutte le chiamate di funzioni OpenGL e GLX. È collegato in fase di esecuzione dalle applicazioni OpenGL.
- Una libreria principale OpenGL (/usr/lib/libGLcore.so.x.y.z); questa libreria è implicitamente utilizzata da libGL e da libglx. Contiene la funzionalità 3D accelerata principale. Non dovresti caricarlo esplicitamente nel tuo file di configurazione X: di questo si occupa libglx.
- Due librerie XvMC (X-Video Motion Compensation): una libreria statica e una libreria condivisa (/usr/X11R6/lib/libXvMCNVIDIA.a,/usr/X11R6/lib/libXvMCNVIDIA.so.x.y.z); per i dettagli consultare l'APPENDICE P (app-p): SUPPORTO XVMC.
- Un modulo del kernel (/lib/modules/`uname -r`/video/nvidia.o o /lib/modules/`uname -r`/kernel/drivers/video/nvidia.o); questo modulo del kernel fornisce accesso di basso livello al tuo hardware NVIDIA per tutti i componenti di cui sopra. Generalmente viene caricato nel kernel all'avvio del server X e viene utilizzato dal driver X e da OpenGL. nvidia.o è composto da due parti: il core solo binario e un'interfaccia del kernel che deve essere compilata appositamente per la versione del kernel. Tieni presente che il kernel Linux non ha un'interfaccia binaria coerente come il server X, quindi è importante che questa interfaccia del kernel corrisponda alla versione del kernel che stai utilizzando. Ciò può essere ottenuto compilando da soli o utilizzando i binari precompilati forniti per i kernel forniti con alcune delle distribuzioni Linux più comuni.
- File di intestazione OpenGL e GLX (/usr/share/doc/NVIDIA_GLX-1.0/include/GL/gl.h e /usr/share/doc/NVIDIA_GLX-1.0/include/GL/glx.h); questi file possono anche essere installati in /usr/include/GL/ passando l'opzione "--opengl-headers" al file .run durante l'installazione.
- Le librerie nvidia-tls (/usr/lib/libnvidia-tls.so.x.y.z e /usr/lib/tls/libnvidia-tls.so.x.y.z); questi file forniscono il supporto dell'archiviazione locale del thread per le librerie NVIDIA OpenGL (libGL, libGLcore e libglx). Ciascuna libreria nvidia-tls fornisce supporto per un particolare modello di archiviazione locale del thread (come ELF TLS) e quello appropriato per il tuo sistema verrà caricato in fase di esecuzione. o L'applicazione nvidia-installer (/usr/bin/nvidia-installer) è lo strumento NVIDIA per l'installazione e l'aggiornamento dei driver NVIDIA. Consultare (sec-02) INSTALLAZIONE DEL DRIVER NVIDIA per una descrizione più approfondita.
Sorgeranno problemi se le applicazioni utilizzano la versione sbagliata di una libreria. Questo può essere il caso se ci sono vecchie librerie libGL o collegamenti simbolici obsoleti lasciati in giro. Se ritieni che ci sia qualcosa di sbagliato nella tua installazione, controlla che i seguenti file siano presenti (si tratta di tutti i file del set di driver Linux accelerati NVIDIA, più i relativi collegamenti simbolici):
/usr/X11R6/lib/modules/drivers/nvidia_drv.o
/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z
/usr/X11R6/lib/modules/extensions/libglx.so -> libglx.so.x.y.z
/usr/lib/libGL.so.x.y.z
/usr/lib/libGL.so.x -> libGL.so.x.y.z
/usr/lib/libGL.so -> libGL.so.x
/usr/lib/libGLcore.so.x.y.z
/usr/lib/libGLcore.so.x -> libGLcore.so.x.y.z
/lib/modules/`uname -r`/video/nvidia.o, or /lib/modules/`uname -r`/kernel/drivers/video/nvidia.o
L'installazione creerà anche i file /dev:
crw-rw-rw- 1 root root 195, 0
Feb 15 17:21 nvidia0
crw-rw-rw- 1 root root 195, 1
Feb 15 17:21 nvidia1
crw-rw-rw- 1 root root 195, 2
Feb 15 17:21 nvidia2
crw-rw-rw- 1 root root 195, 3
Feb 15 17:21 nvidia3
crw-rw-rw- 1 root root 195, 255
Feb 15 17:21 nvidiactl
Se sono presenti altre librerie il cui "soname" è in conflitto con quello delle librerie NVIDIA, ldconfig potrebbe creare collegamenti simbolici errati. Si consiglia di rimuovere o rinominare manualmente le librerie in conflitto (assicurarsi di rinominare le librerie in conflitto con qualcosa che ldconfig non esaminerà: abbiamo scoperto che anteporre "XXX" al nome di una libreria generalmente risolve il problema), eseguire nuovamente 'ldconfig' e controlla che siano stati creati i collegamenti simbolici corretti. Alcune librerie che spesso creano conflitti sono "/usr/X11R6/lib/libGL.so*" e "/usr/X11R6/lib/libGLcore.so*".
Se le librerie vengono estratte, verificare che l'applicazione utilizzi le librerie corrette. Ad esempio, per verificare che l'applicazione /usr/X11R6/bin/gears utilizzi le librerie NVIDIA, dovresti fare:
$ ldd /usr/X11R6/bin/gears
libglut.so.3 => /usr/lib/libglut.so.3 (0x40014000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x40046000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x40062000)
libc.so.6 => /lib/libc.so.6 (0x4009f000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4018d000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40196000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x401ac000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401c0000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x401cd000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x401d6000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x402ab000)
libm.so.6 => /lib/libm.so.6 (0x4048d000)
libdl.so.2 => /lib/libdl.so.2 (0x404a9000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404ac000)
Nota i file utilizzati per libGL e libGLcore: se sono qualcosa di diverso dalle librerie NVIDIA, dovrai rimuovere le librerie che interferiscono o modificare il percorso di ricerca ld. Se tutto ciò ti sembra estraneo, allora potresti voler leggere le pagine man di "ldconfig" e "ldd" per i puntatori.