今天真是个值得高兴的日子,因为困扰我很多天的显卡驱动问题终于得到了解决,更为高兴的是凭着不肯服输的精神彻底搞定了它。
废话少说,马上步入主题,回首一下安装ATI显卡驱动的艰辛历程。
废话少说,马上步入主题,回首一下安装ATI显卡驱动的艰辛历程。
先说一下目前自己的软件配置环境:
1. bash, version 3.2.17(1)-release
Binutils: 版本 2.17
bison (GNU Bison) 2.3
bzip2, Version 1.0.4, 20-Dec-2006.
Coreutils: 6.9
diff (GNU diffutils) 2.8.1
GNU find 版本 4.2.31
GNU Awk 3.1.5
gcc (GCC) 4.1.2
GNU C Library stable release version 2.5.1,
grep (GNU grep) 2.5.1
gzip 1.3.12
Linux version 2.6.23.8 ( root@Dennis.Wang) (gcc version 4.1.2) #1 SMP Wed Dec 5 14:39:14 CST 2007
GNU Make 3.81
patch 2.5.4
GNU sed version 4.1.5
tar (GNU tar) 1.18
2. 显卡驱动是ati-driver-installer-7-11-x86.x86_64.run。(显卡是Mobility™ Radeon™ X700)
3. 安装XORG时指定的路径是/usr
1. bash, version 3.2.17(1)-release
Binutils: 版本 2.17
bison (GNU Bison) 2.3
bzip2, Version 1.0.4, 20-Dec-2006.
Coreutils: 6.9
diff (GNU diffutils) 2.8.1
GNU find 版本 4.2.31
GNU Awk 3.1.5
gcc (GCC) 4.1.2
GNU C Library stable release version 2.5.1,
grep (GNU grep) 2.5.1
gzip 1.3.12
Linux version 2.6.23.8 ( root@Dennis.Wang) (gcc version 4.1.2) #1 SMP Wed Dec 5 14:39:14 CST 2007
GNU Make 3.81
patch 2.5.4
GNU sed version 4.1.5
tar (GNU tar) 1.18
2. 显卡驱动是ati-driver-installer-7-11-x86.x86_64.run。(显卡是Mobility™ Radeon™ X700)
3. 安装XORG时指定的路径是/usr
想当初在完成LFS6.3的时候,内核的版本是2.6.22.5,后来被我升级到了2.6.22.12,当时没有升级headers,安装显卡驱动的时 候,出现了好几种错误的现象。基本上就是找不到fglrx模块、内核不匹配、drm找不到的问题,搞的我当时也晕糊糊的,查了很多资料,反复的装也没有解 决问题。不过倒是在#lfs-support上老外给了提示,为我现在解决问题提供了些帮助。以前用了好几个驱动的版本和两个内核,但依然不能成功,现在 想想应该就是同一个问题做作怪。
以前的问题不再去探讨了,就拿现在的2.6.23.8内核和7-11驱动说道说道。
1>应该确保2.6.23.8内核的headers版本和内核版本一致。无法再去证明如果版低或者高的话,也可以成功,因为毕竟现在我是一致了之后 成功的。可以证明的是,2.6.23.8内核使用2.6.22.5的headers确实可以正常工作。有的软件编译不了,也许不是headers的问题, 而是和新内核不兼容。
以前的问题不再去探讨了,就拿现在的2.6.23.8内核和7-11驱动说道说道。
1>应该确保2.6.23.8内核的headers版本和内核版本一致。无法再去证明如果版低或者高的话,也可以成功,因为毕竟现在我是一致了之后 成功的。可以证明的是,2.6.23.8内核使用2.6.22.5的headers确实可以正常工作。有的软件编译不了,也许不是headers的问题, 而是和新内核不兼容。
2>在/usr/src下放了linux-2.6.23.8的kernel source以及为它建了一个linux的软链接。具体用不用这样,我也懒得去考证了,以前的折磨我已经受够了。;) 不过没有这个source的时候,似乎我也安装成功过,只是当时没有意识到路径的错误导致了失败。而且,我在ATI的官方网站上也似曾看到过只需要 headers就可以了。听别人说,有的软件不需要,但象驱动这样的包需要这样。反正,我觉得放就放吧,没什么害处。
3>确保ATI官方网站上写的System Requirements都已经得到满足。 https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/catalyst_711_linux.html#172686,安装之前需要认真看看AMD Catalyst™ Linux 7.11 Release Notes。
3>确保ATI官方网站上写的System Requirements都已经得到满足。 https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/catalyst_711_linux.html#172686,安装之前需要认真看看AMD Catalyst™ Linux 7.11 Release Notes。
4>安装fglrx驱动
安装fglrx没什么特别,也没有象FC、Debian、Ubuntu等发行版那样,特意自己编译成自己的格式来安装,一路默认安装就行了。
这个最新版的驱动是支持2.6.23系列内核的,因此不用象在此版本的内核上安装前一个fglrx驱动那样打非官方的补丁。实际上,在安装完fglrx的 时候,在/lib/modules/fglrx/build_mod下有个patch的文件夹,我想这个应该就是官方为了能够装在2.6.23内核上而打 的补丁。
okay! 如果在安装完了fglrx之后,已经可以加载fglrx模块,fglrxinfo显示的是ati的官方驱动,那么就恭喜了,接下去就是配置文件的问题了。
下面问题就来了,我想说的是如果没有按预期成功的话,该怎么办。
就我碰到的问题来讲:
安装fglrx没什么特别,也没有象FC、Debian、Ubuntu等发行版那样,特意自己编译成自己的格式来安装,一路默认安装就行了。
这个最新版的驱动是支持2.6.23系列内核的,因此不用象在此版本的内核上安装前一个fglrx驱动那样打非官方的补丁。实际上,在安装完fglrx的 时候,在/lib/modules/fglrx/build_mod下有个patch的文件夹,我想这个应该就是官方为了能够装在2.6.23内核上而打 的补丁。
okay! 如果在安装完了fglrx之后,已经可以加载fglrx模块,fglrxinfo显示的是ati的官方驱动,那么就恭喜了,接下去就是配置文件的问题了。
下面问题就来了,我想说的是如果没有按预期成功的话,该怎么办。
就我碰到的问题来讲:
首先,如果在安装驱动的时候,最后完成的时候出现错误,软件会提示你到/usr/share/ati/fglrx-install.log文件里去查找错 误的原因。一般来讲,都是内核不匹配。如果是这样,那么最好选择支持你的显卡的最新驱动来安装,新的驱动大多能够满足内核的需要。还有一种方法是运行 /lib/modules/fglrx/build_mod下的make.sh 和 /lib/modules/fglrx/make_install.sh,也许能得到意想不到的收获。
其次,我在确保安装 已经成功了(因为modprobe fglrx成功,lsmod显示fglrx已被加载)的情况下,配置好了/etc/X11/xorg.conf(使用命令aticonfig --initial,还有自己添加的几段),startx的时候,提示couldn't open fglrx....。这说明fglrx_drv.so没有被正确找到,不知道这是不是ati装完之后本来就没有安装到正确的路径下,所以需要建一个软链 接,来使此模块能够正确加载。fglrx_drv.so安装到的路径在/usr/lib/modules/drivers下,而系统加载的时候会到 /usr/lib/X11/modules/drivers下找,因此,ln -sv /usr/lib/modules/drivers/fglrx_drv.so /usr/lib/X11/modules/drivers。
其次,我在确保安装 已经成功了(因为modprobe fglrx成功,lsmod显示fglrx已被加载)的情况下,配置好了/etc/X11/xorg.conf(使用命令aticonfig --initial,还有自己添加的几段),startx的时候,提示couldn't open fglrx....。这说明fglrx_drv.so没有被正确找到,不知道这是不是ati装完之后本来就没有安装到正确的路径下,所以需要建一个软链 接,来使此模块能够正确加载。fglrx_drv.so安装到的路径在/usr/lib/modules/drivers下,而系统加载的时候会到 /usr/lib/X11/modules/drivers下找,因此,ln -sv /usr/lib/modules/drivers/fglrx_drv.so /usr/lib/X11/modules/drivers。
然后,再次startx的时候又提示
fglrx: Failed to load module "fglrxdrm" (module does not exist, 0)
fglrx(0): Can't load Fire GL DRM library (libfglrxdrm.a)
这个问题就我找出的原因来讲,是因为libfglrxdrm.so没有正确被安装。okay,下面将ati-driver-installer-7-11-x86.x86_64.run释放,
fglrx: Failed to load module "fglrxdrm" (module does not exist, 0)
fglrx(0): Can't load Fire GL DRM library (libfglrxdrm.a)
这个问题就我找出的原因来讲,是因为libfglrxdrm.so没有正确被安装。okay,下面将ati-driver-installer-7-11-x86.x86_64.run释放,
sh ./ati-driver-installer-7-11-x86.x86_64.run --extract FGLRX(FGLRX是释放到的目录),然后将FGLRX/x710/usr/X11R6/lib/modules/linux /libfglrxdrm.so拷贝到/usr/lib/X11/modules/。(重新安装新的版本,需要复制其相对应的 libfglrxdrm.so)
最后,重新startx。oh yeh! 成功了。显示速度比vesa提升了许多,看电影的效果也无比的爽。
下面是测试的结果:
linfves [ ~ ]$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI MOBILITY RADEON X700
OpenGL version string: 2.1.7059 Release
linfves [ ~ ]$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
最后,重新startx。oh yeh! 成功了。显示速度比vesa提升了许多,看电影的效果也无比的爽。
下面是测试的结果:
linfves [ ~ ]$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI MOBILITY RADEON X700
OpenGL version string: 2.1.7059 Release
linfves [ ~ ]$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
linfves [ ~ ]$ glxgears
22119 frames in 5.0 seconds = 4401.098 FPS
23936 frames in 5.0 seconds = 4787.192 FPS
20499 frames in 5.0 seconds = 4099.662 FPS
19337 frames in 5.0 seconds = 3867.234 FPS
24021 frames in 5.0 seconds = 4804.158 FPS
23415 frames in 5.0 seconds = 4682.890 FPS
24460 frames in 5.0 seconds = 4889.698 FPS
24883 frames in 5.0 seconds = 4976.455 FPS
25033 frames in 5.0 seconds = 5006.559 FPS
25840 frames in 5.0 seconds = 5167.855 FPS
27047 frames in 5.0 seconds = 5409.371 FPS
26984 frames in 5.0 seconds = 5396.764 FPS
26188 frames in 5.0 seconds = 5237.388 FPS
25376 frames in 5.0 seconds = 5074.944 FPS
22119 frames in 5.0 seconds = 4401.098 FPS
23936 frames in 5.0 seconds = 4787.192 FPS
20499 frames in 5.0 seconds = 4099.662 FPS
19337 frames in 5.0 seconds = 3867.234 FPS
24021 frames in 5.0 seconds = 4804.158 FPS
23415 frames in 5.0 seconds = 4682.890 FPS
24460 frames in 5.0 seconds = 4889.698 FPS
24883 frames in 5.0 seconds = 4976.455 FPS
25033 frames in 5.0 seconds = 5006.559 FPS
25840 frames in 5.0 seconds = 5167.855 FPS
27047 frames in 5.0 seconds = 5409.371 FPS
26984 frames in 5.0 seconds = 5396.764 FPS
26188 frames in 5.0 seconds = 5237.388 FPS
25376 frames in 5.0 seconds = 5074.944 FPS