Come risolvere il problema del mancato caricamento dei driver NVIDIA dopo un aggiornamento del kernel su Ubuntu

Un aggiornamento del kernel di Ubuntu può far sì che un sistema NVIDIA si avvii normalmente, ma il driver proprietario non venga più caricato. I sintomi visibili variano: nvidia-smipotrebbe comparire un messaggio di errore che indica l'impossibilità di comunicare con il driver, le applicazioni CUDA potrebbero smettere di riconoscere la GPU, il desktop potrebbe tornare al rendering software o il sistema modprobe nvidiapotrebbe bloccarsi completamente. La soluzione pratica consiste nell'identificare quale componente ha causato il problema, anziché reinstallare tutto in una volta.

Questo documento di riferimento si concentra sui driver NVIDIA inclusi nei pacchetti Ubuntu e sulle attuali linee guida di Canonical. A ottobre 2026, Ubuntu raccomandava lo ubuntu-driversstrumento o l'applicazione Driver aggiuntivi per la maggior parte dei sistemi e consigliava l'utilizzo di moduli del kernel precompilati e firmati, ove disponibili. La documentazione ufficiale di NVIDIA per Ubuntu supporta anche Ubuntu 22.04, 24.04 e 26.04, ma la nomenclatura dei pacchetti è diversa nelle versioni più recenti, quindi non copiare il numero di una versione da un esempio a meno che non sia effettivamente disponibile per il tuo sistema.

Lista di controllo per una diagnosi rapida

ControlloComandoCosa ti dice
Kernel in esecuzioneuname -rL'esatta ABI del kernel che richiede un modulo NVIDIA corrispondente.
Stato del conducentenvidia-smiSe lo spazio utente è in grado di comunicare con il modulo del kernel NVIDIA caricato.
Moduli caricatilsmod | grep -E 'nvidia|nouveau'Non è chiaro se la GPU sia attualmente di proprietà di NVIDIA o di Nouveau.
Pacchetto consigliatosudo ubuntu-drivers listRami dei driver che Ubuntu considera appropriati per l'hardware.
Avvio sicuromokutil --sb-stateSe i moduli del kernel di terze parti non firmati possano essere rifiutati.
Registro del kernelsudo dmesg | grep -iE 'nvrm|nvidia|nouveau|secure|module'Indizi utili per individuare incongruenze nelle API, rifiuti delle firme o errori di rilevamento.
Il terminale Ubuntu mostra uname -r, un comando nvidia-smi fallito e nessun modulo NVIDIA restituito da lsmod.
Un tipico schema di errore post-aggiornamento: il nuovo kernel è in esecuzione, ma il modulo NVIDIA non viene caricato. Le versioni esatte del kernel e dei driver sul tuo sistema potrebbero essere diverse.

1. Conferma che il problema è iniziato con il kernel corrente

Innanzitutto, registra il kernel in esecuzione e lo stato attuale di NVIDIA:

uname -r
nvidia-smi
lsmod | grep -E 'nvidia|nouveau'

Se nvidia-smifallisce e non nvidiacompaiono moduli in lsmod, l'errore si trova al di sotto del livello CUDA o dell'applicazione desktop. Se nvidia-smisegnala Failed to initialize NVML: Driver/library version mismatch, Canonical documenta questo come un'incongruenza tra spazio utente e modulo del kernel che spesso segue un aggiornamento del driver; un riavvio potrebbe essere sufficiente se il nuovo modulo è già installato.

Se è ancora possibile selezionare un kernel precedente da GRUB e il driver funziona correttamente, ciò dimostra chiaramente che il nuovo kernel non dispone di un modulo NVIDIA utilizzabile. Un kernel precedente rappresenta una soluzione temporanea utile, ma non è la soluzione definitiva, poiché è comunque necessario che il kernel e lo stack di driver attuali siano compatibili.

2. Chiedi a Ubuntu quale ramo del driver consiglia

Su un desktop o una workstation Ubuntu standard, utilizza la logica di selezione dei driver di Ubuntu anziché cercare di indovinare il ramo di installazione:

sudo apt update
sudo ubuntu-drivers list

