Questo articolo fornisce le istruzioni per l'installazione dei driver Nvidia in un ambiente Debian/Ubuntu, in presenza di una GPU Nvidia.
Per ovvi motivi queste informazioni vengono fornite così come sono senza alcuna garanzia di nessun tipo.
Preliminari
Verificare le GPU installate
verificare che il comando lspci
sia installato (elenca i device PCI installati e lollegati sul tuo PC):
sudo apt-get -y install pciutils
Fare una verifica veloce delle GPU installate (Nvidia):
lspci | grep VGA
L'output sarà simile a questo di seguito:
00:02.0 VGA compatible controller: Intel Corporation 4th Gen ... 01:00.0 VGA compatible controller: Nvidia Corporation ...
Se non compare alcuna NVidia allora la scheda non è installata correttamente, altrimenti comparirebbe.
Disabilitare il driver Nouveau
Blacklist Nouveau in Modprobe
Il driver nouveau è una alternativa open source al driver NVidia. Non funziona con CUDA e va disabilitato
Il primo passo sta nelmodificare il file /etc/modprobe.d/blacklist-nouveau.conf
:
cat <<EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off EOF
Quindi eseguiamo i seguernti comandi:
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf sudo update-initramfs -u
Aggiornare Grub per disabilitare Nouveau
Fare il backup di /etc/default/grub:
sudo cp /etc/default/grub /etc/default/grub.bak
Poi aggiornarlo /etc/default/grub
. aggiungendo rd.driver.blacklist=grub.nouveau e rcutree.rcu_idle_gp_delay=1 nella variabile GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="quiet"
cambiare in:
GRUB_CMDLINE_LINUX="quiet rd.driver.blacklist=grub.nouveau rcutree.rcu_idle_gp_delay=1"
Poi ricompilare il grub con:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Installazione dei pacchetti necessari
I seguenti comandi devono essere eseguitiprima di installare il driver NVidia per raggiungere i prerequisiti richiesti:
sudo apt-get -y install linux-headers-$(uname -r) make gcc-4.8 sudo apt-get -y install acpid dkms
Chiudere il server X
Prima di iniziare l'installazione bisogna spegnere l'X Server e uscire da tutte le istanze X (Gnome, KDE or XFCE, etc...).
per uscire dal server X usare la combinazione di tasti Ctrl-Alt-F1 e determinare se si sta usando lightdm o gdm eseguendo i seguenti comandi:
sudo ps aux | grep "lightdm|gdm|kdm"
A seconda di quale si sta usando stoppare il relativo servizio coi comandi: (sostituire gdm o kdm a lightdm):
sudo service lightdm stop sudo init 3
Installare il driver
Per consentire il rendering sono necessari OpenGL e GL Vendor Neutral Dispatch (GLVND) e devono essere installati assieme al driver Nvidia. OpenGL è un'opzione di installazione nei driver di tipo *.run. Negli altri tipi di driver, OpenGL è già abilitato per impostazione predefinita alle versioni moderne (datate 2016 e successive).
GLVND può essere installato utilizzando i menu del programma di installazione o tramite il flag --glvnd-glx-client della riga di comando.
Installare il driver con l'eseguibile *.run fornito da Nvidia.
Per scaricare il driver andare al sito: http://www.nvidia.com/object/unix.html e scegliere l'ultima versione (attiva) per la prorpria CPU.
Click Download e clicca Agree and Download nelle pagine successive.
Nota: I driver trovati in questo link sono compatibili anche per tutti i modelli Tesla di Nvidia.
Se si preferisce scaricare l'intero repository dei driver, Nvidia mette a disposizione uno strumento per consigliare il driver più recente disponibile per la propria scheda grafica all'indirizzo http://www.Nvidia.com/Download/index.aspx?lang=en-us.
Se non sei sicuro di quale scheda grafica possedi, il comando lspci ti fornirà alcune informazioni:
lspci | grep -i "nvidia"
Scarica il driver consigliato e aggiungigli i permessi di esecuzione:
chmod +x ./NVIDIA-Linux-$(uname -m)-*.run
Esegui l'installazione.
Se viene chiesto firmare il modulo kernel (Sign the Kernel Module) e poi generare una nuova coppia di chiavi (Generate a new key pair).
Alla fine, se viene chiesto, non aggiornare il il file di configurazione del server X.
La soluzione che segue tenta di diagnosticare il problema comune in cui il programma di installazione non riesce a rilevare e gestire correttamente la situazione in cui il kernel è stato firmato, ma i moduli del kernel firmati non sono necessari.
grep CONFIG_MODULE_SIG=y /boot/config-$(uname -r) && \
grep "CONFIG_MODULE_SIG_FORCE is not set" /boot/config-$(uname -r) && \
sudo ./NVIDIA-Linux-$(uname -m)-*.run -e || \
sudo ./NVIDIA-Linux-$(uname -m)-*.run
In caso ci siano altri problemi con l'installazione,il log dovrebbe trovarsi in:
/var/log/nvidia-installer.log
Possibili problemi con l'installer di Nvidia
Un problema comune con l'installazione del driver Nvidia è che l'operazione fallisce perché il driver Nvidia altera il kernel.
Il driver non è firmato e l'installazione predefinita non tenta di firmarlo, ma il kernel si aspetta un driver firmato. Se si verifica questo errore, è necessario rieseguire l'installazione in modalità esperto:
sudo ./nvidia-Linux-<arch>-<version>.run -e
Quando viene richiesto rispondere Sign the Kernel Module poi Generate a new key pair.
Ancora, alla fine, assicuratevi di rispondere No quando vi viene richiesto di aggiornare il file di configurazione del server X.
This situation is usually detected during the above install step, but if there are issues, you can run this command separately.
Un altro problema che può nascere è che la versione di sviluppo del kernel e la versioine installata del kernel non corrispondano. L'installazione del driver Nvidia no procederà dopo aver accettato la licenza. Per risolvere usarei seguenti comandi:
sudo apt-get update && sudo apt-get install linux-headers-$(uname -r)
sud
o reboot now
Altro materiale di supporto
Nvidia mette a disposizione un grande readme online a questo indirizzo:
http://us.download.nvidia.com/XFree86/Linux-<arch>/<version>/README/index.html
Per esempio per u processore x86 con la versione 375.26, il readme è questo:
http://us.download.nvidia.com/XFree86/Linux-x86_64/375.26/README/index.html
.
Testare l'installazione del driver Nvidia
Dopo l'installazione del driver NVidia, lo si può testare con i seguenti comandi:
nvidia-smi
il suo output dovrebbe essere qualcosa di simile:
+------------------------------------------------------+ | NVIDIA-SMI 361.42 Driver Version: 361.42 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Quadro K1100M Off | 0000:01:00.0 Off | N/A | | N/A 44C P0 N/A / N/A | 8MiB / 2047MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
Fallimento per installazione di driver multipli
Se ricevete questo errore:
Failed to initialize NVML: GPU access blocked by the operating system
sul sistema potrebbero esserci installazioni multiple del driver.
Provare ad eseguire:
dpkg --list | grep -E "cuda|nvidia"
Riguardare le versioni del driver i elencate e rimuovere quelle non necessarie.
Un altro comando utile può essere:
locate libnvidia | grep ".so."
Verificare che i file terminino tutti con un 1 o con la versione del driver Nvidia installato, ad esempio .375.21.
Riavvio del server X
Se c'è stato bisogno di stoppare il server X devi riavviarlo,la maniera più semplice è riavviando il computer:
sudo reboot now