分类: LINUX
2012-08-11 14:22:16
另一种方案:
必须创建/lib/modules/2.6.30.4这样一个空目录,否则不能卸载ko模块.
初步发现,原来这是编译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