Per la maggior parte dei sistemi desktop e da gioco, Canonical consiglia di utilizzare il driver UDA standard anziché un -serverpacchetto. Sui server di calcolo, fare riferimento alle linee guida per server, ubuntu-drivers list --gpgpuove appropriato. Se il sistema è stato precedentemente installato con il programma di installazione autonomo di NVIDIA .runo con un repository di terze parti, la combinazione di fonti di pacchetti diverse può rendere più difficile la diagnosi. Canonical avverte esplicitamente che i driver installati al di fuori dei metodi documentati possono sovrascrivere i componenti forniti da Ubuntu e interferire con Secure Boot.

Terminale Ubuntu che mostra l'elenco dei driver ubuntu-drivers e i dispositivi ubuntu-drivers con un driver NVIDIA contrassegnato come consigliato.
Utilizza la funzionalità di rilevamento dei driver di Ubuntu per identificare il ramo appropriato per la GPU installata, invece di inserire manualmente una versione proveniente da un'altra macchina.

3. Controlla l'avvio protetto prima di ricostruire qualsiasi cosa

Secure Boot è una causa frequente per cui un modulo NVIDIA, pur essendo presente sul disco, non viene caricato. Verificane lo stato:

mokutil --sb-state
sudo modprobe nvidia

Se Secure Boot è abilitato e modproberestituisce un messaggio come Key was rejected by service, il kernel sta imponendo la fiducia nei moduli. Ubuntu impone la convalida dei moduli del kernel in Secure Boot sulle versioni amd64 supportate da anni. La soluzione preferita da Canonical è quella di utilizzare moduli NVIDIA firmati e precompilati quando disponibili. Se si utilizza intenzionalmente DKMS, Ubuntu potrebbe richiedere la creazione e la registrazione di una chiave del proprietario della macchina (MOK) al riavvio.

Non disabilitare Secure Boot come primo passaggio per la risoluzione dei problemi. Può essere un breve esperimento diagnostico in un ambiente controllato, ma la soluzione migliore è solitamente installare un modulo firmato o registrare correttamente il MOK. Canonical documenta la procedura di registrazione nella sua documentazione UEFI Secure Boot .

Il terminale Ubuntu mostra SecureBoot abilitato e modprobe nvidia fallisce con un messaggio di rifiuto della chiave.
Il rifiuto della firma indica un problema di attendibilità di Secure Boot piuttosto che la mancanza di una GPU. Risolvere il problema di firma del modulo o di registrazione MOK invece di reinstallare ripetutamente le librerie dello spazio utente.

4. Verificare se il modulo NVIDIA corrispondente esiste per il kernel in esecuzione

I pacchetti NVIDIA precompilati di Ubuntu sono legati a un'ABI del kernel. Sostituisci DRIVER_BRANCHcon il ramo mostrato da ubuntu-drivers list:

DRIVER_BRANCH=XXX
apt-cache policy linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

Se il pacchetto è installato per il kernel corrente, procedere con i controlli di Secure Boot, Nouveau e dei log descritti di seguito. Se non è presente, installare il pacchetto del modulo corrispondente:

sudo apt install linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

Canonical supporta anche l'installazione del metapackage di tipo flavor, ad esempio linux-modules-nvidia-${DRIVER_BRANCH}-generic, che aiuta i futuri aggiornamenti del kernel a scaricare i moduli NVIDIA corrispondenti. Il nome esatto del pacchetto dipende dalla versione di Ubuntu, dal tipo di kernel, dal ramo del driver e dall'eventuale utilizzo di una variante server, quindi verifica il candidato mostrato da APT prima di confermare.

Controllo della policy di apt-cache per un pacchetto di moduli del kernel NVIDIA e per gli header del kernel corrente tramite terminale Ubuntu.
Verificare le policy dei pacchetti aiuta a distinguere un modulo NVIDIA specifico del kernel mancante da un problema del driver in spazio utente.

5. Se si utilizza DKMS, assicurarsi che siano presenti gli header del kernel corrente

DKMS crea un modulo specifico per il kernel in esecuzione. Pertanto, necessita di file di intestazione del kernel compatibili. Canonical consiglia DKMS principalmente quando i moduli precompilati non sono disponibili, come nel caso di alcuni kernel personalizzati.

