如何卸载正在使用的内核模块?

如何卸载正在使用的内核模块?

我正在按照本教程使我的读卡器正常工作:http://ubuntuforums.org/showthread.php?t=636867

但是我无法卸载我的 sdhci 模块:

sudo modprobe -rv sdhci mmc_core mmc_block
modprobe: FATAL: Module sdhci is in use.

我该如何继续?

答案1

首先,找出哪些其他模块使用该模块sdhci

lsmod | grep sdhci

您将获得如下列表:

module size used_by

尝试在要卸载的模块之前或与要卸载的模块一起卸载这些模块(used_by):

sudo modprobe -r <module found from lsmod> <module you want to remove>

如果您想阻止模块在下次启动时加载,请将其添加到黑名单:

echo -e "sdhci\n" | sudo tee -a /etc/modprobe.d/blacklist.conf

答案2

另一个值得关注的地方是“lsof”除了卸载依赖模块之外。

# lsof | grep < 与模块相关的字符串 >

这应该会列出通过模块打开的文件。尝试终止打开文件的进程,并检查模块引用计数是否通过“lsmod”命令。

相关内容