Sep 242006
 

自从有了XGL这个东西,Linux下的3D桌面就开始疯狂起来,号称把VIsta的aero踩在脚下,更不把MacOS放在眼里,但是先进归先进,稳定性却不怎么样,这是我半年前在Ubuntu dagger下得出的痛苦结论。然而半年过去了,关于Linux 3D桌面发生了不小的变化,导致我这个小白鼠又一次冲在了前面,或许又是一个国内首创?

自从有了XGL这个东西,Linux下的3D桌面就开始疯狂起来,号称把VIsta的aero踩在脚下,更不把MacOS放在眼里,但是先进归先进,稳定性却不怎么样,这是我半年前在Ubuntu dagger下得出的痛苦结论。然而半年过去了,关于Linux 3D桌面发生了不小的变化,导致我这个小白鼠又一次冲在了前面,或许又是一个国内首创?

首先是XGL与AIGLX之争。缘起XFree86架构导致的3D应用问题,不多说了。Novell的天才程序员以重新发明轮子的勇气作出了XGL这个怪兽,意图将整个X由openGL协议作为最底层绘图支持,来加强X的渲染以及3D加速能力。这个怪兽终究是作出来了,然而因为其太激进,甚至抛弃了Xorg本身,被很多人所不容,同时因为对于很多闭源显卡驱动的兼容性问题(nv和ati都有),导致大部分显卡其实只能通过非直接渲染的方式来支持XGL。这并不是XGL不好,而是其真的太激进了,激进到了厂商以及用户都有点接受不了,而敢于宣称在发行版中集成XGL的,也就只有XGL的老东家Novell,这个时候,AIGLX出现了。AIGLX是Redhat旗下Fedora项目中的一个分支,其目的是通过逐渐改进mesa渲染来将现有xorg中加入openGL的硬件加速功能。从最终结果来看,它与XGL是一样的,都是为X加入3D加速能力。但二者实现方式却选择了两条道路,XGL重新发明轮子,而AIGLX是在现有轮子上增加功能。目前看来,大多数发行版厂商选择了后者,据我所知,支持或者打算支持的著名发行版有RH FC6,Ubuntu 6.10,相信以后会更多。AIGLX还有几个优点使得最终用户可能也倒向它的阵营:1--闭源驱动支持,2--较低的硬件要求,3--资源占用较少,4--避免更换Xserver导致的兼容问题。XGL只是一个理想,AIGLX却是现在摆在我们用户眼前的现实,有这么好玩的东西,我当然是跑在最前面测试的。然而天不遂我愿,nvdia驱动对于一个pixmap函数支持的缺失使得所有nv卡无法运行AIGLX,于是在最近的几个月中,我只有一面玩着我的Longhorn Server,一面关注何时放出最新的nv9XXX驱动,一面郁闷的看着那些集成显卡的玩家秀他们的AIGLX桌面。
9月21日,nv发步了最新的9625beta驱动,changelog第一条就是我想要的,于是我想,看来这个周末有的忙了,我终于可以开始我的AIGXL之旅了。
nv驱动网址:http://www.nzone.com/object/nzone_downloads_linux_display_x86_1.0-9625.htmll

小白鼠不是谁都能当的,其中过程苦不堪言,不过最终完成之后的喜悦也是不言自明的。暂且记录一下自己的经过,避免后人走弯路。

首先是系统环境的准备过程,要求如下:

XOrg 7.1 or laterNVIDIA graphics drivers >= 1.0-9625
Any NVIDIA GPU supported by these drivers
xorg版本是个大问题,如果从源代码编译不知要几天才能完成,只有找二进制包了。一不小心看到了Ubuntu Edgy knot3的release note,包含Xorg7.1,内置AIGLX支持,就是他了,于是下载,刻盘,安装。
安装过程不详述,非常简单,不过安装完启动后发现竟然需要release更新,检查更新竟然发现220多个包要下载安装,需时5个小时,于是开着机器郁闷的睡觉去了。
周日醒来,发现更新出错,几个包找不到,于是切换源从cn到主站,没想到主站下载速度比cn快许多,一面窃喜一面问候中国电信老总的女性亲属。
更新完成,reboot,发现连kernel都给升级了一个版本,启动非常迅速,init竟然没了,唏嘘不已。启动后检查一下基本环境,所有硬件支持ok,网络ok,正式开始AIGLX配置。
首先自然是nvidia驱动安装,下载下来运行,发现没gcc,装,由发现没make,装,没libc,装!再运行,还是报错,说没内核源代码,装,linux-source,devel的乱装一通,还是没,一气之下去kernel.org下载了内核源码,还报错,我晕。静下心来分析一下源的结构,不停的测试,发现最后需要安装的应该是这几个包:libc-devel,linux-headers-i686,后者需要根据你的kernel版本来安装不同arch,我虽然是K8,但不习惯用K7的arch,所以用i686。
驱动顺利编译成功,最后一步要求修改xorg.conf我跳过,因为我习惯自己编辑。手工编辑xorg.conf,作如下修改:
1,换nvidia官方驱动。
找到这一行:
Driver “nv”
修改为
Driver “nvidia”
2,启用AIGLX。
在文件最后添加一小节:
Section “Extensions”
Option “Composite” “Enable”
EndSection
找到Section “ServerLayout”这一小节,添加一个选项:
Option “AIGLX” “true”
3,根据nvnews的建议,添加一个选项
找到Section “Screen”小节
添加:
Option “AddARGBGLXVisuals” “True”
4,保存,重启X,如果能顺利起来,则说明AIGLX环境基本ok了。此时打开/var/log/Xorg.0.log应该能看到如下字样:
(**) Option “AIGLX” “true”
(**) Extension “Composite” is enabled

