2013-06-22 124 views
5

我正在写一个可加载的内核模块,并试图对其进行测试。将其插入后,我试图用rmmod xxx命令来删除它,但我得到一个错误说module xxx is in use和模块卡,我无法将其删除。任何想法如何删除模块,而无需重新启动整个机器? (Linux内核v 3.5.0。)无法删除加载内核模块

注:rmmod -f打印Error: device or resource busy

+0

也许'rmmod的-f'? –

+0

'rmmod -f'不起作用,它会打印'错误:设备或资源繁忙' –

+2

那么重新启动。 (想想看,一个VM与内核打转转,而不是你的主要宿主。重新引导不是一个真正的问题呢。) – Mat

回答

8

这只是发生在我身上时,有在我的司机,这是造成模块中的代码恐慌或以某种方式崩溃的bug 。根据我的经验,一旦发生这种情况,重启是唯一可行的方法

正如我所说的,内核通常恐慌,所以你应该将其插入或正在运行的应用程序,你不行使的,之后退房dmesg的。我不确定,但如果驱动程序不释放互斥锁,则可能会发生此行为。

1

检查您的宏module_exit功能是正确的。 您可能需要编译您的内核以使用MODULE_FORCE_UNLOAD = yes来“删除模块而不重新启动整个机器”。