分页: 1 / 1

升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-16 14:11
JiangMiao
第一次编内核,搞了一个通宵,终于还是成功了。
一、基本配置和效果
原系统: Ubuntu 9.04 (内核2.6.28) + ATI官方9.8
升级至: Ubuntu 9.04 (内核2.6.31) + ATI官方9.9
CPU: AMD Phenom 9550+集成显卡ATI HD3300
initrd.img 由7.4M缩至3.1M
vmlinuz 由3.3M缩至2.8M
启动速度 12秒提升至6秒
glxgears由1000提升至2400
chromium 4.0, Firefox-3.5 peacekeeper分数均有10%~15%的提升。

二、问题
碰到的主要问题是ATI官方fglrx mod加载失败,当启动时显示fglrx失败时,按ctrl+alt+f1可切至终端登入。错误可以由dmesg查看
1、find_task_by_vpid 未定义
原因:2.6.31内核不再提供find_task_by_vpid函数
解决方法:https://bugs.launchpad.net/ubuntu/+sour ... bug/394985
修改/usr/src/fglrx-8.65的firegl_public.c
diff -ruN fglrx-8.620.orig/firegl_public.c fglrx-8.620/firegl_public.c
--- fglrx-8.620.orig/firegl_public.c 2009-07-30 02:29:19.000000000 +0100
+++ fglrx-8.620/firegl_public.c 2009-07-30 02:47:43.000000000 +0100
@@ -1292,7 +1292,10 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
p = find_task_by_pid( pid );
#else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
p = find_task_by_vpid( pid );
+else p = pid_task( pid, PIDTYPE_PID );
+#endif
#endif
if (p)
{

2、*ERROR* firegl_stub_register failed
原因:drm或radeon已加载
解决方法:禁用模块drm
修改/etc/modprobe.d/blacklist.conf加入
blacklist radeon
blacklist radeonfb
blacklist drm
当然作为自编译的内核,我连drm的模块模式都取消了。即编译配置的Graphics Support->Direct Rendeering Manager 为 N
另:/dev/agppart(AGP support)一定要选上,不然agp相关的函数fglrx都找不到而导致加载失败。同时我还钩了该项下的 ATI chipest
support. 该项下的其余选项都为 N


三、其它事项
1、Sound card support的Advanced Linux Sound Architecture为module形式更好,
我个人自编译alsa驱动效果大大好于内核符带的效果(声卡: Creative Audigy Value, CA0106)。如果为是built-in alsa,则无法安装。

2、USB support的USB verbose debug messages为N
否则dmesg会出现大量usb uevent消息,我不清楚是好是坏,但禁用了usb debug信息后消失。

3、File systems中的FUSE勿必选上
否则nautilus试图加载其它硬盘分区将失败。

4、多核编译时加前缀CONCURRENCY_LEVEL以提高速度
如我是4核则为
CONCURRENCY_LEVEL=4 make-kpkg --initrd --append-to-version=-miao-0.1 kernel_image
这样在AMD 9550上编译精简的内核一次只需要3分钟 (实测,180秒)。如果花了30分钟乃至数小时编译,那多半勾了太多可能用不着的东西。参见5

5、精简
编译的耗时主要花在各类硬件支持上。而实际上大多数硬件支持可能短时间内不需要。目前除SCSI disk support看上去没有实际上要勾的情况外,其余不需要的支持就放心的打上N吧。像网卡,声卡,显卡驱动支持勾的选项只需3个,特性支持酌情删减。

四、其关命令与顺序
1、初使化
make mrproper
make defconfig

2、修改配置
make xconfig
xconfig 需qt3支持
apt-get install libqt3-headers libqt3-mt-dev

3、编译
make-kpkg clean
CONCURRENCY_LEVEL=4 make-kpkg --initrd --append-to-version=-miao-0.1 kernel_image
生成的deb文件在上级目录。

4、安装
dpkg -i xx.deb

5、重编译
重复2,3,4

PS: 配置并编译内核 说要重编译无需删除只需再编译即可,但我这里没有,大家可以看看deb的修改时间是否变动来检验,重启重装了N次才发现..

五、参考
站内:精简内核的最终方法……
站内:配置并编译内核[更新到linux-2.6.29.2]

六、相关链接
内核地址 http://www.kernel.org/
ATI linux驱动 http://ati.amd.com/support/driver.HTML
ALSA下载 http://www.alsa-project.org/main/index.php/Download

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-16 16:08
lion1131
标记一下,

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-16 18:15
jarryson
闭源驱动是麻烦一点。

这样的帖子要顶,虽然肯定很多人看不懂

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-16 18:26
liwangli
MARK

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-18 13:45
leweslove
仁兄速度真快!!!!!
正打算今天晚上回去实验!! :em20 :em20 :em20

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-26 0:06
jonsen
支持,先mark一下。

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-26 0:10
wangdu2002
路过学习,楼主动手能力和解决问题能力较强。 :em11

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-28 0:04
xyf
JiangMiao 写了:CONCURRENCY_LEVEL=4 make-kpkg --initrd --append-to-version=-miao-0.1 kernel_image
这招实在是妙,充分发挥了多核处理器的优势。 :em11

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-28 0:22
adagio
mark :em11

Re: 升级至内核2.6.31+ATI官方9.9成功,及一点注意事项

发表于 : 2009-09-28 0:27
hcym
哪天活腻了就编个核