关于 rmmod: chdir(xxx): No such file or directory 解决方法

    在busybox下 rmmod 时提示 rmmod: chdir(xxx): No such file or directory。初步发现,原来这是由于使用的 busybox 不同于发行版 linux 安装,没有生成相应的目录:

/lib/modules。

有两种解决方式:

1.创建 /lib/modules/$(uname -r) 空目录就行了 .

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

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

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));

} 

由于 busybox 缺少必要的库文件所以还需要使用静态链接的方式:

$ gcc -static -o rmmod rmmod.c
编译出可执行文件有点大了,以后再解决这个问题。
 


原文地址:

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







你可能感兴趣的:(关于 rmmod: chdir(xxx): No such file or directory 解决方法)