rmmod:。。。: No such file or direct解决办法

4110阅读 0评论2015-03-10 M_O_Bz
分类:LINUX

转自:http://www.cnblogs.com/feisky/archive/2010/05/29/1746888.html

 

 

 

必须创建/lib/modules/2.6.30.4这样一个空目录,否则不能卸载ko模块.
# rmmod nls_cp936
rmmod: chdir(/lib/modules): No such file or directory
但是这样倒是可以卸载nls_cp936,不过会一直有这样一个提示:
rmmod: module 'nls_cp936' not found

 

 

 

 

初步发现,原来这是编译kernel时使用make modules_install生成的一个目录,

但是经测试得知,rmmod: module 'nls_cp936' not found来自于busybox,并不是来自kernel,

1.创建/lib/modules/2.6.30空目录就.

2.使用如下源码生成rmmod命令,就可以没有任何提示的卸载ko模块了[luther.gliethttp]

#include

#include

#include

#include

#include

#include

int main(int argc, char *argv[])

{

const char *modname = argv[1];

int ret = -1;

int maxtry = 10;

while (maxtry-- > 0) {

ret = delete_module(modname, O_NONBLOCK | O_EXCL);//系统调用sys_delete_module

if (ret < 0 && errno == EAGAIN)

usleep(500000);

else

break;

}

if (ret != 0)

printf("Unable to unload driver module \"%s\": %s\n",

modname, strerror(errno));

}

 

3.把生成的命令复制到文件系统

# arm-linux-gcc -static -o rmmod rmmod.c

# arm-linux-strip -s rmmod

# cp rmmod /nfs/

cp /nfs/rmmod /sbin

(注:上面的cp命令最好先不要做,我记得第一次我这样做的时候,开发板就死机了,后来重启也岂不来了,后来我查看了一下,在开发板中/sbin/rmmod是一个链接,我的做法是用cp命令:cp -l /sbin/rmmod /sbin/rmmod.bak,然后再把原来的rmmod删除了,在cp进去,这样的话,就没有问题了,呵呵)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qiaoliang328/archive/2010/01/15/5191821.aspx

上一篇:usb-OTG-ADP-HNP-SRP
下一篇:windows是如何处理android复合设备驱动的?