内核模块文件夹与 uname -r 不匹配

内核模块文件夹与 uname -r 不匹配

我全新安装了 Arch Linux。我无法使用modprobe来设置内核模块。当我运行时sudo modprobe r8169(例如),我收到错误modprobe: FATAL: Module r8169 not found in directory /lib/modules/4.8.13-1-ARCH

内容/lib/modules

$ ls -1 /lib/modules
4.10.8-1-ARCH
extramodules-4.10-ARCH

的结果uname -r

$ uname -r
4.8.13-1-ARCH

简单地重命名模块目录以匹配是否安全uname -r

答案1

/lib/modules每个已安装的内核版本都有一个子目录。显然,自从上次重新启动以来,您已经升级了内核;您正在运行 4.8.13-1 并且已升级到 4.10.8-1。升级内核仅在重启后生效。

模块必须加载到完全相同的内核版本中,并使用相同的选项进行编译。 (也有例外,但必须为此仔细设计模块;内核本身附带的模块不会跳过允许它们在不同内核上工作的障碍。)

因此,您不应删除仍在运行的内核版本。删除包含正在运行的内核的文件是无害的 - 该文件仅在启动时使用 - 但删除内核包也会删除模块,这意味着您无法加载新的驱动程序。

不删除正在运行的内核版本的另一个原因是,如果您安装的新内核中存在错误,则使用经过测试的旧内核可以保证您仍然能够启动。显然,内核在分发之前经过了测试,但有时特定于硬件的错误可以使其通过裂缝。

具有自动升级脚本的发行版通常会注意不要删除正在运行的内核。我不知道这在 Arch 上是如何工作的,但 Arch 非常实用,所以你应该手动处理这个问题。如果重新安装正确的内核版本,您应该仍然能够加载模块。

相关内容