安装N卡驱动时出现问题

这个 linux-headers-6.1.0-18-amd64 我已经安装了,就是我原来就已经装过这个了

所以你的机器上都装了哪些版本的内核? dpkg --list | grep linux-image

尝试 sudo apt install linux-image-amd64

brandon@debian:~$ dpkg --list | grep linux-image
ii  linux-image-6.1.0-13-amd64                       6.1.55-1                                  amd64        Linux 6.1 for 64-bit PCs (signed)
ii  linux-image-6.1.0-18-amd64                       6.1.76-1                                  amd64        Linux 6.1 for 64-bit PCs (signed)
ii  linux-image-amd64                                6.1.76-1                                  amd64        Linux for 64-bit PCs (meta-package)

好了

也许应该是 sudo apt-get install --reinstall linux-image-amd64 或者 sudo apt-get install --reinstall linux-image-6.1.0-18-amd64,我不确定。这样安装脚本也许会正确工作…

我不确定你的系统现在是什么状态。

我也不太了解这个驱动是什么原理,所以我不是很能理解“状态”指的是什么
上面两个 linux-image 我已经重新安装过了,然后重启吗?

brandon@debian:~$ uname -a
Linux debian 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux

原理是这样的:你现在使用的 linux-image-6.1.0-13-amd64 在软件源里不存在,对应的头文件也不在,因为它已经被移除了。

为了解决这一问题,你需要更新到最新的内核版本,即 linux-image-6.1.0-18-amd64,而它是 linux-image-amd64 的依赖项。

在安装 linux-image-6.1.0-18-amd64 时,软件包脚本会自动触发 dkms 构建,自动生成 initramfs,自动生成对应的 grub 启动项。

所以你需要想办法正确安装最新版本的内核 linux-image-6.1.0-18-amd64,这会触发 dkms 构建 nvidia 驱动的内核模块,之后正确生成 grub 启动项,最后你需要重启到最新版本内核。

所以现在就是想办法以新的内核启动是吗?

对。就算 dkms 因为旧内核构建失败也无所谓(我不清楚 Debian 的 dkms 默认设置),只要你的新内核能开机,就可以卸载掉旧内核然后重新启动 dkms。

实际上 dkms 会在安装新版本内核时自动触发(这就是 dkms 存在的意义),但是你没贴系统更新或者重装最新版本内核的控制台输出,所以我不知道你的系统上是否正确安装了 linux-image-6.1.0-18-amd64 以及 dkms 是否成功对它构建了内核模块。我希望是。

刚才我又重启了下,进Advanced option 中找到了6.1.0-18的选项,并且开机成功

brandon@debian:~$ uname -a
Linux debian 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux

但是默认的第一个启动项还是13的

另外,到18内核后触摸板的多指滑动好像无法使用了,正在查看设置

那现在显卡驱动正常工作了吗?

也许是奇怪的 bug,这是 grub 相关的问题了。

可以正常工作了

那等会是不是还要把默认启动项换一下?

如果你不再需要旧版本内核,可以尝试卸载掉旧版本内核。这也许会修正 grub 启动项:sudo apt autoremove linux-image-6.1.0-13-amd64

好的,那以后再更新内核就直接用sudo apt install linux-image-<版本>就行了是吧?

不需要。因为默认设置下,实际被安装的包是 linux-image-amd64,这是个固定的包名,这种包被称之为 metapackages 元包。它没有实际的内容,但是会依赖若干实际版本的包。每次版本升级时,它的依赖都会被更新为指向最新版本的内核。所以你只需要告诉 apt:“我需要 linux-image-amd64,怎么实现我不管,版本更新记得装。”。Debian 中很多软件包的版本控制都依赖这一机制。

默认安装是不需要处理这一问题的。你只需要 sudo apt update 然后 sudo apt upgrade。另外,既然你用了 nvidia-driver,每次升级时如果升级了内核版本或者 nvidia-driver 升级,你需要注意 dkms 是否构建成功。

如果你有强迫症,可以让这一切回归自动:sudo apt-mark auto linux-image-6.1.0-18-amd64

虽然我并不是很能理解那些指令,但是谢谢啦
最后再问句,grub怎么设置?

优质答案:我不知道。

用户可以修改的是 /etc/default/grub,还可以把用户配置分成若干文件放进 /etc/default/grub.d。但是你的情况比较复杂,因为新的启动项是内核安装脚本处理的,也许还有其它的钩子,用户不应该手动修改这些,我也不知道为什么你的新版本内核会被当作备选内核。也许最简单的方案就是:

sudo apt-mark auto linux-image-6.1.0-18-amd64
sudo apt autoremove linux-image-6.1.0-13-amd64

这会让最新版本内核从手动安装变回自动配置,同时卸载掉旧版本内核,后者应该会自动配置 grub 菜单。

嗯,我已经删掉了,现在18已经是默认选项了(也只有这个选项了)