双屏显示贺新年

Posted: 一月 1st, 2008 | Author: windrose | Filed under: 文章 | Tags: , , | 4 Comments »

我的新主板技嘉GA-M68SM-S2上有D-Sub和DVI两个显示器接口,DVI已经接了新的22寸宽屏显示器,淘汰下来的15寸旧显示器正好可以接在D-Sub口上,试试双屏显示的效果。

动手之前当然是请教Google。搜索一番的结论是,办法不止一个,Xorg自己的Xinerama在很多显卡上通用,Nvidia显卡有自己的TwinView功能,MergedFB和BigDesktop则是专门针对ATI显卡的。考虑到我已经安装了NVidia的驱动,为了充分利用显卡的性能,看来还是TwinView比较适用。

接好两台显示器,启动电脑,结果发生了一件诡异的事情:PS2口的键盘失去了响应,换成USB键盘居然就可以了。这种情形和我最初安装Slackware的时候一样,但我搞不清楚这是主板的bug还是Slackware的bug。网上的教程都是直接修改 /etc/X11/xorg.conf 文件,依葫芦画瓢试了试,果然成功了,但是个别参数没设置好,显示的效果差强人意。后来发现还有更简单直观的办法,就是使用NVidia提供的nvidia-settings工具(在终端输入 nvidia-settings 命令启动),可以很方便地设置每个显示器的分辨率和两个屏幕的相对位置等参数,用起来和Windows的类似工具一样。设置好后选择将修改的内容自动添加到xorg.conf就行了。

看看我用手机拍下来的双屏显示效果吧。画面中显示了一个跨越两个屏幕的终端窗口,每个屏幕设置了单独的壁纸,桌面管理器用的是xfce。
twinview


设置最佳控制台分辨率

Posted: 十二月 14th, 2007 | Author: windrose | Filed under: 文章 | Tags: , | 2 Comments »

我的显示器是22寸LCD宽屏,最佳分辨率为1680×1050。在X Window中没有问题,但在控制台字符界面只用到1024×768,所有字符看起来都是扁扁的。尽管在控制台操作的机会不多,但是既然显示器有这样的能力,还是想尽量让它发挥一下。在网上搜索了一下,发现设置LCD字符界面的最佳分辨率是一个困扰了很多人的问题。

解决问题的关键在于显卡的BIOS之中是否预设了想要设置的显示模式。如果有,在启动时传递 vga=xxx 参数,内核就会调用vesafb模块将控制台设置成xxx所对应的模式,否则就只能用BIOS支持的其他模式代替。有一个叫做vbespy的小工具可以显示显卡BIOS支持的显示模式。下载vbespy的源代码,解开,用make命令编译。编译完成后,在vbespy的源码目录中会生成名为 vbetest 的可执行文件。用root身份运行之,下面是我的显卡显示出来的结果:

# ./vbetest 2>/dev/null
[256] 640×400 (256 color palette)
[257] 640×480 (256 color palette)
[259] 800×600 (256 color palette)
[261] 1024×768 (256 color palette)
[263] 1280×1024 (256 color palette)
[270] 320×200 (5:6:5)
[271] 320×200 (8:8:8)
[273] 640×480 (5:6:5)
[274] 640×480 (8:8:8)
[276] 800×600 (5:6:5)
[277] 800×600 (8:8:8)
[279] 1024×768 (5:6:5)
[280] 1024×768 (8:8:8)
[282] 1280×1024 (5:6:5)
[283] 1280×1024 (8:8:8)
[304] 320×200 (256 color palette)
[305] 320×400 (256 color palette)
[306] 320×400 (5:6:5)
[307] 320×400 (8:8:8)
[308] 320×240 (256 color palette)
[309] 320×240 (5:6:5)
[310] 320×240 (8:8:8)
[317] 640×400 (5:6:5)
[318] 640×400 (8:8:8)
[327] 1400×1050 (256 color palette)
[328] 1400×1050 (5:6:5)
Type a mode number, or ‘q’ to quit – q

方括号[]内是显示模式的数值,后面跟的是分辨率,最后()中是颜色数,5:6:6是64K色,8:8:8是1600万色。上面显示出来的结果,分辨率都是4:3,没有16:10的宽屏显示比例,所以我在字符界面使用最佳分辨率的愿望就此破灭。但是,从中我还是发现可以把控制台的分辨率设得更高一些,最高可以达到 1400×1050@64K色(最后一行)。要注意的是,从vbetest得到的显示模式数值还不能直接作为 vga=xxx 的xxx参数,必须在那个数值上加上512,所以设置1400×1050@64K色就应该用 vga=840 (328+512=840)才行。

设成1400×1050后,尽管屏幕上的字符显示还是有点扁,但起码在垂直方向上已经达到了显示器的最大分辨率,也算是得到一点安慰。


旧瓶新酒