开启了AIGLX并不代表我们就可以看到眩目的桌面特效了,其实此时你登录入X会发现似乎跟以前没什么区别,不要着急,接下来我们要安装支持openGL特效的窗口管理器,有了这个我们才能看到真正的3D桌面。
我们需要的桌面管理器名字叫做compiz,这也是Novell的天才程序员发起的项目,然而不幸的是,这个项目现在有很多不同的派生版本,因为其作者只是在cvs发布源代码,而各个开发者又有不同的开发方向,造成了有多种不同的解决方案。我在少得可怜的资料中迷失了半天之后,最终决定还是去compiz.net看一看compiz究竟现在是怎样一个状态。大体查找了一下,发现现在使用最广泛,更新最快的是叫做quinn的所维护的一个包。于是按照说明加入它的源并开始update,完成后选择compiz安装,但发现源里面竟然缺失好几个依赖包,马上去论坛爬,发现已经有n多人反应,而更郁闷的是发现quinn和其他developer已经决定要fork一个新的项目叫做Beryl,以便于解决现在多人维护不同版本的compiz的现象,而这个项目目前的状态仅仅是coming soon,没主页,没sourceforge页面,连cvs都没有,而同时参加这些项目的现有开发者都停止提供了目前的compiz版本,包括quinn。这次彻底郁闷了,虽然统一项目是好事情,但我现在想要的只是一个可以运行的compiz。抱着最后的希望在论坛上找,希望有人还保留了以往的deb,找到几个却发现不能下载,于是从各个源开始update,官方or非官方,偶然发现官方的universe源竟然已经有compiz了,但遗憾的是也是quinn的版本,也同样缺失了cgwd等包。

正以为没戏了的时候,从ubuntuforum的论坛上发现有人提供了这样一个链接:

http://dev.realistanew.com/beryl/

上去看了一下发现貌似是beryl项目的Ubuntu Edgy的二进制deb包?运气也太好了吧?真的想要什么就有什么?!仔细看了一下包的名称,core,setting,plugin,manager都有,虽然没有文档,但基本确信这应该就是传说的beryl项目了,再看竟然nvidia-glx都有?还是9625的,早知有这个我还费劲装什么驱动阿!

把除了nv的包全部抓下来(我已经自行安装了驱动,也就不需要这个包了),dpkg -i .deb安装,顺利完成。

剩下的只有实验了,因为没有任何文档,只能自己抓瞎了。首先运行beryl,发现屏幕,所有窗口的边界消失,且不能移动和缩放了。但是此时用鼠标滚轮滚动发现我有了一个立方体桌面,4面都是单独的桌面窗口,和XGL一样!窃喜,有戏!继续研究,发现有个beryl-manager,运行之,tray栏跳出个红色立方体,点击发现有菜单切换窗口管理器,而且是2部分,beryl为window manager,还有一个window decorator,是emerald来管理,载入emerald后,窗口边界恢复,测试了一下,所有特效出来了,aplpa混合,扭曲变形,3d折边都有了,一点不弱于XGL,哈哈,至此AIGLX可以宣告安装成功。

剩下的就只有体验了,在这过程中发现存在一个beryl-start脚本,会自动启动整套beryl,将其放入start session则可以实现登录X自启动。AIGLX运行速度确实不反,并且稳定性相当好。
唯一发现的一个问题是beryl-settings无法启动,报错:

** ERROR **: no d_ for a_active_plugins
aborting…

不知道原因为何,也就无法设置具体可以有多少特效可用了。

总结一下,在nvidia卡Edgy系统安装AIGLX+beryl的最简单步骤应该如下:

1,升级Edgy到最新版本,确保包含xorg7.1
2,安装9625的nvidia-glx包。修改xorg.conf使用nvidia的驱动。
3,修改xorg.conf打开AIGLX支持。
4,安装beryl所有包。
5,beryl-start

所有包都可以从这里下载:

http://dev.realistanew.com/beryl/

现在最关键的问题是,我要如何才能精确得抓下这些动来动去的窗口的图片展示?

update:

发现直接可以用printscreen截图,比较方便,放上AIGLX截图。

alapha混合,半透明效果:

3D桌面,跨边缘显示:

 

还有那些窗口弹出和缩放效果很难抓到图,就懒得搞了。update:
真是时候,我刚装成功一天,compiz.net就正式更名为http://forum.beryl-project.org/,看来距离beryl的stable不远了。

update:
晚上把原来的包删除掉,装上mirror中的最新的svn编译出来的deb,发现前面的问题都没有了。beryl-manager也可以调出来了,终于可以随心所欲的调整特效了,看来离ghost in shell中那种梦幻般的界面不远了。

放图一张,水波纹特效,注意图中桌面的水其实是会动的!

 

  2 Responses to “我的3D桌面新体验:AIGLX+beryl(compiz) under Ubuntu (6.10)Edgy”

  1. 哈哈,不错不错,我也想装啊。
    看来linux在桌面上也大有前途啊。。。

  2. 测试一下comment,刚做了些细微调整。

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>