LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2048|回复: 11

apparmor kernel patches for kernel 2.6.17.7

[复制链接]
发表于 2006-8-1 01:27:23 | 显示全部楼层 |阅读模式
[color="Red"][编译内核注意事项-以及 apparmor 对 kernel 2.6.17.x 的补丁]

内核凶猛,新手勿近。

为了无线网卡,上了内核 2.6.7.17, 7月25号出的latest stable version。

1. 如果不在乎开机两三秒延迟,先打bootsplash补丁。而且,开机时出现 bootsplash 再按esc 键是手掌伸展练习的良好习惯。

2. 优化参数不要太激进,稳定为先,可以参考 gentoo wiki 的 Safe CFLAGS。当然config的时候可以大胆做 preempitible kernel 之类优化设置。

3. 这个2.6.7.17内核有bug, config 的时候需要去掉几个DVB 设备驱动的模块,不然无法成功的make modules,设置的时候没有必要太认真。你去掉一个模块花2秒,电脑编译出来平均也就最多2秒,区别就是一个是你在忙一个是电脑在忙。少花时间在取消各种永远用不到的模块上,让电脑忙活去吧,大不了编完了再进/lib/modules删除就行了。我现在还眼花着呢。编译kernel主要是体力活,唯一的要求是你对自己硬件有点了解,没什么技术含量。

那个bug详情在下面连接,上面还有bootsplash补丁,连官方的连不上,发来备用:
http://www.linuxsir.cn/bbs/showthread.php?t=266291

4. make cloneconfig 以后在make config/menuconfig/xconfig 可以节省不少时间
5. 2.6.x 内核的编译已经不需要 make dep 了,但由于在众多早期编译 kernel 文章屡屡被提及。。。

6. 即使你在内核中选了Automatic kernel modules loading,编译完成启动的时候,还是会出现No module symbols loaded - kernel modules not enabled.  并不影响正常使用,可以 lsmod 看一下。

7.AppAmor 是SUSE的东西,官方内核里面没有。编译以后开机几个failed就是它了。而且,如果你不打 apparmor 补丁的话,升级以后 vftpd 的FTP 服务器可以登录不能访问,出现错误说
OOPS: vsf_sysutil_recv_peek
那是 capability 模块不能自动被加载。modprobe capability就行了。原来是 appamor 自动加载会调用 capability,没加载 apparmor 自然就要手动加载 capability 了。

至于效果,我用了比较保守的优化参数,新内核目前还算稳定,明显速度提升,还没发现问题。无线网卡也没测试。

所有有兴趣和勇气编译 kernel 的,happy compiling。
[color="#ff0000"]
[更新] apparmor patch:

前几天编译了 2.6.17 kernel,仅仅打了 bootsplash 补丁。于是每次开机加载 apparmor 模块的时候都有 4 个
failed。尽管我也不用AppArmor,但还是决定重新编译内核,以便开机得到默认的一个 warning。

首先需要声明,SUSE 对的内核打的补丁并不像传言中那样并不对外公开
openSUSE 项目所有正式打包的内核补丁都可以在相应的 kernel-sourse-版本号.src.rpm 中获得。这个 src.rpm 可以在官方 FTP 和镜像网站的 src 目录找到。

比如 SUSE 10.1 目前最新的官方内核版本是 2.6.16.21 ,通过官方升级发布。那么它的 src.rpm 就在官方升级站的 src 目录下,下面是这个包在一个日本镜像上的地址: http://ftp.novell.co.jp/pub/suse ... .16.21-0.13.src.rpm
btw, SUSE kernel is impressively heavily patched!!

可以用 file-roller 把 rpm 打开,就能看到 patch 分类存在压缩包里面。在 src.rpm 包中找到的 patch 是针对特定版本号内核的,并不一定通用于所有版本的 Kernel 。比如,AppArmor 模块补丁。

官方在 2.6.16.21 内核中提供的 apparmor patch 共包含 5 个文件,有两个由于 Kernel 2.6.17.7 代码的变化不能直接使用,剩下 3 个要求按照先后顺序 patch。

为了方便大家编译,我把那 3 个需要按照顺序 patch 的合成一个 apparmor-p1.patch,包含官方 apparmor apparmor-mmapexec.patch 和 apparmor-secureexec.patch 三个补丁。

把 2 个失效的重新 diff 合成 apparmor-p2.patch,包含 apparmor_audit 和 apparmor_namespacesem 补丁。

尽管理论上没有先后顺序,还是建议打补丁的时候先 patch p1 再 p2。

