热棒

2006年5月22日

今年年初,我做了很多旅行,所以我的写作完全停滞了。几周前我回到家,希望能完成很多写作。我确实写了一些,但总是有事情把我拉走:手术移除事故中的钉子,被洪水淹没。但最大的生产力杀手是自我造成的——买了一台新电脑。

美丽的计划

我以前用的电脑是一台运行Ubuntu的台式机,一台戴尔D600公司电脑运行Windows,还有一台PowerMac。由于D600太笨重,我很少带着它旅行,而是依赖Mac。所有这些设备都大约两岁了,这是我换新东西的临界点。Thoughtworks用一台非常棒的戴尔X1(小巧,只有2.5磅重)替换了D600,它将取代Mac用于旅行。(我喜欢Mac,但5磅太重了。)所以,我需要弄清楚如何处理台式机。

我非常喜欢自己组装台式机,这样我就可以选择并确切地知道里面有什么。这样做的问题是,要确切地知道哪些组件组合在一起效果最好。事实证明,我经常阅读Ars Technica,他们定期发布系统指南,提供方便的配置。所以我决定遵循他们的2006年4月指南,并构建"HotRod"

实际上,我没有完全按照热棒的配置来做。Ars指南倾向于关注游戏玩家,而我不玩电脑游戏。所以我决定在视频输出方面降级,选择了ATI X800GTO,这是他们为预算机型选择的显卡。我也没有费心去弄声音,只是依靠主板上的声音——音乐由Squeezebox处理。我确实升级了硬盘,添加了他们建议的10,000rpm WD Raptor。

当我买一台新的台式机时,我通常不会买新的显示器——因为显示器的寿命比电脑长得多。然而,现在是时候换新的了。我最喜欢的回答“如何提高我们的开发效率”之一是告诉他们买比他们认为需要的更大的显示器。屏幕空间对生产力有很大的影响,无论你是编程还是写作。我以前用的21英寸CRT显示器曾经很好,但现在我想要更多。所以我选择了两个三星SyncMaster 204B 20英寸LCD显示器。

这种新的设置,特别是双头显示,意味着另一个问题——如何让多个操作系统共存。我以前用KVM切换器连接旧的台式机和D600。这很有效,因为我可以根据需要轻松地在Ubuntu和Windows之间切换。双头显示的KVM切换听起来很乱。然而,听了我们伦敦办公室的人们对虚拟化的赞美,我决定选择另一个方案。他们的观点是,最好让Linux作为主机,让Windows在虚拟机中运行。这很适合我,因为我更喜欢Linux的虚拟桌面功能。(Windows在其PowerToys中有一个虚拟桌面管理器,值得拥有,但不如大多数X窗口管理器好。)

残酷的现实

所以这就是计划——下一个问题是,事情进展如何(以防其他人也喜欢类似的东西)。

将硬件组装在一起很容易——只花了我几个小时。我使用一个Live Linux CD(Damn Small Linux,因为它最接近)启动,一切似乎都正常工作。

我的第一步是在一个分区上安装Windows。尽管我打算在虚拟机中运行Windows,但我并不确定这个想法是否最适合我——也许有一天我会想做一些需要高级图形的东西。这并不完全直接,因为网络和视频在直接安装时无法正常工作——但这很容易通过添加主板(网络)和视频的驱动程序来解决。

Windows通常在视频方面可以正常工作,所以这张卡需要额外的工作让我担心——因为X可能更难看。当我安装并尝试启动Ubuntu Breezy时,这一点得到了证实——X无法启动。这是我对Unix桌面的噩梦——配置X是你可以经历的最糟糕的安装体验之一。即使你使用“用户友好”的X安装程序,它也会继续问你“你想进行加密蓝色协方差自适应吗?”(或者对我来说同样有意义的东西),我必须猜测答案,并希望我的笨拙不会烧毁我的新昂贵的显示器。

谷歌是这里唯一的解决方案,最终我找到了这个Ubuntu维基页面,它告诉我安装一些额外的软件包。好吧,在Ubuntu中安装软件包非常容易。

sudo apt-get install xorg-driver-fglrx
sudo dpkg-reconfigure xserver-xorg