Posted: 十一月 28th, 2007 | Author: windrose | Filed under: 文章 | Tags: , , | 1 Comment »

终于决定不再与家里那台台式机白头偕老,尽管它在Slackware驱动下勤勤恳恳地跑得正欢。这台机器的性能倒没有太多让我不满意的地方,让我兴起换机器的念头,主要是想换一台大屏幕的液晶显示器,而我担心那块古董级GF MX200显卡支持不来。在这台P3级别的机器上,单单换一块显卡显然不是一个好主意。一来AGP的显卡市场上几乎绝迹了,就算找得到价钱也不便宜。再则旧机器换上新显卡,实在太不般配。

一不做二不休,干脆全换。我对硬件的要求并不高,我不玩3D游戏,Windows也是可有可无的,但硬件应该对Linux比较友好。最终的选择是AMD双核64位4400+处理器,技嘉GA-M68SM-S2主板,再加上两条1G的DDRII 800内存组成双通道,另外还买了一个新电源。重头戏是LG的 L222WT 22寸宽屏液晶显示器,2000出头的价钱比前面那些零碎全部加在一起还贵。于是家里那台元老最终可用的只剩下一个80G硬盘、一个combo光驱、鼠标键盘、音箱和一个空空的机箱。

操作系统我选的是Slackware Linux 12.0,用自己刻录的光盘安装。安装过程总得来说比较顺利,但是也发生了一些诡异的事情。一开始,用PS2键盘,安装程序就死在选择键盘那里,换了个USB键盘才能继续下去,完成安装后换成PS2键盘却又没有问题。另一诡异之处是刚刚安装完的时候,网络是可用的,即系统自动设置了主板内置的rtl8211网卡,但再启动之后,网卡就找不到了。

网卡的问题让我费了点劲。Google了一下,网上关于nForce 630a芯片组主板设置的内容并不多,Yes论坛的一个帖子提到这块主板对Linux的支持,结论是没有问题,但我弄来弄去还是无法在系统中找到网卡。想来想去,还是升级内核。用了一个偷懒的办法,从slackware-current的下载处下了2.6.23.1版内核源码和编译hugesmp.s内核的config。然而,升级内核后问题还是没解决。最后,在Linuxquestions论坛的一个帖子里发现了端倪,删除了 /etc/udev/rules.d/75-network-devices.rules 之后,重新启动,网卡终于能用了。

显示驱动的安装就简单多了。从nvidia网站下载了最新的驱动程序,安装之后修改 /etc/X11/xorg.conf 文件,指定使用nvidia驱动,将分辨率直接设为1680×1050就可以了。

主板集成的声卡在系统安装时就被alsa自动识别了,只是第一次使用前要记得用alsamixer打开被mute的声道并调好音量,再用alsactl store 命令保存设置。

由于采用了SMP内核,系统在启动时会在屏幕顶端显示两只小企鹅,/proc/cpuinfo 中也有两个CPU的信息。图形性能当然也有很大的提高,运行glxgears,得分从老旧显卡的700多提高到了2000左右。在新显卡支持下,当然要试试3D的compiz桌面,这将是我下一篇文章的内容。


Fcitx走向新生

Posted: 七月 12th, 2007 | Author: windrose | Filed under: 文章 | Tags: , , | 1 Comment »

Fcitx 是运行在Linux中的一种中文输入法,开发者是Yuking。前天,Yuking在fcitx网站发帖,决定终止fcitx的开发

Fcitx是我最喜欢用的输入法,现在就在用。有一点可以让我拿出来显摆的是,其中的双拼功能是我极力鼓吹加入的,而且当初我也帮助进行了双拼的测试。与Yuking六年多的辛勤劳动比起来,我做的根本不值一提,之所以腆着脸说一下,是为了表达我对于Fcitx的感情。Linuxsir.org与Fcitx的渊源更为深厚,感兴趣的可以看看北南南北的回顾

Yuking终止Fcitx的开发,作为一个用户,我当然觉得惋惜。好事者在探究Yuking做出这个决定的原因,也有很多人充满正义感地揪出所谓的“祸首”,为Yuking打抱不平。据我了解的情况,被人喷一身口水只是Yuking停步的诱因,真正的原因我们无须那么八卦地去打听。实际上,Yuking萌生退意决不是近期的事情,早在三年前他已经表示了这种想法。尽管Yuking的放手让人不忍,但是作为一个用户,强人所难地让他坚持下去,不免有自私的嫌疑,所以我很赞同“感谢你的付出,尊重你的决定”这种态度。

讲起Fcitx的时候,常常免不了要提到另一个Linux输入法平台——SCIM。很多人容易把Fcitx和SCIM都当作输入法,但它们俩并不是同一类的东西。Fcitx是输入法的具体实现,其底层的结构是XIM,而SCIM的目标是对输入法功能进行抽象并构建一个新的输入法开发框架,输入法的具体实现并不是SCIM关心的问题。尽管如此,从项目开发的角度把这两个项目进行一下比较还是能给我们一些启示。

