这种情况总是困扰我:
我写了一个内核模块,有时它有一个bug(取消引用一个NULL指针).在insmod hello.ko之后,它显示了一些内核错误.然后我更改代码,并尝试删除该模块并再次安装它.问题是:我不知道如何删除内核模块.
$ rmmod你好
错误:模块问候语正在使用中
$ rmmod -f你好
错误:删除hello:设备或资源繁忙
我总是重启机器以移除模块,这需要太长时间.有人有更好的解决方案吗?谢谢你的任何投入.
bdo*_*lan 11
使用虚拟机.
一旦你进行了NULL解除引用或其他类似的错误,你就会将内核置于未知状态.即使你确实设法删除模块(这是不可能的;内核OOPS杀死调用线程,所以它永远不会有机会减少引用计数 - 模块永远不会被删除)可能仍然存在腐败留下了,你的新"固定"模块也有可能遇到麻烦.
使用快速重启虚拟机(可能带有快照)可以更快地进行恢复.