我如何知道我的内核是否支持模块卸载?

我如何知道我的内核是否支持模块卸载?

我正在使用 Debian Stretch 64 位和 Gnome 3.22.2。当尝试更新 NVIDIA 驱动程序时,我收到以下消息:

错误:NVIDIA 内核模块“nvidia-drm”似乎已加载到您的内核中。这可能是因为它正在使用(例如,由 X 服务器、CUDA 程序或 NVIDIA 持久守护进程使用),但如果您的内核配置为不支持模块卸载,也可能会发生这种情况。在尝试升级驱动程序之前,请务必退出任何可能正在使用 GPU 的程序。如果没有基于 GPU 的程序正在运行,你知道你的内核支持模块卸载,并且您仍然收到此消息,则可能发生错误,导致 NVIDIA 内核模块的使用计数损坏,最简单的补救措施是重新启动计算机。

我如何知道我的内核是否支持模块卸载?

我是尝试其他解决方案也一样,但到目前为止还没有成功。

答案1

没有通用的方法来检查内核配置选项。

如果您有权访问内核配置,请检查它是否包含#define CONFIG_MODULE_UNLOAD.基于 Debian 的发行版将内核配置存储在.一些发行版(但不是 Debian)将配置存储在内核本身中,您可以在其中使用./boot/config-VERSIONVERSIONuname -rzcat /proc/config.gz

或者,您可以测试该功能。为您没有的硬件或某些您不使用的网络功能加载一些模块,然后卸载它。例如(假设tunnel6未加载 - 检查它/sys/modules/tunnel6不存在)

insmod /lib/modules/`uname -r`/kernel/net/ipv6/tunnel6.ko
rmmod tunnel6

PC 的内核以及更普遍的硬件可以动态插入和拔出的系统的内核几乎总是在编译时支持模块卸载。这包括 Debian 内核。所以你可以检查一下以确定,但对你来说答案是肯定的。

相关内容