Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101419943
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-29 23:19:05

我是一个用Linux3个月的小菜鸟,试过别的版本,最终还是回到了Slackware。看着用别发行版本的大大只要ati-installer-XXXXXX.run --buildpkg XXXXX一下然后安装包就能加上驱动心里好生羡慕。。。

但是Slackware不在ATI的buildpkg中支持的名单里,不能生成包。。。再加上编译内核模块怎么也通不过。本着多看贴少发问的原则,闷头捣鼓了3天。
我的显卡是ATI Mobility Radeon 9000 只能用8.28的驱动,新驱动不支持这个显卡了,内核是2.6.18.3

首先
./ati-installer-XXXXXX.run
安装好了提示出错
去/lib/modules/fglrx发现没有建立内核模块
在/lib/modules/fglrx/build_mod里 ./make.sh提示找不到version.h

*我从这里学到一点,编译过的内核源代码才会有version.h utsrelease.h,原来内核编译完后内核源代码还有用不能丢。。。- -!

又把内核源代码搞来,这次不放在/tmp里了,放到/usr/src/linux-2.6.18.3,然后
ln -sf /usr/src/linux-2.6.18.3 /usr/src/linux
我之前备份过.config所以直接复制过来就编译了

./make.sh又提示include版本号和当前内核不相符,查帖子新版核心版本号从version.h到 utsrelease.h里了。。- -!
在/usr/src/linux/include/linux里把ustrelease.h内容添加到version.h里

这下不提示版本号不相符了,但是出错信息一大堆。。- -!(我晕)
此后就在这个环节卡住了

没有内核模块3d加速免谈。。。可是怎么也编译不过。。。

难不成为了个驱动,还非要换回2.4核心。。。郁闷的睡觉了。。。过了一天突然注意到 ati-installer-XXXX.run里有个extract参数,为什么别家发行版本可以用,slackware就偏偏不行呢?解压出来看看
./ati-installer-xxxxxx.run --extract /tmp

到/tmp/Packages里看看 buildpkg名单里的各家发行版支持文件都在这里 总该有2.6.18核心的发行版吧 看看他们是怎么编译的。。。
转来转去在 SuSE 和 红帽的文件夹里 都有一个叫kernel-2.6.18.diff的东东,这不是补丁么。。。。
。。。不支持buildpkg就罢了。。。我们自己动手编译。。可是你安装程序不给补丁就叫我们编译就不对了。。!·#¥%..

进入/lib/modules/fglrx/build_mod
patch这个命令还不太会用。。man了一下
patch -i kernel-2.6.18.diff firegl_public.c -o fire.c
mv fire.c firegl_public.c
把从安装包里弄出来的补丁打上。。。
然后
./make.sh
两个warning。。。
在那个2.6.x里面就找到好不容易搞出来的fglrx.ko了

赶紧insmod fglrx.ko
-1:Operation is not permissed.
- -llllll晕哦。。。反复捣鼓。。。最后又和昨天一样郁闷的睡觉了。。。。

早上起来翻了翻帖子在google转了几圈。。。在一篇指导安装开源ati驱动文章里发现一点提示:一定不要把DRM编译到内核里。。。我是把DRM编译到内核里了。。联想到昨天那个操作不允许的提示。。。也许冲突了
到/usr/src/linux
make menuconfig
把Direct Rendering Ma……选成M重新编译了内核。。。换上新内核重启。。。
然后进/lib/modules/fglrx/build_mod/2.6.x
insmod fglrx.ko。。。成功
HOHO
运行 /lib/modules/fglrx里的make-install.sh它会更新内核模块的依赖关系。。以后加载fglrx就可以用modprobe了。

aticonfig --initial 
然后startx 发现还是加载的mesa的驱动刚才加载的fglrx居然从内存里消失了。。。drm和radeon却呆在内存里。。。应该是xorg.conf里的mesa驱动段还留着。。。

/etc/X11R6/xorg.conf 保留那个注释里说不能删的一个vga的device段和aticonfig配置的device段 monitor段和screen段 把以前xorgconfig配置的device段monitor段和screen段统统去掉
保存
startx。。。搞定了。
运行了下fgl_glxgears 22xxfps

小菜鸟又把目光投向了XGL+COMPIZ。。。

小菜鸟又出发了。。。

附上补丁:

--- firegl_public.c.orig 2006-08-09 11:42:47.000000000 +0200
+++ firegl_public.c 2006-08-09 11:47:55.000000000 +0200
@@ -23,6 +23,9 @@
 
 // ============================================================
 #include 
+#ifndef UTS_RELEASE
+#include 
+#endif
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)
 #include 
@@ -3113,6 +3116,10 @@
 #endif /* __ia64_ */
 #endif /* __AGP__BUILTIN__ */
 
+#ifndef VM_SHM
+#define VM_SHM  0
+#endif
+
 int ATI_API_CALL __ke_vm_map(struct file* filp,
                              struct vm_area_struct* vma, unsigned long offset,
                              enum __ke_vm_maptype type,
阅读(539) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~