我祈祷着,除了选择fglrx之外,我选择了所有建议的默认选项,因为网页告诉我。X仍然无法启动,但网页告诉我错误(重复符号rol_long')以及如何修复它。我按照说明操作,X启动了。(然而,它还不完全正确。运行fglrxinfo告诉我它没有使用正确的驱动程序来获得加速的3D——但对我来说没关系,我主要是在2D世界中。)

或者更准确地说,它启动了一半。我用一个显示器完成了所有这些操作——我喜欢一次做一件事。同样,我需要谷歌搜索才能找到该怎么做——没有像Windows那样友好的控制面板(更不用说我在十多年前运行双头的Mac了)。

首先要决定使用哪种双头显示。X长期以来一直能够运行多个显示器——但与Windows/Mac的方式不同。经典的X方式是在每个显示器上拥有独立的X会话。这样做的问题是,它们是完全独立的,你不能将窗口从一个显示器拖到另一个显示器。此外,在两个显示器上运行的任何程序都必须运行独立的实例(这意味着不同的firefox配置文件等)。然而,这种方法的优点是,你为每个显示器获得了独立的虚拟桌面。总而言之,我决定对经典的X感到满意(目前),另一种选择是使用Xinerama,但我以后再研究它。

我尝试使用fglrx-control设置双显示器。不行——我可以设置双头显示,但每次都会忘记。最后,fglrxconfig帮助我完成了这个任务。

下一步是尝试VMWare。我从网站上下载了VMWare Server(目前是免费的测试版——如果我喜欢它,我会在发布时付费)。它并不容易启动——在这样的时刻,我真的很怀念apt。我运行了安装程序脚本,它遇到了依赖项问题。我需要以下内容:

sudo apt-get install make
sudo apt-get install gcc-3.4
sudo apt-get install linux-headers-amd64-generic

一旦我做完这些,VMWare就安装好了。我安装了Windows、Visual Studio、Visio和其他一些东西。一切似乎都运行良好。

然而,主机上并非一切顺利。我会愉快地工作几个小时,然后突然我的主显示器(X中的屏幕0)会变黑。显示器完全失去了信号。我最终意识到我可以通过输入ctrl-alt-f5来获得虚拟控制台,它会出现在两个屏幕上,然后输入ctrl-alt-f7返回X来恢复。很烦人。但当我输入ctrl-alt-f5,两个显示器都失去了信号时,真的很糟糕。这让我卡住了——即使从另一台机器登录并重新启动X也无法恢复它们——我必须重启。

我忍受了一段时间,但它变得太烦人了。所以我决定也许我应该升级到Dapper Drake。Dapper是Ubuntu的下一个版本,仍然处于测试阶段,但据说非常稳定。也许这会有所帮助,如果没有其他帮助,它将允许我使用apt安装Java。

安装非常顺利。

gksudo "update-manager -d"

我很快意识到,升级给了我正确的ATI驱动程序。(我一直想知道视频驱动程序是否是问题的一部分。)我还得到了难看的橙色图标和升级后的firefox。坏消息是我遇到了其他一些问题。

最糟糕的是xemacs停止工作——这很重要,因为我经常使用它。问题是与查找颜色有关——请参阅这个讨论主题以获取更多信息以及我如何解决它。

另一个问题仍然存在——机器无法关机。如果我尝试关机(通过任何方式),屏幕会变黑,关机声音会戛然而止,一切都卡住了。我必须拔掉电源才能关机。

好消息是我自从安装Dapper以来,没有再遇到过黑屏问题。

这一切都值得吗?

我必须承认,在处理emacs故障和该死的机器无法干净重启的过程中,我开始怀疑我是否应该直接买一台Mac。我确实发现,与Windows或Linux机器相比,我在Mac上浪费的时间少得多。就在我写这篇文章的时候,Parallels发布了Mac的虚拟化环境。然而,既然我已经有了它,我想让它工作。事后看来,我认为我可能犯了两个错误:一开始安装了Breezy而不是Dapper,以及运行amd 64架构(而不是i386)。虽然Dapper有它的缺点,但看起来安装它会更好地解决视频驱动程序问题;这意味着我会花更少的时间试图让X工作。我还可能因为amd64代码而不是i386代码而遇到了一些问题。(一个问题是我无法启动Flash VM——他们还没有为Linux on amd64制作一个。)

当然,我并不知道它们是否是错误,因为我可能在其他问题上花费了同样多的时间。当然,无法干净重启会(并且确实)给我带来无尽的痛苦。

我应该切换到Windows作为主机吗?这是一个诱人的想法——如果我无法修复emacs,我可能会这样做。我确实喜欢在Ubuntu上安装软件的便捷性,虚拟桌面管理非常方便。过去,我在Windows中也经历过很多痛苦的日子。总而言之,这是一个艰难的决定,但我们拭目以待。我确实喜欢在VMWare镜像中拥有Windows。即使我不得不切换到另一个Linux安装,我也可以将安装了所有内容的VMWare镜像带到新机器上。在Windows上安装软件是一个保证会浪费大量时间的任务——即使是免费下载也必须单独访问和下载。话虽如此,我还没有在Visual Studio中花费太多时间——这将是对虚拟化的真正考验。

更新(6月16日)

很多人建议进行干净的Dapper安装会比从Breezy升级更好。这周我从中国回来;在我离开的时候,Dapper发布了。更新我的系统仍然不允许我干净地关机,所以我下载了最终的Dapper CD,看看它们是否有效。结果并不令人鼓舞。AMD 64和i386 CD都无法在默认启动时启动到X。如果我尝试在AMD 64中使用安全图形模式,我会听到gnome出现,但我的屏幕是空白的。我确实在安全图形模式下使用i386 CD获得了一个工作系统(在一个屏幕上)。在Ubuntu论坛上有很多关于ATI显卡无法正常工作的讨论。

目前我的感觉是,我的设置对于 Ubuntu 来说并不理想,但至少是能用的。自从 Dapper 更新后,我工作时屏幕变黑的问题已经消失了,所以现在唯一的问题就是无法干净地关机。目前我可以忍受这个情况——我不想花更多时间去折腾它。不过我不会向其他人推荐我的设置。