Debian 12 linux-image-6.1.0-18-amd64 dist-upgrade가 nvidia GPL 호환되지 않는 모듈에서 실패합니다. nvidia.ko는 GPL 기호 "__rcu_read_lock"만 사용합니다.

Debian 12 linux-image-6.1.0-18-amd64 dist-upgrade가 nvidia GPL 호환되지 않는 모듈에서 실패합니다. nvidia.ko는 GPL 기호 "__rcu_read_lock"만 사용합니다.

나는 apt-get upgradeand를 실행했습니다.apt-get dist-upgrade

마지막 것은 이 메시지와 함께 실패합니다. 나중에 NVidia 드라이버로 컴파일하는 것과 관련된 것을 볼 수 있습니다(저는 Debian 배포판 중 하나를 사용하고 있습니다).

dkms: autoinstall for kernel: 6.1.0-18-amd64 failed!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
sudo apt-get dist-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait      
Calcul de la mise à jour... Fait
Les NOUVEAUX paquets suivants seront installés :
  libllvm16 linux-headers-6.1.0-18-amd64 linux-headers-6.1.0-18-common linux-image-6.1.0-18-amd64
Les paquets suivants seront mis à jour :
  linux-headers-amd64 linux-image-amd64 postgresql-14
3 mis à jour, 4 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 0 o/119 Mo dans les archives.
Après cette opération, 593 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O
Lecture des fichiers de modifications (« changelog »)... Terminé
Préconfiguration des paquets...
Sélection du paquet libllvm16:amd64 précédemment désélectionné.
(Lecture de la base de données... 822688 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../0-libllvm16_1%3a16.0.6-15~deb12u1_amd64.deb ...
Dépaquetage de libllvm16:amd64 (1:16.0.6-15~deb12u1) ...
Sélection du paquet linux-headers-6.1.0-18-common précédemment désélectionné.
Préparation du dépaquetage de .../1-linux-headers-6.1.0-18-common_6.1.76-1_all.deb ...
Dépaquetage de linux-headers-6.1.0-18-common (6.1.76-1) ...
Sélection du paquet linux-headers-6.1.0-18-amd64 précédemment désélectionné.
Préparation du dépaquetage de .../2-linux-headers-6.1.0-18-amd64_6.1.76-1_amd64.deb ...
Dépaquetage de linux-headers-6.1.0-18-amd64 (6.1.76-1) ...
Préparation du dépaquetage de .../3-linux-headers-amd64_6.1.76-1_amd64.deb ...
Dépaquetage de linux-headers-amd64 (6.1.76-1) sur (6.1.69-1) ...
Sélection du paquet linux-image-6.1.0-18-amd64 précédemment désélectionné.
Préparation du dépaquetage de .../4-linux-image-6.1.0-18-amd64_6.1.76-1_amd64.deb ...
Dépaquetage de linux-image-6.1.0-18-amd64 (6.1.76-1) ...
Préparation du dépaquetage de .../5-linux-image-amd64_6.1.76-1_amd64.deb ...
Dépaquetage de linux-image-amd64 (6.1.76-1) sur (6.1.69-1) ...
Préparation du dépaquetage de .../6-postgresql-14_14.11-1.pgdg120+1_amd64.deb ...
Dépaquetage de postgresql-14 (14.11-1.pgdg120+1) sur (14.10-1.pgdg120+1) ...
Paramétrage de linux-image-6.1.0-18-amd64 (6.1.76-1) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-6.1.0-17-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-6.1.0-17-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-6.1.0-18-amd64
I: /initrd.img is now a symlink to boot/initrd.img-6.1.0-18-amd64
/etc/kernel/postinst.d/dkms:
dkms: running auto installation service for kernel 6.1.0-18-amd64.
Sign command: /usr/lib/linux-kbuild-6.1/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Building module:
Cleaning build area...
env NV_VERBOSE=1 make -j32 modules KERNEL_UNAME=6.1.0-18-amd64........(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.1.0-18-amd64 (x86_64)
Consult /var/lib/dkms/nvidia-current/525.147.05/build/make.log for more information.
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
dkms: autoinstall for kernel: 6.1.0-18-amd64 failed!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: erreur de traitement du paquet linux-image-6.1.0-18-amd64 (--configure) :
 le sous-processus paquet linux-image-6.1.0-18-amd64 script post-installation installé a renvoyé un état de sortie d'erreur 1
dpkg: des problèmes de dépendances empêchent la configuration de linux-image-amd64 :
 linux-image-amd64 dépend de linux-image-6.1.0-18-amd64 (= 6.1.76-1); cependant :
 Le paquet linux-image-6.1.0-18-amd64 n'est pas encore configuré.

dpkg: erreur de traitement du paquet linux-image-amd64 (--configure) :
 problèmes de dépendances - laissé non configuré
Paramétrage de libllvm16:amd64 (1:16.0.6-15~deb12u1) ...
Paramétrage de linux-headers-6.1.0-18-common (6.1.76-1) ...
Paramétrage de postgresql-14 (14.11-1.pgdg120+1) ...
Paramétrage de linux-headers-6.1.0-18-amd64 (6.1.76-1) ...
/etc/kernel/header_postinst.d/dkms:
dkms: running auto installation service for kernel 6.1.0-18-amd64.
Sign command: /usr/lib/linux-kbuild-6.1/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Building module:
Cleaning build area...
env NV_VERBOSE=1 make -j32 modules KERNEL_UNAME=6.1.0-18-amd64........(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.1.0-18-amd64 (x86_64)
Consult /var/lib/dkms/nvidia-current/525.147.05/build/make.log for more information.
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
dkms: autoinstall for kernel: 6.1.0-18-amd64 failed!
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
Failed to process /etc/kernel/header_postinst.d at /var/lib/dpkg/info/linux-headers-6.1.0-18-amd64.postinst line 11.
dpkg: erreur de traitement du paquet linux-headers-6.1.0-18-amd64 (--configure) :
 le sous-processus paquet linux-headers-6.1.0-18-amd64 script post-installation installé a renvoyé un état de sortie d'erreur 1
dpkg: des problèmes de dépendances empêchent la configuration de linux-headers-amd64 :
 linux-headers-amd64 dépend de linux-headers-6.1.0-18-amd64 (= 6.1.76-1); cependant :
 Le paquet linux-headers-6.1.0-18-amd64 n'est pas encore configuré.

dpkg: erreur de traitement du paquet linux-headers-amd64 (--configure) :
 problèmes de dépendances - laissé non configuré
Traitement des actions différées (« triggers ») pour postgresql-common (257.pgdg120+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
  en_us
  fr
Removing obsolete dictionary files:
Traitement des actions différées (« triggers ») pour libc-bin (2.36-9+deb12u4) ...
Des erreurs ont été rencontrées pendant l'exécution :
 linux-image-6.1.0-18-amd64
 linux-image-amd64
 linux-headers-6.1.0-18-amd64
 linux-headers-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

불만 사항이 무엇인지 살펴보고 cat그것이 가리키는 로그 파일을 검사하여 다음을 발견했습니다.
NVidia 카드 드라이버 컴파일 문제:

  ld -m elf_x86_64 -z noexecstack --no-warn-rwx-segments   -r -o /var/lib/dkms/nvidia-current/525.147.05/build/nvidia-uvm.o @/var/lib/dkms/nvidia-current/525.147.05/build/nvidia-uvm.mod 
  {   echo /var/lib/dkms/nvidia-current/525.147.05/build/nvidia.ko;   echo /var/lib/dkms/nvidia-current/525.147.05/build/nvidia-uvm.ko;   echo /var/lib/dkms/nvidia-current/525.147.05/build/nvidia-modeset.ko;   echo /var/lib/dkms/nvidia-current/525.147.05/build/nvidia-drm.ko;   echo /var/lib/dkms/nvidia-current/525.147.05/build/nvidia-peermem.ko; :; } > /var/lib/dkms/nvidia-current/525.147.05/build/modules.order
sh /usr/src/linux-headers-6.1.0-18-common/scripts/modules-check.sh /var/lib/dkms/nvidia-current/525.147.05/build/modules.order
make -f /usr/src/linux-headers-6.1.0-18-common/scripts/Makefile.modpost
   sed 's/ko$/o/'  /var/lib/dkms/nvidia-current/525.147.05/build/modules.order | scripts/mod/modpost -m     -o /var/lib/dkms/nvidia-current/525.147.05/build/Module.symvers -e -i Module.symvers -T - 
ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol '__rcu_read_lock'
ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol '__rcu_read_unlock'
make[3]: *** [/usr/src/linux-headers-6.1.0-18-common/scripts/Makefile.modpost:126 : /var/lib/dkms/nvidia-current/525.147.05/build/Module.symvers] Erreur 1
make[2]: *** [/usr/src/linux-headers-6.1.0-18-common/Makefile:1991 : modpost] Erreur 2
make[2] : on quitte le répertoire « /usr/src/linux-headers-6.1.0-18-amd64 »
make[1]: *** [Makefile:250 : __sub-make] Erreur 2
make[1] : on quitte le répertoire « /usr/src/linux-headers-6.1.0-18-common »
make: *** [Makefile:82 : modules] Erreur 2

여기서 무엇을 해야 합니까?

지금 컴퓨터를 다시 시작하면 위험합니까? 와
사이 중간 아닌가요 ?6.1.0-176.1.0-18

답변1

데비안 배포판의 nvidia 드라이버를 사용하고 있다고 생각합니다. nvidia 드라이버는 아직 새로운 Linux 커널과 호환되지 않습니다.

누군가 드라이버 커널 모듈의 소스 코드에 3개 파일의 패치를 작성했습니다. 내 apt-get이 손상되어 드라이버를 설치할 수 없기 때문에 아직 이 패치를 테스트하지 않았습니다.

하지만 진행 방법은 다음과 같습니다.

첫 번째 파일:/usr/src/nvidia-current-525.147.05/common/inc/nv-linux.h

2000행에 다음 행을 추가합니다.

#if defined(CONFIG_HAVE_ARCH_PFN_VALID) || LINUX_VERSION_CODE < KERNEL_VERSION(6,1,76)
#  define nv_pfn_valid pfn_valid
#else
/* pre-6.1.76 kernel pfn_valid version without GPL rcu_read_lock/unlock() */
static inline int nv_pfn_valid(unsigned long pfn)
{
        struct mem_section *ms;

        if (PHYS_PFN(PFN_PHYS(pfn)) != pfn)
                return 0;

        if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
                return 0;

        ms = __pfn_to_section(pfn);
        if (!valid_section(ms))
                return 0;

        return early_section(ms) || pfn_section_valid(ms, pfn);
}
#endif

두 번째 파일:/usr/src/nvidia-current-525.147.05/nvidia/nv-mmap.c

578행에서 다음 pfn_valid으로 바꾸십시오.nv_pfn_valid

세 번째 파일:/usr/src/nvidia-current-525.147.05/nvidia/os-mlock.c

116행에서 다음 pfn_valid으로 바꾸십시오.nv_pfn_valid

190행에서 다음 pfn_valid으로 바꾸십시오.nv_pfn_valid

원래 470.223.02용으로 작성된 패치 소스이므로 줄 번호가 내가 말한 것과 다릅니다.협회

답변2

이 문제는 이제 Bookworm에서 해결되었습니다.이 발표더 알아보기. bookworm-updates저장소 구성( )에 있는지 확인하세요 /etc/apt/sources.list.

deb https://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

(공지에는 contrib, non-free, 에 대한 언급이 없지만 non-free-firmware이 경우에는 필요합니다.)

apt update그런 다음 평소처럼 루트로 실행하십시오 apt upgrade.

답변3

이제 제안된 업데이트 패키지 아카이브를 통해 패치된 드라이버를 사용할 수 있습니다.

예비 업데이트를 받으려면 파일에 다음을 추가 /etc/apt/sources.list하고 를 실행하세요 . 완료되면 이 문제를 해결하는 패키지를 sudo apt update업그레이드할 수 있습니다 .nvidia-driver-*

deb https://ftp.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware

관련 정보