Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103421
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-27 00:03
文章分类

全部博文(30)

文章存档

2013年(30)

分类: LINUX

2013-08-16 22:31:26

转自: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

阅读(1388) | 评论(0) | 转发(0) |
0

上一篇:(十)、  UART

下一篇:mmap DMA

给主人留下些什么吧!~~