高手请进 》》 help! drcom-1.3.7在2.6.24内核中无法编译了

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
syrano
帖子: 4313
注册时间: 2007-10-06 18:40

高手请进 》》 help! drcom-1.3.7在2.6.24内核中无法编译了

#1

帖子 syrano » 2008-02-24 13:18

drcom-1.3.7在2.6.24内核中无法编译,
提示错误 :em31

代码: 全选

/home/david/drcom-1.3.7/kmod/proto.c: In function ‘init_hijack’:
/home/david/drcom-1.3.7/kmod/proto.c:450: error: ‘security_ops’ undeclared (first use in this function)
/home/david/drcom-1.3.7/kmod/proto.c:450: error: (Each undeclared identifier is reported only once
/home/david/drcom-1.3.7/kmod/proto.c:450: error: for each function it appears in.)
/home/david/drcom-1.3.7/kmod/proto.c: In function ‘cleanup_hijack’:
/home/david/drcom-1.3.7/kmod/proto.c:461: error: ‘security_ops’ undeclared (first use in this function)
make[3]: *** [/home/david/drcom-1.3.7/kmod/proto.o] Error 1
make[2]: *** [_module_/home/david/drcom-1.3.7/kmod] Error 2
make[1]: *** [default] Error 2
make: *** [kmod] Error 2
内核已经有了 CONFIG_SECURITY 和 CONFIG_SECURITY_NETWORK 参数
请教高手,这是什么原因
难道不能用8.04了?
头像
syrano
帖子: 4313
注册时间: 2007-10-06 18:40

#2

帖子 syrano » 2008-02-24 19:29

自己顶.
头像
reshine
帖子: 91
注册时间: 2006-04-29 1:43
联系:

#3

帖子 reshine » 2008-03-01 1:12

Me too, don't know how to fix it.
I install 7.10 first and upgrade to this kernel and then the the whole system.
Now I'm using 8.04 in the kernel of 2.6.22.14
头像
reshine
帖子: 91
注册时间: 2006-04-29 1:43
联系:

#4

帖子 reshine » 2008-03-01 5:02

发现是2.6.24里面的<linux/security.h> 少了一个 security_ops 的全局变量。
没有研究过drcom,也不知道怎么样修改代码…… 等高手了。
头像
reshine
帖子: 91
注册时间: 2006-04-29 1:43
联系:

#5

帖子 reshine » 2008-03-02 14:08

在08-3-2,Wheelz <kernel.zeng@gmail.com> 写道:
- 隐藏引用文字 -
Hi, 你好。

我注意到了这个问题,是因为2.6.24的内核取消了对security_ops的EXPORT_SYMBOL。

现在,针对2.6.24的内核,最简单的办法是
1) 在内核的security/security.c文件的最后加上EXPORT_SYMBOL(security_ops),
2) 重新编译一下内核。
3) drcom-1.3.7/kmod/proto.c在#include <linux/security.h>后面加上一句:
extern struct security_operations *security_ops;
就还可以用了。

但问题是,大多数人肯定都希望不要重新编译内核,编译内核是一件麻烦事。
如果不编译内核的话,从我现在的了解,这个问题现在还不太好解决,
因为现在的内核越来越保守,还真的没有什么可靠和合法的办法来截获socket的某些函数指针。
可能以后要考虑用netfilter来做了,但这样做的工作量比较大,短期够呛。


Regards,

ZENG ZHAORONG
头像
syrano
帖子: 4313
注册时间: 2007-10-06 18:40

#6

帖子 syrano » 2008-03-05 22:31

reshine 写了:在08-3-2,Wheelz <kernel.zeng@gmail.com> 写道:
- 隐藏引用文字 -
Hi, 你好。

我注意到了这个问题,是因为2.6.24的内核取消了对security_ops的EXPORT_SYMBOL。

现在,针对2.6.24的内核,最简单的办法是
1) 在内核的security/security.c文件的最后加上EXPORT_SYMBOL(security_ops),
2) 重新编译一下内核。
3) drcom-1.3.7/kmod/proto.c在#include <linux/security.h>后面加上一句:
extern struct security_operations *security_ops;
就还可以用了。

但问题是,大多数人肯定都希望不要重新编译内核,编译内核是一件麻烦事。
如果不编译内核的话,从我现在的了解,这个问题现在还不太好解决,
因为现在的内核越来越保守,还真的没有什么可靠和合法的办法来截获socket的某些函数指针。
可能以后要考虑用netfilter来做了,但这样做的工作量比较大,短期够呛。


Regards,

ZENG ZHAORONG
成功 :em38
头像
reshine
帖子: 91
注册时间: 2006-04-29 1:43
联系:

#7

帖子 reshine » 2008-04-13 12:00

viewtopic.php?t=115048&highlight=
新版本的drcom已经发布,解决了新内核不能编译的问题了。
回复