sudo apt install linux-headers-$(uname -r)
dkms status

Se la voce NVIDIA DKMS non mostra una compilazione riuscita per il kernel corrente, controlla il log di compilazione /var/lib/dkms/prima di tentare la rimozione casuale dei pacchetti. Gli errori tipici includono intestazioni mancanti, combinazioni compilatore/kernel non supportate o un problema di firma del modulo. Dopo aver corretto il prerequisito, reinstalla il pacchetto DKMS appropriato o utilizza il percorso automatico di Ubuntu:

sudo ubuntu-drivers install --include-dkms

Utilizzate quel comando solo quando DKMS è effettivamente necessario. La documentazione attuale di Canonical per i sistemi desktop afferma che i moduli precompilati sono la scelta preferibile per la maggior parte degli utenti, soprattutto con Secure Boot.

Installazione dei pacchetti linux-headers nel terminale Ubuntu per il kernel attualmente in esecuzione.
La corrispondenza degli header del kernel è necessaria quando DKMS deve compilare un modulo NVIDIA per il kernel corrente.

6. Installa il modulo precompilato mancante quando disponibile

Se il passaggio 4 ha mostrato che il kernel corrente non include il modulo NVIDIA precompilato, installarlo esplicitamente e lasciare che APT ricostruisca l'initramfs:

sudo apt install linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

Verifica quindi che APT sia stato completato senza errori di dipendenza. Evita di forzare l'installazione dei pacchetti con dpkg --force-*; ciò potrebbe lasciare il modulo del kernel, le librerie dello spazio utente e il metapackage a versioni incompatibili.

Se non sei sicuro di quale ramo utilizzare, la riparazione generale più sicura è:

sudo ubuntu-drivers install

Canonical dichiara di ubuntu-driversutilizzare la stessa logica dell'applicazione Driver aggiuntivi e, per impostazione predefinita, sceglie driver precompilati e firmati, noti per funzionare con Secure Boot.

Terminale Ubuntu che installa il pacchetto linux-modules-nvidia per il kernel corrente e aggiorna initramfs.
L'installazione del pacchetto di moduli specifico del kernel risolve il caso comune in cui il ramo del driver è presente ma il nuovo kernel non dispone del modulo NVIDIA corrispondente.

7. Riavviare dopo le modifiche al pacchetto

In questo caso, il riavvio non è una mera formalità. Il kernel in esecuzione può mantenere in memoria un modulo NVIDIA obsoleto, anche se APT ha già aggiornato le librerie in spazio utente sul disco. Canonical documenta specificamente questo problema come causa di un'incompatibilità tra la versione del driver e quella della libreria NVML dopo gli aggiornamenti.

sudo reboot

Dopo il riavvio, non reinstallare immediatamente il programma. Verifica prima il risultato con i comandi indicati nella sezione successiva.

Terminale Ubuntu che mostra un'operazione di installazione di ubuntu-drivers seguita da un riavvio con sudo.
Dopo aver modificato i driver o i moduli del kernel, riavvia il sistema in modo che il kernel carichi il modulo NVIDIA appena installato e i componenti dello spazio utente tornino alla stessa versione.

8. Verificare che il modulo NVIDIA sia caricato

Correre:

nvidia-smi
lsmod | grep nvidia
cat /proc/driver/nvidia/version

Una riparazione riuscita presenta tre segnali utili: nvidia-smielenca la GPU, lsmodmostra i moduli NVIDIA e /proc/driver/nvidia/versionriporta la versione del modulo in esecuzione. Per i carichi di lavoro CUDA, è necessario anche rieseguire l'applicazione o il framework che ha causato l'errore in precedenza; nvidia-smiquesto da solo dimostra la comunicazione tra i driver, non la compatibilità di tutte le librerie CUDA presenti nell'ambiente.

Il terminale Ubuntu mostra l'output corretto di nvidia-smi e i moduli NVIDIA elencati da lsmod.
Uno stato finale ottimale: nvidia-smi è in grado di comunicare con la GPU e i moduli del kernel NVIDIA sono caricati. I valori mostrati sono a titolo di esempio e non rappresentano una versione obbligatoria.

Se il problema persiste: utilizzare il sintomo per scegliere l'azione successiva.

