Driver nVidia 390 su kernel 6.0 in Arch Linux

Oggi è successo che, al passaggio al kernel 6.0, il driver nvidia-390xx-dkms non venisse compilato correttamente. Poiché questo driver è un legacy driver, può capitare che con un cambio del kernel qualcosa vada storto, finché non venga applicata una patch dal manutentore. Questo l’output durante l’aggiornamento:

==> dkms install --no-depmod vboxhost/6.1.38_OSE -k 6.0.1-arch2-1
==> dkms install --no-depmod nvidia/390.154 -k 6.0.1-arch2-1
Error! Bad return status for module build on kernel: 6.0.1-arch2-1 (x86_64)
Consult /var/lib/dkms/nvidia/390.154/build/make.log for more information.
==> WARNING: `dkms install --no-depmod nvidia/390.154 -k 6.0.1-arch2-1' exited 10

Su Google ho notato che già altri avevano affrontato il problema e in questo thread sul forum si diceva di leggere la pagina AUR. Vado sulla pagina AUR del pacchetto e tra i commenti leggo di gente con lo stesso problema. C’è un commento che dice:

patch for linux 6.0.

BlackIkeEagle commented on 2022-10-03 13:06 (UTC)

Decido quindi, prima di riavviare e trovarmi con un sistema non funzionante, di applicare la patch consigliata.

Come ho risolto

Dal repo su GitLab ho scaricato il pacchetto intero (non solo il file .patch). L’ho decompresso e da terminale sono entrato nella directory e ho dato il comando

makepkg

In pratica, questo comando ha scaricato il driver dal sito nVidia e l’ha compilato applicando la patch per il kernel 6.0. Ecco l’output intero del comando:

$ makepkg
==> Creazione del pacchetto: nvidia-390xx-dkms 390.154-2 (sab 15 ott 2022, 06:35:49)
==> Controllo delle dipendenze durante l'avvio in corso...
==> Controllo delle dipendenze durante la compilazione in corso...
==> Download dei sorgenti in corso...
  -> Download di NVIDIA-Linux-x86_64-390.154-no-compat32.run in corso...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 46.6M  100 46.6M    0     0  8198k      0  0:00:05  0:00:05 --:--:-- 8623k
  -> È stato trovato kernel-4.16.patch
  -> È stato trovato kernel-6.0.patch
==> Validazione di source file con sha512sums...
    NVIDIA-Linux-x86_64-390.154-no-compat32.run ... Verificato
    kernel-4.16.patch ... Verificato
    kernel-6.0.patch ... Verificato
==> Estrazione dei sorgenti in corso...
==> Avvio di prepare() in corso...
Creating directory NVIDIA-Linux-x86_64-390.154-no-compat32
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 390.154........
patching file kernel/common/inc/nv-linux.h
patching file kernel/conftest.sh
Hunk #1 succeeded at 2073 (offset 17 lines).
patching file nvidia-drm/nvidia-drm-helper.c
Hunk #1 succeeded at 39 (offset -2 lines).
patching file nvidia/nv-acpi.c
Hunk #1 succeeded at 15 with fuzz 2 (offset -1 lines).
==> Entro nell'ambiente fakeroot...
==> Avvio di package() in corso...
==> Rimozione dei dati superflui in corso...
  -> Rimozione dei file libtool in corso...
  -> Eliminazione dei file indesiderati in corso...
  -> Rimozione dei file dalle librerie statiche...
  -> Compressione delle pagine man ed info in corso...
==> Controllo per il rilascio dei pacchetti in corso...
==> Creazione del pacchetto "nvidia-390xx-dkms" in corso...
  -> Generazione del file .PKGINFO in corso...
  -> Generazione del file .BUILDINFO in corso...
  -> Creazione del file .MTREE in corso...
  -> Compressione del pacchetto in corso...
==> Uscita dall'ambiente di fakeroot.
==> Compilazione terminata: nvidia-390xx-dkms 390.154-2 (sab 15 ott 2022, 06:36:01)

A seguire ho installato il nuovo pacchetto con:

sudo pacman -U nvidia-390xx-dkms-390.154-2-x86_64.pkg.tar.zst

che non ha dato alcun errore:

$ sudo pacman -U nvidia-390xx-dkms-390.154-2-x86_64.pkg.tar.zst
[sudo] password di aldo:
caricamento dei pacchetti in corso...
risoluzione delle dipendenze in corso...
ricerca dei pacchetti in conflitto in corso...

Pacchetti (1) nvidia-390xx-dkms-390.154-2

Dimensione totale dei pacchetti da installare:  27,17 MiB
Dimensione netta dell'aggiornamento:             0,05 MiB

:: Vuoi procedere con l'installazione? [S/n]
(1/1) verifica delle chiavi presenti nel portachiavi [###############] 100%
(1/1) verifica dell'integrità dei pacchetti          [###############] 100%
(1/1) caricamento dei file dei pacchetti             [###############] 100%
(1/1) controllo dei conflitti in corso               [###############] 100%
(1/1) controllo dello spazio disponibile sul disco   [###############] 100%
:: Esecuzione degli hook di pre-transazione...
(1/1) Remove upgraded DKMS modules
==> dkms remove nvidia/390.154
:: Elaborazione delle modifiche al pacchetto...
(1/1) aggiornamento in corso di nvidia-390xx-dkms    [###############] 100%
:: Esecuzione degli hook di post-transazione...
(1/2) Arming ConditionNeedsUpdate...
(2/2) Install DKMS modules
==> dkms install --no-depmod nvidia/390.154 -k 6.0.1-arch2-1
==> depmod 6.0.1-arch2-1

Al riavvio il sistema ha funzionato correttamente.