让“镭”在Linux上空响起 楚布衣 2001年 37期 作为能与Nvidia抗衡的公司,加拿大公司ATI的Radeon(镭)为大家提供了另一种选择。如果你有一块镭,何不马上试试Linux上的Q3呢?   在Xfree86的开发版本中,镭已经得到了支持,但如果你不想应付那些pre-release版本的BUG的话,最好用刚刚正式发布的Xfree86 4.1.0,这个版本对镭提供了正式支持,比较稳定。目前大部分Linux发行商也提供了相应的最新下载包,大家可以根据自己的情况下载。   首先要升级到Xfree86 4.1.0。由于已有一些文章专门讨论,本文不再赘述(详情可参看《电脑报》2001年19期《升级X-window》一文)。   其次,有了最新的 XFree86后,要想使镭运行在3D硬件加速状态,还要打开镭的DRI(直接渲染界面,可以提供对显卡3D特性的快速存取)。为了使Radeon 充分发挥出DRI,Linux内核必须支持AGPGART,2.4.x以上的Linux内核都已经支持了AGPGART。如果你的Linux内核版本在2.4以下,就需要升级内核(要注意,有些发行版本的Linux虽然内核版本在2.4以上,但由于为了兼顾普遍性,一些选项未能正确选择,也不能提供对DRI的支持,建议大家都重新编译一下内核)。目前最新的内核是2.4.5,先将其下载下来,解开到usr/local/src,运行make menuconfig。   下面的地方要特别注意!在menuconfig的顶端有一项Character devices,其下有个/dev/agpgart的选项,一定要enabled。当然如果你想将其作为一个模块(module),随时装卸,应该也可以。再下来有一些不同主板芯片组的选项,将其它的去掉,而选择和你主板相应的即可(如果你不知道自己的主板芯片,也可以全部都选上!但这样会增大内核,降低性能,我建议还是翻翻说明书或是用hwinfo之类的工具搞清楚)。我用的是VIA KT133A,选上VIA chipset support,接下来打开Direct Rendering Manager (XFree86 DRI Support)。现在差不多快成功了。在显卡处选上支持ATI Radeon,但一定要将其设为模块(module),如果你没有将其设为module,而编进了内核,很可能DRI不能正常工作!   好了,配置完内核后,编译,安装,重新启动。最后,还要升级显卡模块。通常默认的radeon.o的版本不对,需要升级。一种方法是下载Radeon的驱动程序,升级整个驱动程序;另一种方法是拷贝一个正确的radeon.o到lib/modules/2.4.5/kernel/drivers/char/drm目录下,覆盖刚才编译内核时生成的旧版本的radeon.o。此文件可在ftp://ftp.blarg.net/users/steveha/radeon.o.gz下载。覆盖原 radeon.o后,重启XFree86,应该就可以实现镭的DRI了。   另外,由于我们是将radeon.o作为module编译的,系统不会自动加载,需要手工加载合适的驱动,并添加到/etc/modules.conf (或 etc/conf.modules)   # modprobe radeon   # echo radeon >> /etc/modules.conf   如何知道自己的Linux到底用上了DRI没有呢?打开/var/log/XFree86.0.log ,查找“DRI”,如果有“DRI enabled ”字样就表示DRI打开了。当然还可以在Xwindows的终端窗口运行glxinfo ,然后从含“OpenGL renderer string”的那行往下看,如:   $ glxinfo   OpenGL renderer string: Mesa DRI Radeon   也表示DRI打开了。这个命令还可以看到很多的输出信息,给出详细的显卡功能信息,包括双缓冲(Double-buffering),颜色深度缓冲(Depth buffering)、模板缓冲(Stencil buffering)、积聚缓冲(Accumulation buffering)等等。   如果DRI驱动没加载,显示的信息就是:   $ glxinfo   OpenGL renderer string: Mesa Radeon indirect   表明你的系统用的是软件渲染,未能发挥出显卡的硬件加速性能!此时,检查/var/log/XFree86.0.log,看看有哪个地方不对。要记住,如果编译内核时,选择radeon时未选择module,此时会有一点麻烦!因为如果默认的radeon.o版本不对(通常情况下都会有点问题),此时运行Xwindows会发现DRI未能正常工作。检查/var/log/XFree86.0.log,可以看到“radeon.o file was the wrong version”的信息。如果是module,只需用一个正确的radeon.o覆盖lib/modules/2.4.5/kernel/drivers/char/drm下的错误文件即可。但假如不慎将其编译成为内核的一部分,而系统将其作为内核加载,在lib/modules/2.4.5/kernel/drivers/char/drm下就不会有radeon.o文件,也无法覆盖!此时只有重新编译内核!   最后,祝大家成功,都能让自己的“镭”自由地“响彻”在Linux上!