Pagina 1 di 2

Errori di compilazione di moduli con il kernel 5.16 [RISOLTO]

Inviato: dom 20 mar 2022, 22:00
da gian_d
Oggi ho aggiornato la 15.0 all'attuale current e tanto per tenermi sulle spine è saltato fuori un problemino con il kernel 5.16.16 (l'ultima versione rilasciata sul ramo current)

In sostanza, sia lo slackbuild di nvidia-kernel sia quello di virtualbox-kernel restituiscono lo stesso tipo di errore, ovvero un header non trovato (stdarg.h):

per i moduli di nvidia

Codice: Seleziona tutto

(cut)
CONFTEST: ib_peer_memory_symbols
  CC [M]  /tmp/SBo/NVIDIA-Linux-x86_64-470.63.01/kernel/nvidia/nv.o
In file included from /tmp/SBo/NVIDIA-Linux-x86_64-470.63.01/kernel/nvidia/nv.c:12:
/tmp/SBo/NVIDIA-Linux-x86_64-470.63.01/kernel/common/inc/os-interface.h:27:10: fatal error: stdarg.h: File o directory non esistente
   27 | #include <stdarg.h>
      |          ^~~~~~~~~~
compilation terminated.
make[2]: *** [scripts/Makefile.build:287: /tmp/SBo/NVIDIA-Linux-x86_64-470.63.01/kernel/nvidia/nv.o] Errore 1
make[1]: *** [Makefile:1846: /tmp/SBo/NVIDIA-Linux-x86_64-470.63.01/kernel] Errore 2
make[1]: uscita dalla directory «/usr/src/linux-5.16.16»
make: *** [Makefile:80: modules] Errore 2
Per quelli di virtualbox

Codice: Seleziona tutto

(cut)
  CC [M]  /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/r0drv/linux/assert-r0drv-linux.o
In file included from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/include/iprt/types.h:34,
                 from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/include/VBox/types.h:33,
                 from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/linux/../SUPDrvInternal.h:38,
                 from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/linux/SUPDrv-linux.c:32:
/tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/include/iprt/stdarg.h:47:12: fatal error: stdarg.h: File o directory non esistente
   47 | #  include <stdarg.h>
      |            ^~~~~~~~~~
compilation terminated.

(cut: diversi errori simili in successione)

make[3]: *** [scripts/Makefile.build:287: /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/r0drv/powernotification-r0drv.o] Errore 1
In file included from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/include/iprt/types.h:34,
                 from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/r0drv/linux/the-linux-kernel.h:37,
                 from /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/r0drv/linux/assert-r0drv-linux.c:31:
/tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/include/iprt/stdarg.h:47:12: fatal error: stdarg.h: File o directory non esistente
   47 | #  include <stdarg.h>
      |            ^~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.build:287: /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/r0drv/linux/assert-r0drv-linux.o] Errore 1
make[2]: *** [Makefile:1846: /tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv] Errore 2
make[2]: uscita dalla directory «/usr/src/linux-5.16.16»
make[1]: *** [/tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv/Makefile-footer.gmk:117: vboxdrv] Errore 2
make[1]: uscita dalla directory «/tmp/SBo/virtualbox-kernel-6.1.22/vboxdrv»
make: *** [Makefile:60: vboxdrv] Errore 2
Alla luce di questi errori ho reinstallato il kernel 5.15.27, riservandomi di individuare la causa a mente più fresca nei prossimi giorni, ma sembra che il problema ricorra con diversi programmi e a quanto pare anche con vecchi kernel.

