上回书说到,自行构建了6.19.11内核,并安装到系统中,成功启动。
但是机器上如果安装有Nvidia独立显卡的用户会发现,原内核安装的显卡驱动,在新内核上不起作用,执行nvidia-smi会报无法和硬件通信的错误。如果你的机器是用apt来安装显卡驱动,以及用dkms来管理英伟达显卡驱动模块的,会发现每次执行apt指令后,它都会跑一次dkms构建新内核的显卡驱动,并且每次会失败。即使去看日志,也会看得头昏脑胀,无从下手。
一开始,我认为是英伟达驱动不支持6.19.11这个版本的内核,而且这个版本本身也不在ubuntu官方的仓库中。
最新的Ubuntu26已经支持7.0.0版本的内核,并且声称原生继承cuda,那么英伟达的驱动肯定是适配的
我拉取了Linux 7.0.0的源码,进行编译和安装。在显卡驱动上,表现和6.19.11时一致,都是每次执行apt指令都会触发编译,以及都会失败。
为什么ubuntu官方仓库中的内核就是通用内核(generic),还能正常装驱动,我构建的内核换台机安装就启动不了了,还装不上显卡驱动。

构建内核的过程,每一步都是跟教程相同的,唯一不同的地方,只有提取的.config。
问题可能出在.config上
为验证该猜想,从ubuntu仓库中下载Ubuntu 26用的7.0内核,地址https://archive.ubuntu.com/ubuntu/pool/main/l/linux-hwe-7.0/linux-hwe-7.0-headers-7.0.0-14_7.0.0-14.14~24.04.3_all.deb 。这也是一个generic通用内核,理论上可以在任何机器(能安装Ubuntu26的)上安装和启动。
解压它,从中提取.config文件,放到Linux内核源码中,用于内核构建。
经验证,构建,安装,启动,均正常,并且在apt指令执行时,dkms为新内核编译英伟达显卡驱动模块,能够成功,无报错。nvidia-smi能够获取显卡的信息
leaf@desktop:~$ uname -a
Linux desktop 7.0.0 #2 SMP PREEMPT_DYNAMIC Mon May 11 08:17:37 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
leaf@desktop:~$ nvidia-smi
Fri May 15 22:51:22 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.58.03 Driver Version: 595.58.03 CUDA Version: 13.2 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce GTX 1660 ... Off | 00000000:01:00.0 On | N/A |
| 43% 33C P8 21W / 125W | 612MiB / 6144MiB | 1% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+并且经小范围测试,用该.config构建出的内核具备一定通用性。内核编译是在我的台式机上进行的,拿到天选笔记本上安装后,一样能够正常启动,以及安装英伟达驱动。
得到结论:构建内核时,不宜用本机上/boot目录中的config文件作为编译的配置文件,最好使用官方仓库中,内核头文件包中的.config作为配置,以得到最佳的显卡驱动兼容性
btw, 我还使用官方内核包中的.config构建了7.0.6版本的内核,一样具备通用性(在两台机都能启动),都能通过dkms安装上英伟达驱动和正常工作。因此更能证明了显卡驱动不挑内核版本的,驱动能否正常运行只跟构建内核时.config中的配置有关。