如何删除失败的内核模块

Fen*_*ang 18 linux-kernel

这种情况总是困扰我:

我写了一个内核模块,有时它有一个bug(取消引用一个NULL指针).在insmod hello.ko之后,它显示了一些内核错误.然后我更改代码,并尝试删除该模块并再次安装它.问题是:我不知道如何删除内核模块.

$ rmmod你好

错误:模块问候语正在使用中

$ rmmod -f你好

错误:删除hello:设备或资源繁忙

我总是重启机器以移除模块,这需要太长时间.有人有更好的解决方案吗?谢谢你的任何投入.

bdo*_*lan 11

使用虚拟机.

一旦你进行了NULL解除引用或其他类似的错误,你就会将内核置于未知状态.即使你确实设法删除模块(这是不可能的;内核OOPS杀死调用线程,所以它永远不会有机会减少引用计数 - 模块永远不会被删除)可能仍然存在腐败留下了,你的新"固定"模块也有可能遇到麻烦.

使用快速重启虚拟机(可能带有快照)可以更快地进行恢复.