启动的内核版本是否可以不同于构建模块的版本?

Can the booted kernel version differ from the version against which a module has been built?

我正在尝试从源代码为网卡构建和安装内核模块。就可以针对哪个内核版本进行编译而言,模块源似乎非常挑剔。

我已经针对我的发行版 Arch Linux 的 LTS 内核头文件构建了模块,目前是 linux-lts-headers 5.10.37-1。这是否意味着我需要实际安装和引导这个完全相同的内核版本才能使用这些模块?或者这些模块在引导版本和编译它们的版本之间是否有一些容差?

我意识到这取决于我到底在构建什么,但我对常见做法、该做和不该做感兴趣。例如,对于一个滚动发布的发行版来说,用每个次要的主线内核更新来重建模块需要做很多工作,例如现在 linux-headers 5.12.3 -> linux-headers 5.12.4。感谢指点。

这就是为什么您通常找不到分布在某处的预构建内核模块的原因。您必须使用 运行 内核的内核头文件构建内核模块。通常的做法是在 /usr/src

中始终拥有正确的内核头文件