当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 想在编译的内核中设置一个变量,编译并安装后也可以修改
帖子发表于 : 2016-11-21 20:29 

注册: 2016-10-31 14:50
帖子: 4
系统: windows7
送出感谢: 0 次
接收感谢: 0 次
我要对内核里的代码做一点修改,有一行是判定某个变量是否大于一个值。我可否将这个值设置成一个变量,在我编译并安装此内核后不需要重新编译就可以修改此变量的值?这样比较方便我进行调试,否则每次想改都要重新编译,比较麻烦,谢谢!
PS:如何删除自己以前发的主题,提问的有些蠢?没有找到按钮。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 想在编译的内核中设置一个变量,编译并安装后也可以修改
帖子发表于 : 2016-11-22 20:33 
头像

注册: 2008-09-18 13:11
帖子: 2945
送出感谢: 1
接收感谢: 493
一般的做法是在/proc、/sys等地方注册一个接口,比如/proc里就用proc_create()或2.6.25之前的create_proc_entry(),然后在其回调函数中处理写入事件

当然还有偷懒的做法是用printk输出那个变量的地址,从日志中读到那个地址后,用root权限修改/dev/mem或/dev/kmem中的对应位置


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 想在编译的内核中设置一个变量,编译并安装后也可以修改
帖子发表于 : 2016-11-22 20:35 

注册: 2016-10-31 14:50
帖子: 4
系统: windows7
送出感谢: 0 次
接收感谢: 0 次
astolia 写道:
一般的做法是在/proc、/sys等地方注册一个接口,比如/proc里就用proc_create()或2.6.25之前的create_proc_entry(),然后在其回调函数中处理写入事件

当然还有偷懒的做法是用printk输出那个变量的地址,从日志中读到那个地址后,用root权限修改/dev/mem或/dev/kmem中的对应位置

我用的是4.8的内核,新手能麻烦您说的再具体点么?或者有tutorial么?
多谢!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 想在编译的内核中设置一个变量,编译并安装后也可以修改
帖子发表于 : 2016-11-22 21:04 
头像

注册: 2008-09-18 13:11
帖子: 2945
送出感谢: 1
接收感谢: 493
想了一下,你这种仅供自己调试的情况可以用简单点的方法。
1、用EXPORT_SYMBOL宏导出你的变量。不知道怎么导自己翻一下内核源码中用到EXPORT_SYMBOL的地方
2、然后/proc/kallsyms里面就会有那个变量以及它在内存中的地址了,在root权限下用grep之类的工具找出来
3、最后就是用普通的文件读写方法写入/dev/kmem中的对应位置,不要告诉我你连最最基本的文件读写都不会
根据你要修改的变量的位置不同,你可能要在编译时关掉CONFIG_STRICT_DEVMEM选项


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译