OK6410 无法rmmod卸载模块 两种解决办法

OK6410  无法rmmod卸载模块  两种解决办法

这个问题一度让我觉得很奇怪...

可以看出我怎么rmmod都没用,那个模块就在那里...我换用了rmmod_by_EOF就没事了~

方法一:

这个开发板自带文件系统的rmmod命令不行,在好心bloger的帮助下,自己重新编译一个

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

}

用arm-linux-gcc 交叉编译工具编译这个程序,然后放到开发板上,即可卸载模块

方法二:

问题的根源在于OK6410自带的zImage内核的模块处于permanent模式

国外的一个网站上有提到这个问题

即使kernel在.config里面选择了可以卸载模块也没用,模块内部源文件一开始就要定义个Macro——USE_IMMEDIATE

处于premanent模式的内核加载module之后是永久加载,rmmod是搞不定的,这时候要在module的源文件内部添加USE_IMMEDIATE宏定义

demo:

#include <linux/module.h>
#include <linux/init.h>

#define USE_IMMEDIATE

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
	printk(KERN_ALERT "defined Macro USE_IMMEDIATE\n");
	printk(KERN_ALERT "hello world!\n");
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_ALERT "I am back.kernel in planet Linux!\n");
}

module_init(hello_init);
module_exit(hello_exit);

有点问题就是这里会出现一个rmmod:module ‘xx‘ not found的报错,这个和rmmod的实现有关系了~

以后换个busybox  再试试,现在~现就这样吧,以后换kernel的时候再update

时间: 2024-11-05 22:11:12

OK6410 无法rmmod卸载模块 两种解决办法的相关文章

Eclipse 安装 ADT 失败的两种解决办法 [Android Development Tooling]

原因 最近想在新装的 Win7 里搭建一下 Android 的开发环境,虽然现在有 Android Studio 了,不过还是习惯 Eclipse 一点.众所周知的原因,Eclipse 直接安装 ADT(Android Develepment Tooling) 插件是不行的,这里给出两种解决办法,我们的前提是要先安装 Google 的 翻[email protected]!墙工具 GoAgent . 一.使用 Proxy 由于直接访问是不行的,所以你可以使用 VPN 或者 GoAgent 做为

js实现从字符串中查找出现次数最多的字符的两种解决办法

方法一:正则表达式匹配 1 var str = "adadfdfseffserfefsefseeffffftsdg"; 2 var maxLength = 0; var result = ""; 3 while (str != '') { 4 oldStr = str; 5 getStr = str.charAt(0); 6 str = str.replace(new RegExp(getStr, "g"), ""); 7 i

multipart/form-data请求 -Python 两种解决办法

今天遇到requests 请求的一种新情况,请求方法 multipart/form-data.下面提供两种解决办法. 第一种 第二种 from urllib3 import encode_multipart_formdata import requests data = {"districtId":"1","page":1,"pageSize":"10"} headers = { "Content

java.lang.IllegalArgumentException: pointerIndex out of range两种解决办法

java.lang.IllegalArgumentException: pointerIndex out of range 在做拍摄海报功能的时候需要拍摄界面的surface进行手势缩放,做多点触控放大缩小,操作时发生这个异常,如果是操作图片的放大缩小多点触控不会出现这个错误,这个bug是Android系统原因此处给出两种解决方式: 第一种方式是: 修改frameworks\base\core\jni\android_view_MotionEvent.cpp的android_view_Motio

MySQL同步故障:&quot; Slave_SQL_Running:No&quot; 两种解决办法

进入slave服务器,运行: mysql> show slave status\G .......             Relay_Log_File: localhost-relay-bin.000535              Relay_Log_Pos: 21795072      Relay_Master_Log_File: localhost-bin.000094           Slave_IO_Running: Yes          Slave_SQL_Running:

Mybatis 报无效的列类型 两种解决办法

最近忙,好久没来写博文了,惭愧.今天遇到如题的问题,就是在mybatis 插入oracle数据库空值的报的异常:   org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.S

关于两个div高度保持一致的(css+js)两种解决办法

最近修改以前写的一些代码,发现点问题. 比如2个div需要动态的保持一致的高度. css的做法是: 精心开发5年的UI前端框架! .代码   <div style="overflow:hidden"> <div id="left" style="margin-bottom:-10000px; padding-bottom:10000px;"></div> <div id="right"

linux 命令行不显示路径了,而显示为-bash-4.1#的两种解决办法

问题描述: linux的命令行界面显示的不是路径,而是-bash-4.1#: 原因分析: 出现这个问题的原因是因为没有配置.bash_profile的问题,或者是我们不小心清空或删除了.bash_profile文件. 解决方法 方法一:修改 ~/.bash_profile文件 1.修改~/.bash_profile文件,在~/.bash_profile文件后面加上一行: export PS1='[\[email protected]\h \W]\$' 如果~/.bash_profile被误删掉了

linux shell中不显示路径了,显示为-bash-4.1#的两种解决办法

出现这个问题的原因是因为没有配置.bash_profile的问题,或者是我们不小心清空或删除了.bash_profile文件. 办法一:修改 ~/.bash_profile文件 步骤如下: vim ~/.bash_profile (不用管.bash_profile这个文件有几个,自己新建一个也是可以的) 在最后加上 export PS1='[\[email protected]\h \W]\$' 然后执行 source ~/.bash_profile 这样shell就可以显示路径了. 方法二:拷