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
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
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.