上回书说到,自行构建了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),还能正常装驱动,我构建的内核换台机安装就启动不了了,还装不上显卡驱动。

小朋友 你是否有很多问号.webp

构建内核的过程,每一步都是跟教程相同的,唯一不同的地方,只有提取的.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中的配置有关。