补丁见附件。

[color="Red"]此补丁已经修复可以使用,在2.6.17.9上测试通过。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-8-1 15:34:06 | 显示全部楼层
Post by Thruth

……
[color="Red"]我现在还眼花着呢。编译kernel主要是体力活
……

确实是体力活,我上一次编译这个东西,花了3天一个一个仔细理解选项,真是眼花目眩。
回复 支持 反对

使用道具 举报

发表于 2006-8-1 17:56:07 | 显示全部楼层
一亿个佩服!
回复 支持 反对

使用道具 举报

发表于 2006-8-1 21:20:37 | 显示全部楼层
编译内核,笔记本内置的读卡器可以用了吗?现在这个是我最头疼的问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-4 22:48:44 | 显示全部楼层
Post by boulevard
编译内核,笔记本内置的读卡器可以用了吗?现在这个是我最头疼的问题了

看你是什么模块的读卡器了。
回复 支持 反对

使用道具 举报

发表于 2006-8-10 12:03:07 | 显示全部楼层
这个补丁是否支持2.6.17.8,打补丁后提示缺少一个kconfig文件的错误,security/Kconfig:103: can't open file "security/apparmor/Kconfig",请教如何解决。

问题解决:是patch1里面有个空行,删除即可。

但问题出来了:
编译时出现如下错误
In file included from security/apparmor/apparmor.h:21,
                 from security/apparmor/main.c:16:
security/apparmor/shared.h:12:1: error: unterminated #ifndef
In file included from security/apparmor/main.c:16:
security/apparmor/apparmor.h:12:1: error: unterminated #ifndef
In file included from security/apparmor/aamatch/match.h:16,
                 from security/apparmor/main.c:17:
security/apparmor/aamatch/../apparmor.h:12:1: error: unterminated #ifndef
security/apparmor/main.c: In function ‘sd_get_execmode’:
security/apparmor/main.c:189: error: ‘SD_EXEC_MODIFIERS’ undeclared (first use i n this function)
security/apparmor/main.c:189: error: (Each undeclared identifier is reported onl y once
security/apparmor/main.c:189: error: for each function it appears in.)
security/apparmor/main.c: In function ‘sd_audit’:
security/apparmor/main.c:740: warning: implicit declaration of function ‘capabil ity_to_name’
security/apparmor/main.c:740: warning: format ‘%s’ expects type ‘char *’, but ar gument 3 has type ‘int’
security/apparmor/main.c: In function ‘sd_change_hat’:
security/apparmor/main.c:1663: error: expected declaration or statement at end o f input
security/apparmor/main.c:1609: error: label ‘out’ used but not defined
security/apparmor/main.c:1663: warning: no return statement in function returnin g non-void
make[2]: *** [security/apparmor/main.o] Error 1
make[1]: *** [security/apparmor] Error 2
make: *** [security] Error 2


由于是菜鸟,patch楼主的patch1时有什么做得不对,出现上述错误,后下载了楼主给的连接的patch成功,patch2用的是楼主的,呵呵,结合在一起了。
回复 支持 反对

使用道具 举报

发表于 2006-8-10 12:05:52 | 显示全部楼层
还有个问题,我用2.6.16.x内核几个版本编译的内核,无线正常,但用了2.6.17.x时无线不能用了,无线网卡天线的灯一直是灭的,不知17.x需要特殊什么设置吗?我的是Intel(R) PRO/Wireless 2200BG Network Connection.
回复 支持 反对

使用道具 举报

发表于 2006-8-10 17:14:53 | 显示全部楼层
thruth 兄弟帮帮忙。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-10 17:22:22 | 显示全部楼层
1. 那个 patch 是有问题。回头我再做一个放上来。谢指正。
2. 如果是按照原来的kernel wifi 设置是不该有问题的
看看 boot.msg有没有提示
回复 支持 反对

使用道具 举报

发表于 2006-8-10 18:28:15 | 显示全部楼层
在17和16用同样默认的设置,无线网卡17不能用,16能用。

有一下的错误,帮我诊断一下,刚接触不久,看不明白,先谢了。
<6>ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, git-1.1.1
<6>ipw2200: Copyright(c) 2003-2006 Intel Corporation
<6>ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
<3>ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
<3>ipw2200: Unable to load firmware: -2
<3>ipw2200: failed to register network device
<4>ipw2200: probe of 0000:02:02.0 failed with error -5

我对比发现以前的driver是:git-1.0.8,不会是这个原因吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表