"Incompatibilità tra la versione del driver e quella della libreria"

Innanzitutto, riavvia il sistema. Quindi, confronta la versione del modulo del kernel in esecuzione con i pacchetti installati. Canonical segnala che i componenti dello spazio utente aggiornati possono temporaneamente non essere compatibili con un modulo più vecchio ancora caricato in memoria. Se la discrepanza persiste dopo il riavvio, verifica la presenza di sorgenti di pacchetti miste e di più rami di driver.

“Nessun dispositivo trovato” e Nouveau è caricato

Controllo:

lsmod | grep nouveau

La documentazione di Ubuntu Server afferma che Nouveau può entrare in conflitto con il driver proprietario NVIDIA in questa situazione. Se Nouveau è caricato e si intende utilizzare il driver proprietario, Canonical documenta la procedura per bloccarlo e ricostruire l'initramfs:

echo "blacklist nouveau" | sudo tee /etc/modprobe.d/disable-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/disable-nouveau.conf
sudo update-initramfs -u
sudo reboot

Non bloccare Nouveau solo perché è presente sul disco; prima verifica che sia effettivamente caricato e che sia la causa del problema.

modprobe nvidiadice che la chiave è stata rifiutata

Tornate al percorso di avvio protetto (Secure Boot). Utilizzate, quando possibile, moduli Ubuntu firmati, oppure completate la registrazione MOK per un modulo DKMS. Reinstallare ripetutamente lo stesso modulo non firmato non modificherà la decisione di attendibilità.

Il nuovo kernel non ha un pacchetto di moduli compatibile

Avvia temporaneamente un kernel più vecchio e funzionante, mantieni il sistema aggiornato e verifica se Ubuntu fornisce un modulo precompilato compatibile con il kernel più recente. Se stai utilizzando deliberatamente un kernel personalizzato, DKMS potrebbe essere appropriato, ma leggi il registro di compilazione e verifica la firma di Secure Boot. Evita di bloccare un kernel vecchio a tempo indeterminato a meno che tu non abbia un piano di manutenzione per gli aggiornamenti di sicurezza.

Comandi da raccogliere prima di chiedere aiuto

Questi comandi forniscono un pacchetto diagnostico compatto senza modificare il sistema:

uname -a
lspci -nnk | grep -A3 -i nvidia
nvidia-smi
lsmod | grep -E 'nvidia|nouveau'
mokutil --sb-state
dkms status
apt-cache policy 'nvidia-driver-*' | sed -n '1,160p'
sudo dmesg | grep -iE 'nvrm|nvidia|nouveau|secure|module' | tail -n 120

Includi la versione di Ubuntu da lsb_release -ao /etc/os-release, il kernel esatto da uname -re se il driver è stato originariamente installato tramite i pacchetti di Ubuntu, il repository di NVIDIA, un PPA o il programma di installazione autonomo. Questi dettagli sono solitamente più importanti dell'affermazione generica che "il driver si è bloccato dopo un aggiornamento".

Prevenzione attuale

  • Preferisci il flusso di lavoro di Ubuntu ubuntu-driverso quello di driver aggiuntivi per i normali sistemi desktop.
  • Mantieni installato il metapackage della variante del kernel in modo che i futuri aggiornamenti del kernel possano includere i moduli NVIDIA corrispondenti.
  • Riavvia il sistema dopo gli aggiornamenti del kernel o dei driver NVIDIA, invece di continuare con uno stack misto in memoria/su disco.
  • Mantieni disponibile almeno un kernel funzionante finché non avrai la conferma che il nuovo kernel si avvia con il driver della GPU.
  • Evitate di mescolare pacchetti Ubuntu, PPA, il programma di installazione autonomo di NVIDIA e repository multipli, a meno che non vogliate gestirne intenzionalmente le conseguenze.

Riferimenti ufficiali

Le procedure attuali di Canonical sono descritte in Installare i driver NVIDIA — Ubuntu Desktop e Installazione dei driver NVIDIA — Ubuntu Server . Per indicazioni specifiche su DKMS, consultare Creare i propri moduli NVIDIA utilizzando il pacchetto DKMS . La documentazione del fornitore NVIDIA è disponibile nella Guida all'installazione dei driver NVIDIA per Ubuntu .