Rifacendomi al mio contesto presumo che ci sia qualche incompatibilità tra il kernel della serie 5.16 e le versioni dei sorgenti di nvidia e virtualbox, probabilmente superabile con versioni più recenti.
Il driver nvidia che uso è quello supportato dallo slackbuild rilasciato da SBo la versione 470.63.01, che risale all'agosto del 2021. Ci sono diverse versioni più recenti, non escludo che quelle possano funzionare, ma verifico nei prossimi giorni perché potrebbe esserci la necessità di ritoccare lo slackbuild.
La versione di virtualbox è invece più datata, la 6.1.22, mentre su SBo c'è lo slackbuild per la 6.1.32. Finora non mi sono preoccupato di aggiornarla perché non ne ho avuto la necessità, finché VirtualBox funziona preferisco non aggiornarlo.

La cosa che mi sembra strana è che il file stdarg.h è presente in /usr/src/linux/include/linux sia con il kernel 5.15 sia con il kernel 5.16, perciò non so se il messaggio che indica il file non trovato si riferisca a questo header oppure ad un header incluso nel codice di stdarg.h. Appena avrò un po' di respiro verifico con calma esaminando le righe richiamate nell'output della compilazione dei sorgenti di virtualbox

In ogni modo se qualcuno si trova in condizioni analoghe alla mia ci pensi due volte prima di aggiornare il kernel senza aver individuato il problema e riparato di conseguenza.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 13:51
da erio
Il kernel header della versione corrente la trovi in slackware current /d non so se sia un problema di slackbuild o di header ma prova a installare il kernel header della versione che ti interessa e mandare lo slackbuild.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 15:59
da gian_d
No, kernel-headers è installato, la causa non è quella. Peraltro il file stdarg.h è presente in /usr/src/linux. La causa è un'altra ma devo scavare più a fondo per vedere se qual è il file mancante. Presumo non sia stdarg.h, perché il file è presente e nello stesso percorso che aveva nei kernel precedenti.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 18:49
da rik70
Strano però quell'errore.

kernel-source-5.16[etc,etc.] è installato?

Dove punta /usr/src/linux ?

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 19:48
da erio
lo slackbuild dei driver nvidia ha funzionato con il kernel 5.10.106,ma non con 5.16.16 e 5.17 il file in questione stdarg.h e' parte di gcc e quando parte la compilazione da un warn che dice il kernel ha usato gcc e lo slackbuild usa cc..

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 20:10
da gian_d
rik70 ha scritto:
lun 21 mar 2022, 18:49
Strano però quell'errore.

kernel-source-5.16[etc,etc.] è installato?
Sì, aggiorno sempre tutti i file del kernel: generic, modules, huge, headers e source. Lo huge non lo uso mai ma ho predisposto un boot per eventuali problemi. Infatti ieri mi è stato utile per riparare un mio errore con il ripristino del kernel 5.15.27
Dove punta /usr/src/linux ?
a /usr/src/linux-5.15.27/

ieri naturalmente puntava a /usr/src/linux-5.16.16. Ne sono sicuro perché avevo proprio cercato il file stdarg.h. Questo file si trova anche negli header di gcc perciò ho provato a fare un collegamento simbolico da /usr/src/linux-5.16.16/include/linux che puntasse all'header di gcc, ma il sistema l'ha rifiutato perché il file è già esistente

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 20:20
da gian_d
erio ha scritto:
lun 21 mar 2022, 19:48
lo slackbuild dei driver nvidia ha funzionato con il kernel 5.10.106,ma non con 5.16.16 e 5.17 il file in questione stdarg.h e' parte di gcc e quando parte la compilazione da un warn che dice il kernel ha usato gcc e lo slackbuild usa cc..
Sì, è vero, ma questo non spiega perché c'è stato l'errore: in teoria questo dovrebbe succedere anche con gli altri kernel. Ricordo che nelle prime versioni del 5.10 la compilazione dei moduli falliva, non ricordo l'errore, ma poi con le versioni successive del driver è stato superato. Che sia lo stesso tipo di errore?

