内核模块insmod、rmmod过程中问题解决Device or resource busy
内核模块insmod加载时没有问题,卸载时显示Device or resource busy:
一般产生这种问题,insmod加载时没有问题,说明程序中模块入口module_init执行成功了,但是出口module_exit执行失败,其实终极解决方案就是将ubuntu重新启动,就可解决,但是总不能一直重启吧,后来找了找资料发现是编译器的问题,编译的内核模块和内核不兼容。因为我是在ubuntu里加载,那就是我的gcc编译器的版本和ubuntu内核不兼容,所以我用了板子测试,内核版本kernel-3.4.39,编译器版本toolchain-4.5.1,在板子上完全没有问题,于是更新了ubuntu的编译器版本搞定了:
排查过程1:一般当你已经加载了模块,再次insmod XXX.ko时,会出现insmod:ERROR:could not insert module demo.ko:File exists
排查过程2:但是我自己明明是第一次卸载这个模块为什么会报错:
我用lsmod查看了所有的模块,发现我自己的demo显示permanent,也就是永久的,只能重新给ubuntu升级编译器版本
解决方法:
升级ubuntu的编译器版本