这个 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已经是默认选项了(也只有这个选项了)