我的新主板技嘉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。
站着说话
双屏显示贺新年
设置最佳控制台分辨率
我的显示器是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 [...]