但是这个EXPORT_SYMBOL 在2.6.24的内核中被取消了,导致drcom-1.3.7不能编译。
/home/zrx/drcom-1.3.7/kmod/proto.c: In function ‘init_hijack’:
/home/zrx/drcom-1.3.7/kmod/proto.c:450: error: ‘security_ops’ undeclared (first use in this function)
/home/zrx/drcom-1.3.7/kmod/proto.c:450: error: (Each undeclared identifier is reported only once
/home/zrx/drcom-1.3.7/kmod/proto.c:450: error: for each function it appears in.)
/home/zrx/drcom-1.3.7/kmod/proto.c: In function ‘cleanup_hijack’:
/home/zrx/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
随之而来的问题就是新内核在需要drcom的网络环境中不能上网了。就这个问题我请教了开源版本drcom开发者之一的Wheelz。目前最简单的办法只能修改内核,重新编译。
针对2.6.24的内核,具体办法如下:
1) 在内核的security/security.c文件的最后加上EXPORT_SYMBOL(security_ops);
2) 重新编译一下内核。
3) drcom-1.3.7/kmod/proto.c在#include
extern struct security_operations *security_ops;
4)编译安装drcom。
情况就是这样,目前我还在编译内核的阶段。因为想加快编译的速度,修改.config文件失误导致的失败已经若干次了。这次直接就用ubuntu的默认内核配置,不该有的问题就该都没有了吧。只是我没有完全按照Wheelz说的那样修改,有没有效果还不好说。要是失败,那就只能再编译一次了。不过等到下一次编译好,估计要1点了,也就没机会测试了。如果还是不行,我也就只能在2.6.22下面蹉跎了。