我对今天通知的 Debian 12 的新更新运行了apt-get upgrade
和。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-17
和之间吗6.1.0-18
?
答案1
我想您正在使用 debian 发行版中的 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
然后像往常一样以root 身份运行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