首先,开发者的背景不同。Yuking是业余程序员,编程出于爱好;SCIM的发起者苏哲是专业程序员,几年来一直在不同公司从事开源软件的开发工作。我不懂代码,但是从两个人不同的背景上,我可以理解一些人对于Fcitx代码质量的批评。在一个群体合作的基础上编码,要更多地考虑程序的规范性、可维护性,但如果是一个人的话,也许编码会更自由、更加信马由缰,带来的问题自然是缺乏严谨性、他人接手维护困难。

再者,项目的目标不同。Fcitx的目标很简单,就是为了解决Linux系统的中文输入问题,所以功能设置上非常贴近用户的需要,在输入法的具体实现上也做得很好。SCIM的目标则远大得多,它是想成为一个平台,以此为基础容纳其他各种输入法,并减少输入法开发的难度。简单地说,Fcitx只是针对中文用户,所以在配置文件中用中文变量名并不见得是个缺点。而SCIM针对的是全球用户,无论是韩文、日文还是其他文字,只要有对英文键盘输入进行转换的需要,就能在SCIM的基础上开发出对应的输入法模块。

第三,开发团队不同。Fcitx到目前为止,可以算是一个人的项目,尽管也有一些热心人贡献了一些代码,但主要还是Yuking一个人在独力支撑。这种状况与我最喜欢的Slackware倒是有点相似。SCIM则一直面向国际开源社区,尽管一开始是苏哲做的开创工作,但现在已经形成了一个国际化的开发团队。我用Slackware最担心Patrick哪一天撂挑子不干,Debian用户则绝对不会有这种担心,Fcitx与SCIM也可作如是观。

主要由于以上后两点的不同,两个项目的传播范围也大相径庭。Fcitx仍然主要由中文用户自己下载安装,而SCIM已经被整合进主要的发行版之中,走向了世界。当然,由于目标用户不同,在覆盖面上进行比较对Fcitx并不公平,但至少可以帮助我们看出一个开源项目被国际社区接受的一些必要条件。

令人欣慰的是,已经有热心人开始接手Fcitx的准备,对于广大喜爱Fcitx的用户来说无疑是个福音。但是,Fcitx从一个人的项目变成社区合作的项目,一定有许多需要克服的障碍,需要深入细致、点滴入微的工夫,并不是靠一时的热情就可以支撑下去的。尽管看起来像是兜头的一盆冷水,但我其实是希望上面的分析能对后来者有所帮助,希望大家共同认真思考一下如何让Fcitx更加顺畅地融入开源社区。祝Fcitx在开源社区更广泛的合作之下如浴火凤凰般重新展翅翱翔。


Slackware 12 初体验

Posted: 七月 9th, 2007 | Author: windrose | Filed under: 文章 | Tags: , | No Comments »

趁周末有空,在Dell 700m笔记本电脑上安装了Slackware 12.0。尽管是两年多前买的机器,但是装上新鲜出炉的Slackware,运行起来仍然毫无滞涩。相比于微软的Windows,Linux对于硬件的要求确实没有那么贪得无厌,这恐怕也是硬件厂商明里暗里不喜欢Linux的一个重要原因。

安装程序仍然是十多年如一日的文本界面,简单、高效,但新手可能不太容易接受。启动管理仍然特立独行地使用lilo,恰好我对于现在近乎一统天下的grub也还是一窍不通。安装过程没有什么特别之处,很顺利、速度也很快。当安装完成后,我用root启动X的时候没有成功,但是用之前配置好的一个普通用户就顺利地进入了X。在X Window系统里,发现两个问题,一个是鼠标滚轮不起作用,另一个是没有设置好屏幕的刷新率和分辨率(1280×800的宽屏被设成了1024×768)。两个问题都很容易解决,修改xorg.conf,将鼠标协议改成imps2,调整刷新率上限为60Hz,直接将分辨率设成1280×800。比起以前的设置方式以及专门打针对宽屏的补丁,无疑现在简单多了,由此可见X的进步。

无线网络的设置也不难,因为内核已经集成了intel ipw2200的驱动。但是intel的firmware由于许可证的原因,需要自己下载安装。在设置无线网络的WPA认证时走了点弯路,结果证明是我自己想当然地用了以往的经验,没有跟上形势变化。新的内核里面还有针对Texas Instrument的SD/MMC读卡器的驱动,尝试之后,成功了一半:系统能够发现插卡、拔卡的动作,但不能读写卡的内容。

总的来说,Slackware 12在内核和软件的更新上确实有了很大的变化,但KISS的特色还是一如既往,很容易打造一个适合自己要求的系统。目前让我最不满意的地方是checkinstall程序由于兼容性的原因暂时取消了,在我编译安装一些软件时甚感不便。