In ogni caso continuano ad esserci dei misteri: anche i moduli di virtualbox sono compilati con CC, ma perché con certi kernel la compilazione funziona e con altri no? A meno che il problema non sia superabile compilando anche il kernel con CC! Questo spiegherebbe tutto (e la cosa non mi piace, se devo essere sincero).
Insomma, se questo implica che debba ricompilarmi il kernel ad ogni rilascio tanto vale che mantenga quello della stable: alla fine l'aggiornamento del kernel non lo trovo così necessario, la maggior parte del software funziona comunque anche con kernel meno recenti, l'importante è tenere aggiornate le librerie condivise.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: lun 21 mar 2022, 21:59
da rik70
E' riproducibile anche sulla 15.0: da il medesimo errore sul kernel 5.16.

Siamo alle solite di nvidia \:D/

Vanno invece la versione 495.46 con questa patch
e la versione 510.54

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mar 22 mar 2022, 8:48
da gian_d
Grazie rik. Avevo già in programma l'aggiornamento del driver, non l'ho ancora fatto perché potrebbe essere necessario ritoccare lo slackbuild e quindi volevo fare con calma. Se non ricordo male la 510 dovrebbe essere la serie più recente dei driver, installerò quello.
La patch potrebbe essere utile per correggere l'errore con la compilazione dei moduli di Virtual Box, ma è probabile che sarà sufficiente aggiornare ad una versione più recente, quella che ho io è vecchiotta di alcuni anni.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mar 22 mar 2022, 9:20
da rik70
gian_d ha scritto:
mar 22 mar 2022, 8:48
La patch potrebbe essere utile per correggere l'errore con la compilazione dei moduli di Virtual Box
Su SBO c'è la versione 6.1.32 e qui compila senza problemi sul kernel 5.16

Codice: Seleziona tutto

vboxnetadp
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 ((0xA2CDe001U))

vboxnetflt
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 ((0xA2CDe001U))

vboxnetadp
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 ((0xA2CDe001U))

vboxdrv
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 (0x00320000)

vboxnetflt
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 ((0xA2CDe001U))

vboxdrv
5.16.16-zen+ SMP preempt mod_unload 
6.1.32 r149290 (0x00320000)

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mar 22 mar 2022, 13:25
da gian_d
Come. Immaginavo. In effetti ho una versione molto più vecchia. La 22

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mar 22 mar 2022, 20:44
da gian_d
Niente da fare, ho riaggiornato il kernel e installato l'ultimo driver della serie 510 per scoprire che X non parte. Pensavo ci fosse qualche problema nella configurazione di X, ho fatto qualche prova, ma poi ravanando nel log di X server è saltato fuori che la mia scheda è ignorata dai driver successivi alla serie 470. Ho perciò fatto di nuovo il downgrade al kernel 5.15.27 e installato il driver 470.103.01, l'ultimo di questa serie.
Mannaggia a Nvidia, per la prima volta sono contrariato!

Va be', per ora lasciamo così, domani provo a vedere se riesco a patchare studiandomi quella patch che hai menzionato e adattandone una per il 470.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mer 23 mar 2022, 9:19
da rik70
Che modello è la vga?

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mer 23 mar 2022, 9:50
da rik70
rik70 ha scritto:
mer 23 mar 2022, 9:19
Che modello è la vga?
Chiedo perché magari "sei finito" nei driver legacy... che compilano senza problemi.

Re: Errori di compilazione di moduli con il kernel 5.16

Inviato: mer 23 mar 2022, 12:49
da rik70
gian_d ha scritto:
dom 20 mar 2022, 22:00
NVIDIA-Linux-x86_64-470.63.01
Sembra che col kernel 5.16, non so per quale motivo, non riesca a trovare gli 'header' nei sorgenti del kernel dove dovrebbe cercarli.

Dimmi tu per quale motivo, ma basta una semplice modifica nei 'punti' dove restituisce gli errori.

Allego patch per la versione dei driver indicata sopra.

Testata solo la compilazione, ma per il funzionamento a tuo rischio e pericolo.
kernel-5.16.diff
(3.33 KiB) Scaricato 119 volte