Il ramo esatto del driver, l'ABI del kernel e i nomi dei pacchetti dipendono dalla versione. Sostituisci sempre i valori riportati dal tuo sistema e da APT, anziché considerare le versioni di esempio come universali.

Lascia un commento

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

Risolvi i problemi di caricamento dei driver NVIDIA dopo un aggiornamento del kernel di Ubuntu verificando i moduli del kernel, Secure Boot, DKMS, i file di intestazione, Nouveau e le incongruenze di versione.

Come installare Pardus 23 su hardware obsoleto: procedura passo passo

Come installare Pardus 23 su hardware obsoleto: procedura passo passo

Installa Pardus 23.4 XFCE su PC a 64 bit meno recenti con BIOS legacy, una chiavetta USB avviabile, partizionamento sicuro ed eseguendo controlli post-installazione per hardware con specifiche basse.

Modello di sicurezza di Gooroom OS spiegato: avvio affidabile, protezione del sistema operativo e sandboxing del browser.

Modello di sicurezza di Gooroom OS spiegato: avvio affidabile, protezione del sistema operativo e sandboxing del browser.

Scopri come Gooroom OS implementa una protezione a più livelli per l'avvio affidabile, i file eseguibili e il sistema operativo, oltre a controlli per il browser, e cosa gli utenti dovrebbero verificare in merito al sandboxing.

Eseguire Debian 12 su un VPS con poca RAM senza crash per OOM e arresto anomalo di MySQL

Eseguire Debian 12 su un VPS con poca RAM senza crash per OOM e arresto anomalo di MySQL

Diagnostica il problema di consumo di memoria di Debian 12, dimensiona correttamente MariaDB o MySQL, aggiungi lo spazio di swap con attenzione e verifica se il tuo VPS è in grado di gestire il carico di lavoro.

How to Configure VPN Connections on Pardus Linux Desktop

How to Configure VPN Connections on Pardus Linux Desktop

Set up OpenVPN, WireGuard, OpenConnect, or IPsec VPN connections on Pardus 25 Desktop, then verify routing, DNS, and tunnel status.

SLES 15 vs. RHEL 9: Confronto delle prestazioni dei server aziendali

SLES 15 vs. RHEL 9: Confronto delle prestazioni dei server aziendali

Confronta le prestazioni di SLES 15 e RHEL 9, i flussi del kernel, i profili TuneD, le variabili del carico di lavoro e scopri come eseguire benchmark equi per entrambi i sistemi.

Risoluzione di un problema di blocco del server SUSE Linux al riavvio durante l'arresto di systemd.

Risoluzione di un problema di blocco del server SUSE Linux al riavvio durante l'arresto di systemd.

Scopri come diagnosticare e risolvere i problemi di un server SUSE Linux che si blocca durante lo spegnimento tramite systemd, individuando i processi bloccati, analizzando l'avvio precedente e correggendo il servizio o il punto di montaggio che causa il blocco.

Come personalizzare il pannello XFCE in Pardus Linux per utenti Windows

Come personalizzare il pannello XFCE in Pardus Linux per utenti Windows

Personalizza Pardus XFCE con una barra delle applicazioni inferiore, un menu delle applicazioni, i launcher preferiti, i pulsanti per aprire le finestre, l'area di notifica e l'orologio. Scopri cosa modificare e come testare il layout.

Come configurare aggiornamenti automatici di Debian senza interfaccia grafica con Unattended-Upgrades

Come configurare aggiornamenti automatici di Debian senza interfaccia grafica con Unattended-Upgrades

Configura gli aggiornamenti automatici su un server Debian senza interfaccia grafica, verifica i timer di systemd, esegui test in sicurezza, controlla i riavvii e monitora gli aggiornamenti di sicurezza automatici.

Risoluzione dei problemi di connessione della console Web di Cockpit su SUSE Linux Enterprise Server

Risoluzione dei problemi di connessione della console Web di Cockpit su SUSE Linux Enterprise Server

Risolvere i problemi di Cockpit su SUSE Linux Enterprise Server verificando l'URL HTTPS, il socket systemd, i pacchetti installati, la zona firewalld, i certificati e i log.