<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阿当正传 &#187; Dual Monitor</title>
	<atom:link href="http://www.adamjiang.com/archives/tag/dual-monitor/feed" rel="self" type="application/rss+xml" />
	<link>http://www.adamjiang.com</link>
	<description>长脑袋的个人博客</description>
	<lastBuildDate>Tue, 15 May 2012 16:53:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>配置Ubuntu Jaunty和双显示器一起工作</title>
		<link>http://www.adamjiang.com/archives/643</link>
		<comments>http://www.adamjiang.com/archives/643#comments</comments>
		<pubDate>Sat, 18 Jul 2009 10:18:56 +0000</pubDate>
		<dc:creator>jcadam</dc:creator>
				<category><![CDATA[Linux tips]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Dual Monitor]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[GFX]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.adamjiang.com/?p=643</guid>
		<description><![CDATA[OK. 这一篇的主旨只是为了记录我解决问题的过程。 关闭FrameBuffer设备 上周星期五，我以一千元人民币的价格淘到了垂涎已久的22存高清显示器。今天早晨送到家里，我自然是兴奋不已的打开看了。Ubuntu Jaunty启动之后可以很顺利的识别外接显示器，但是外接显示器的分辨率却不正确。使用xrandr查看，发现整个设备的大小受到限制。Thinkpad X61的spec上写的很清楚，整个图形卡的最大可表现区域是因该是外接显示器于笔记本固有显示器面积的总和，也就是2944&#215;1080。使用xrandr -q查看，发现这个最大值并没有被正确设置。less /etx/X11/xorg.conf看到，配置文件中启用了FrameBuffer设备。立即恍然大悟。原来，早些日子，我在控制台上工作的时候，启用了FrameBuffer来获得更大的显示区域。为了支持这个控制台显示区域，X服务器只能割让一部分显示存储给FrameBuffer设备。要修改回来就是在内核参数行去掉vga=791选项——这个选项代表1024&#215;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 [...]]]></description>
			<content:encoded><![CDATA[<p>OK. 这一篇的主旨只是为了记录我解决问题的过程。</p>
<h3>关闭FrameBuffer设备</h3>
<p>上周星期五，我以一千元人民币的价格淘到了垂涎已久的22存高清显示器。今天早晨送到家里，我自然是兴奋不已的打开看了。Ubuntu Jaunty启动之后可以很顺利的识别外接显示器，但是外接显示器的分辨率却不正确。使用xrandr查看，发现整个设备的大小受到限制。<a href="http://www-06.ibm.com/jp/pc/notebooks/thinkpad/x-series/x61_lineup_4x.shtml">Thinkpad X61的spec</a>上写的很清楚，整个图形卡的最大可表现区域是因该是外接显示器于笔记本固有显示器面积的总和，也就是2944&#215;1080。使用<code>xrandr -q</code>查看，发现这个最大值并没有被正确设置。<code>less /etx/X11/xorg.conf</code>看到，配置文件中启用了FrameBuffer设备。立即恍然大悟。原来，早些日子，我在控制台上工作的时候，启用了FrameBuffer来获得更大的显示区域。为了支持这个控制台显示区域，X服务器只能割让一部分显示存储给FrameBuffer设备。要修改回来就是在内核参数行去掉vga=791选项——这个选项代表1024&#215;768的FrameBuffer能力。并且，重新启动机器之后，利用<code>sudo dpkg-reconfigure -phigh xserver-xorg</code>来重新配制xserver。因为，从Ubuntu 8.10版本开始，这个发行版中启用了新的xserver，所以，大部分配置可以由xserver自动完成，不需要再手动更改xorg.conf配置文件了。重启xserver之后，我再用<code>xrandr -q</code>查看了设备能力，输入如下。这是保证双显示器expand输出的前提条件。</p>
<pre>
$ 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
</pre>
<h3>配置双显示器expand表示</h3>
<p>利用<code>gnome-display-properties</code>，我可以在这里动态的设置双显示的规格。有图为证。<br />
<img src="http://lh4.ggpht.com/_O-FwCW3mN_w/SmGe5HBeVuI/AAAAAAAAEQo/8pbjHGx86HM/gnome-display-properties.png" /><br />
如果这个方法受限，那么还有一个后背方案，就是采用<a href="http://intellinuxgraphics.org/dualhead.html">Intel显卡驱动官方站的指南</a>，采用xrandr来手动配置。</p>
<h3>更新Mesa</h3>
<p>设置双显示expand之后，我发现小显示器的一部分不能正确更新。初次看到这个现象的时候，我开始怀疑是不是设备能力有限，不能支持这么大的屏幕显示区域。但是仔细计算了一下，这种情况应该是不可能发生的。我的图形卡支持的最大输出是2944&#215;1080，那么宽度上1920+1024不会超过这个2944，而长度来看768小于1080。那问题出在哪里呢？我尝试关闭了“桌面效果”，也就是启用metacity来取代compiz做窗口管理器。我发现这样的话两个屏幕都是可以被正确更新的。立刻想到问题应该处在3D表示的驱动上面。也就是作为3D表示基础库的Mesa有问题。找到关键词就很容易搜索了，google之。立刻发现这个问题是出现在<a href="https://bugs.freedesktop.org/show_bug.cgi?id=18100">mesa-7.4版本之中的bug</a>。而这个bug已经被修复了。这个时候，我想是不是可以拿到mesa的源代码，然后给它打上补丁后重新package。于是立刻行动，我用<code>apt-get source libgl1-mesa-dev libgl1-mesa-dri</code>那到mesa的源代码，照猫画虎的打补丁。转念一下，这个问题应该已经有很多人遇到了，因为Jaunty发布已经有近4个月的时间，不会只有我遇到这个问题。于是乎，我在launchpad上搜索一下，发现果然有<a href="https://launchpad.net/~xorg-edgers/+archive/ppa">新版本的mesa</a>可以使用。因为这个PPA提供的是unstable版本软件包，所以该PPA的作者声明拒绝外部资源直接给出该PPA的使用方法用来保证每个用户都可以读到警告信息。这里就不再说到底怎么使用了。如果你想在Ubuntu中使用fresh的xorg相关软件包，那么直接点下面的连接跳转过去看看吧。<br />
<a href="https://launchpad.net/~xorg-edgers/+archive/ppa">https://launchpad.net/~xorg-edgers/+archive/ppa</a></p>
<p>经过以上步骤的折腾之后，我的Ubuntu就可以使用双显示器正常工作了。写代码的时候再也不需要挤在那个1024&#215;768的显示器上用Alt+Tab换来换去了。还有就是玩企鹅滑冰有些就更爽了。（话外音：真浪费）同学，我听见了，虽然这个安装过程还是遇到问题多多，但是谁让俺自己愿意折腾呢？由此可证，所有的GNU/Linux用户都是那“吃饱了没事撑着”的某些人。</p>
<p>&#8211;<br />
参考URL：<br />
<a href="http://lists.freedesktop.org/archives/xorg/2008-April/034707.html">http://lists.freedesktop.org/archives/xorg/2008-April/034707.html</a><br />
<a href="http://www.thinkwiki.org/wiki/Xorg_RandR_1.2#Summing_up">http://www.thinkwiki.org/wiki/Xorg_RandR_1.2#Summing_up</a><br />
<a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/146298">https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/146298</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamjiang.com/archives/643/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

