配置Ubuntu Jaunty和双显示器一起工作

OK. 这一篇的主旨只是为了记录我解决问题的过程。

关闭FrameBuffer设备

上周星期五,我以一千元人民币的价格淘到了垂涎已久的22存高清显示器。今天早晨送到家里,我自然是兴奋不已的打开看了。Ubuntu Jaunty启动之后可以很顺利的识别外接显示器,但是外接显示器的分辨率却不正确。使用xrandr查看,发现整个设备的大小受到限制。Thinkpad X61的spec上写的很清楚,整个图形卡的最大可表现区域是因该是外接显示器于笔记本固有显示器面积的总和,也就是2944×1080。使用xrandr -q查看,发现这个最大值并没有被正确设置。less /etx/X11/xorg.conf看到,配置文件中启用了FrameBuffer设备。立即恍然大悟。原来,早些日子,我在控制台上工作的时候,启用了FrameBuffer来获得更大的显示区域。为了支持这个控制台显示区域,X服务器只能割让一部分显示存储给FrameBuffer设备。要修改回来就是在内核参数行去掉vga=791选项——这个选项代表1024×768的FrameBuffer能力。并且,重新启动机器之后,利用sudo dpkg-reconfigure -phigh xserver-xorg来重新配制xserver。因为,从Ubuntu 8.10版本开始,这个发行版中启用了新的xserver,所以,大部分配置可以由xserver自动完成,不需要再手动更改xorg.conf配置文件了。重启xserver之后,我再用xrandr -q查看了设备能力,输入如下。这是保证双显示器expand输出的前提条件。

$ xrandr -q
Screen 0: minimum 320 x 200, current 2944 x 1080, maximum 4096 x 4096
VGA connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0*+
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.0     60.0  
   800x600        75.0     60.3  
   640x480        75.0     59.9  
   720x400        70.1  
LVDS connected 1024x768+1920+0 (normal left inverted right x axis y axis) 246mm x 185mm
   1024x768       50.0 +   85.0*    75.0     70.1     60.0     40.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  

配置双显示器expand表示

利用gnome-display-properties,我可以在这里动态的设置双显示的规格。有图为证。

如果这个方法受限,那么还有一个后背方案,就是采用Intel显卡驱动官方站的指南,采用xrandr来手动配置。

更新Mesa

设置双显示expand之后,我发现小显示器的一部分不能正确更新。初次看到这个现象的时候,我开始怀疑是不是设备能力有限,不能支持这么大的屏幕显示区域。但是仔细计算了一下,这种情况应该是不可能发生的。我的图形卡支持的最大输出是2944×1080,那么宽度上1920+1024不会超过这个2944,而长度来看768小于1080。那问题出在哪里呢?我尝试关闭了“桌面效果”,也就是启用metacity来取代compiz做窗口管理器。我发现这样的话两个屏幕都是可以被正确更新的。立刻想到问题应该处在3D表示的驱动上面。也就是作为3D表示基础库的Mesa有问题。找到关键词就很容易搜索了,google之。立刻发现这个问题是出现在mesa-7.4版本之中的bug。而这个bug已经被修复了。这个时候,我想是不是可以拿到mesa的源代码,然后给它打上补丁后重新package。于是立刻行动,我用apt-get source libgl1-mesa-dev libgl1-mesa-dri那到mesa的源代码,照猫画虎的打补丁。转念一下,这个问题应该已经有很多人遇到了,因为Jaunty发布已经有近4个月的时间,不会只有我遇到这个问题。于是乎,我在launchpad上搜索一下,发现果然有新版本的mesa可以使用。因为这个PPA提供的是unstable版本软件包,所以该PPA的作者声明拒绝外部资源直接给出该PPA的使用方法用来保证每个用户都可以读到警告信息。这里就不再说到底怎么使用了。如果你想在Ubuntu中使用fresh的xorg相关软件包,那么直接点下面的连接跳转过去看看吧。
https://launchpad.net/~xorg-edgers/+archive/ppa

经过以上步骤的折腾之后,我的Ubuntu就可以使用双显示器正常工作了。写代码的时候再也不需要挤在那个1024×768的显示器上用Alt+Tab换来换去了。还有就是玩企鹅滑冰有些就更爽了。(话外音:真浪费)同学,我听见了,虽然这个安装过程还是遇到问题多多,但是谁让俺自己愿意折腾呢?由此可证,所有的GNU/Linux用户都是那“吃饱了没事撑着”的某些人。


参考URL:
http://lists.freedesktop.org/archives/xorg/2008-April/034707.html
http://www.thinkwiki.org/wiki/Xorg_RandR_1.2#Summing_up
https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/146298

Ubuntu9.04中Intel图形芯片组上启用图形效果

Ubuntu9.04已经发布有1个月左右了,发布当天我就找了USB盘来更新了在Thinkpad X61上的Ubuntu 8.04。但是,因为这个版本中Ubuntu决定升级到新的X Server,而Intel的X驱动并没有适时的进行更新,在新的X server中Intel驱动存在Bug。这就使很多笔电用户无法享受到眩目的桌面图形效果。Ubuntu9.04的Release Note中说明了已知存在的问题并且将使用Intel图形芯片的桌面屏蔽了Compiz功能。昨天查看LaunchPad上的Bug更新状态,发现这个Bug已经被修复了,于是兴冲冲的升级相关软件包之后启用Compiz,可仍然只得到了启用失败的提示。原因是Compiz在启动时仍然使用了禁用设置。这里仍然需要一点小小的调整才能启用桌面效果。

首先,保证你的Ubuntu 9.04在最新状态。

$ sudo apt-get update
$ sudo apt-get upgrade

接着,命令Compiz启动时的错误检查跳过去

mkdir -p ~/.config/compiz/ && echo SKIP_CHECKS=yes
>> ~/.config/compiz/compiz-manager

最后在”系统”->”外观设置”->”桌面效果”中启用Compiz就可以了。

这时如果你用glxgear测试图形性能的话会得到一个比较奇怪的结果,那就是图形的FPS只有700左右。这个值远远小于能够运行3D加速功能的预期值。Ubuntu8.04中,我在同样的机器上得到的FPS测试结果在1500左右,仅仅看数值的话感觉性能降低到了原来的一半。但实际使用的感觉确是,你的桌面效果运行良好。

前几天有为朋友在ML中回复我,他说需要将Ubuntu9.04发布的内核2.6.28升级到2.6.30-r3才能得到比较高的FPS值,这种情况下才可以启用Compiz。但事实并非如此,理由是glxgear测试得到的值并非真正的3D性能标识,这个测试应用成功只是表示了一个2D的图形并且不断的互换,通过统计这种互换在一秒钟之内发生的次数而得到一个相对的性能指标。也就是说glxgear并没有真正的测试到显示芯片的3D加速功能。那把它作为3D性能的标准就无从谈起了。那么应当用什么来测试Linux的3D性能呢?!Here comes Extreme TUX RACER!!!