Home
» PC Tips
»
Come risolvere il problema del mancato caricamento dei driver Nvidia dopo un aggiornamento del kernel su Ubuntu
Come risolvere il problema del mancato caricamento dei driver Nvidia dopo un aggiornamento del kernel su Ubuntu
Un aggiornamento del kernel può far sì che Ubuntu si trovi su una schermata di accesso con grafica a bassa risoluzione, uno schermo nero o un desktop che funziona senza l'accelerazione NVIDIA. Ciò non significa automaticamente che la scheda grafica sia guasta. Un aggiornamento del kernel modifica il kernel su cui deve essere compilato un modulo NVIDIA esterno al kernel, e Secure Boot potrebbe rifiutarsi di caricare un modulo la cui chiave di firma non è considerata attendibile.
Inizia identificando il tipo di errore riscontrato. Se il kernel precedente si avviava correttamente con la scheda NVIDIA funzionante, il problema risiede probabilmente nel nuovo kernel o nella sua versione del modulo. Se il modulo risulta installato ma il kernel segnala un errore di chiave o di firma, verifica l'avvio protetto (Secure Boot) e la registrazione della chiave del proprietario della macchina (MOK). Questa guida utilizza il flusso di lavoro dei driver di Ubuntu; la terminologia dei menu e i rami dei driver possono variare a seconda della versione di Ubuntu e dell'hardware.
Visualizzazione illustrativa di GRUB: la selezione di un kernel installato in precedenza può aiutare a ripristinare un desktop funzionante durante la diagnosi del kernel aggiornato.
È possibile avviare prima il kernel precedente in tutta sicurezza?
Sì, se è ancora installato. Riavvia e apri il menu GRUB; su molti sistemi, tenendo premuto Maiusc sul BIOS legacy o premendo Esc sull'UEFI durante l'avvio, viene visualizzato. Scegli Opzioni avanzate per Ubuntu , quindi seleziona il kernel precedente senza "modalità di ripristino". La tempistica esatta dei tasti e le etichette del menu dipendono dal firmware e dalla configurazione di GRUB. Se il menu è nascosto, consulta il comportamento di avvio del computer anziché modificare le impostazioni del firmware a caso.
Una volta avviato il sistema, verifica il kernel in esecuzione con uname -r. Un kernel precedente funzionante ti offre una via di ripristino e il tempo per esaminare i pacchetti. Non è una soluzione definitiva: gli aggiornamenti di sicurezza sono comunque importanti, quindi torna al nuovo kernel dopo aver riparato il relativo driver. Se nessuno dei due kernel si avvia normalmente, utilizza la voce di ripristino di Ubuntu o una chiavetta USB avviabile per eseguire il backup dei dati importanti prima di apportare modifiche ai pacchetti.
Cosa bisogna controllare prima di reinstallare qualsiasi cosa?
Apri un terminale (o una console di testo con Ctrl+Alt+F3 se l'accesso grafico non è disponibile) e raccogli una breve serie di dati di base:
uname -rIdentifica il kernel attivo. mokutil --sb-stateSegnala se Secure Boot è abilitato. dkms statusMostra se è registrata una build di supporto per il modulo kernel dinamico (DKM) per quel kernel. nvidia-smiVerifica la comunicazione con il driver NVIDIA caricato; si tratta di un comando diagnostico, non di riparazione. Il log del kernel potrebbe rivelare un modulo mancante, una build non riuscita o un rifiuto della firma. L'assenza di una riga di log corrispondente non dimostra che il driver sia integro.
Utilizza insieme il kernel attivo, lo stato DKMS e l'utility NVIDIA per distinguere un problema di compilazione mancante da un problema di driver caricato; l'output di esempio può variare a seconda della versione.
Il modulo NVIDIA non è stato compilato correttamente per il nuovo kernel?
Se DKMS elenca NVIDIA solo per un kernel più vecchio o non è disponibile alcun modulo NVIDIA uname -r, installa gli header del kernel corrispondenti e lascia che Ubuntu ripari il driver incluso nel pacchetto. Gli header forniscono i file necessari per compilare un modulo esterno per il kernel in esecuzione. Assicurati prima di avere accesso alla rete e spazio su disco sufficiente, quindi esegui:
Lo strumento consigliato da Ubuntu ubuntu-driversseleziona un driver disponibile e appropriato per la macchina. Esamina i pacchetti proposti da APT prima di accettarli. Se il driver è già installato e la compilazione DKMS sembra incompleta, identifica il pacchetto installato anziché indovinare il ramo:
dpkg -l 'nvidia-dkms-*' 'nvidia-driver-*'
ubuntu-drivers list
Quindi reinstalla il pacchetto DKMS corrispondente visualizzato sul tuo sistema (sostituisci il nome esatto del pacchetto): sudo apt install --reinstall nvidia-dkms-<branch>. Evita di copiare un numero di driver da un'altra versione di Ubuntu o di mescolare i pacchetti di Ubuntu con il programma di installazione autonomo di NVIDIA; metodi di installazione concorrenti possono sovrascrivere i file o complicare l'avvio protetto (Secure Boot). Se APT segnala dipendenze non soddisfatte, pacchetti bloccati o una compilazione DKMS non riuscita, leggi l'errore completo prima di eseguire altri comandi. Il log di compilazione pertinente si trova solitamente in /var/lib/dkms/; usa il percorso indicato nell'errore anziché eliminare le directory DKMS.
Installa gli header per il kernel in esecuzione, quindi ripara il pacchetto DKMS di Ubuntu già selezionato per il sistema. Il nome del pacchetto e l'output di APT possono variare.
Secure Boot sta bloccando un modulo integrato?
Potrebbe essere. Con Secure Boot abilitato, il kernel di Ubuntu verifica le firme dei moduli del kernel di terze parti. Il processo di creazione del pacchetto di Ubuntu può generare una chiave di firma MOK e richiedere la sua registrazione. Se durante l'installazione è stata visualizzata una richiesta di impostazione di una password monouso, ma al riavvio successivo il sistema si è avviato direttamente Ubuntu, la chiave potrebbe non essere stata registrata. Controlla mokutil --sb-stateil log del kernel per eventuali messaggi di verifica o di rifiuto della chiave.
Quando l'installazione del pacchetto Ubuntu ha messo in coda la registrazione di una chiave MOK, riavvia il sistema e segui le istruzioni visualizzate nella schermata blu di MOK Manager: seleziona "Registra MOK" , continua, conferma la chiave, inserisci la password monouso creata durante l'installazione del pacchetto e riavvia il computer. Questa password non è necessariamente la password di accesso a Ubuntu. Leggi attentamente la schermata; la dicitura del menu può variare. Se non è stata messa in coda alcuna registrazione, la reinstallazione di un pacchetto di driver Ubuntu supportato potrebbe richiedere la configurazione della chiave. Non registrare un file di chiave sconosciuto né condividere la password monouso.
La schermata di registrazione di MOK Manager viene visualizzata durante il riavvio quando è in sospeso la registrazione di una chiave; selezionare "Registra MOK solo per la chiave che si intende considerare attendibile".
Cosa succede se la compilazione fallisce anche con i file di intestazione installati?
Verifica che il nuovo kernel sia installato correttamente e che i suoi file di intestazione corrispondano esattamente: uname -rdovrebbero corrispondere al pacchetto di intestazione installato. Quindi controlla l'errore DKMS di APT e il log di compilazione. Un nuovo kernel può rivelare incompatibilità con una versione precedente del driver NVIDIA; la ricompilazione non può correggere il codice sorgente che non supporta tale interfaccia del kernel. Utilizza il selettore di driver di Ubuntu per installare una versione supportata per la tua release, quindi riavvia il sistema. Se hai installato il driver con il programma di installazione .run di NVIDIA, segui le istruzioni di rimozione di NVIDIA prima di tornare ai pacchetti di Ubuntu; non sovrapporre più gestori di pacchetti.
Per un accesso temporaneo, avvia il kernel precedente da GRUB e mantienilo installato finché il driver del nuovo kernel non viene caricato correttamente. Se utilizzi un kernel personalizzato, una variante non standard o una configurazione di calcolo/server grafica, il suggerimento automatico di Ubuntu per l'ambiente desktop potrebbe non corrispondere alla configurazione desiderata. Consulta la documentazione specifica per quel kernel o per quel carico di lavoro, anziché forzare un pacchetto generico.
Come si verifica che la soluzione abbia funzionato?
Dopo aver riparato i pacchetti o registrato la chiave, riavviare e avviare il nuovo kernel. Eseguire nuovamente uname -r, dkms status, e nvidia-smi. Un risultato positivo si verifica quando è presente una voce DKMS per il kernel in esecuzione, nessun rifiuto della firma del modulo nel log del kernel dell'avvio corrente e nvidia-smivengono visualizzate le informazioni sulla GPU e sul driver. Verificare inoltre che la normale sessione desktop si avvii e che un'applicazione che necessita di accelerazione GPU possa utilizzare la GPU NVIDIA. I laptop ibridi potrebbero utilizzare intenzionalmente la grafica integrata per il desktop, quindi una GPU silenziosa da sola non è prova di un guasto.
Se l'errore persiste, salvare l'output completo della compilazione DKMS, la versione del kernel attiva, la release di Ubuntu ( cat /etc/os-release), lo stato di Secure Boot e le righe di log del kernel pertinenti. Questi dettagli permettono di identificare se il passaggio successivo consiste nell'utilizzare un ramo di driver supportato, risolvere un problema di firma o un problema di compatibilità del kernel. La guida ufficiale di Ubuntu raccomanda questo ubuntu-driverspercorso per la maggior parte dei sistemi, in particolare dove Secure Boot è abilitato; consultare Ubuntu Desktop: Installare i driver NVIDIA , Ubuntu Server: Installazione dei driver NVIDIA e Ubuntu Security: UEFI Secure Boot . Per i dettagli sulla compatibilità dei driver a basso livello, consultare la documentazione di installazione dei driver Linux di NVIDIA . Le versioni dei driver disponibili e le istruzioni precise variano in base alla release di Ubuntu e allo stato di supporto della GPU.