一、适用条件:
用单独的两块显卡来实现双屏显示,像ATI、nVidia和Matrox的双头显示技术,可以用显卡本身的驱动来解决,具体的操作,在各个驱动的man上都有。但是,有些显卡也可以按照本文的说明来做,前提是把同一个显卡的device节写两遍。
二、硬件准备
两个显卡,前提是你的机器必须可以安装上。典型的配置为:一个AGP,一个PCI或两个PCI。如果机器上有自带的硬显卡,也可以再加上一个AGP,实现两个AGP。(很多服务器主板上都带Rage XL,这个就可以实现两个AGP的显卡。)
据说965G以上的主板自带的显卡也可以实现双显卡,由于没有条件测试,不知道具体结果。但是,945G以下的自带显卡不能用再加一块显卡的方法实现双显卡。因为一旦检测到主板上接有显卡,整合的显卡会被自动屏蔽掉。现在有很多显卡带VGA和DVI输出,可以用一个DVI-VGA的转换器来实现双屏显示。
三、双显示器的三种模式
双显示器有三种基本的显示模式,虽然有很多资料把它说为是两种,但是我觉得把它分为三种更好接受一些。
1、独立模式:两个显示器独立,互不影响。也就是说,一个显示器上的窗口,不可以移动到另一个显示器上去。
2、扩展模式:两个显示器扩展为一个大的显示器。一个窗口,可以移动或扩展到另一台显示器上去。windows中叫做“扩展桌面”。
3、克隆模式:两个显示器上的内容完全一致。如果用来做演示,那么通常就是用的这种模式,一个用来接投影机,一个用来本地显示,供演讲者使用。
四、实现原理
对于独立模式和克隆模式,在xorg.conf里面,配置两个显卡,两个屏幕即可;对于扩展模式,还要加上一个“Xinerama”的选项。
五、配置实例
以下配置实例的硬件:一个主板自带的Rage XL和一个Geforce 440 64M显卡,加上两个Philips 107s6显示器。
1、独立模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "Module"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "record"
Load "xtrap"
Load "freetype"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psm0"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Card0"
Driver "ati"
VendorName "ATI"
BoardName "Rage XL"
ChipSet "ati"
ChipId 0x4752
ChipRev 0x27
BusID "PCI:0:13:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nv"
VendorName "nVidia Corporation"
BoardName "NV11 [GeForce2 MX/MX 400]"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
要点:
1、在配置文件里,要配置两个device,两个Monitor,两个Screen。
2、在ServerLayout节中,需要说明两个显示器之间的关系,用
Screen 1 "Screen1" LeftOf "Screen0"
来说明,在本例中,第二个显示器在第一个显示器左边。
2、扩展模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "Xinerama" "true"
EndSection
说明:1)为了减少篇幅,只写改变的节。
2)桌面扩展是用“Xinerama”扩展来实现的,这个扩展不需要单独安装,是xorg自带的一个模块。
3)扩展桌面的操作中,程序默认打开的显示器在最左边的显示器上,即使你把第二个显示器设置为左边的显示器。
4)扩展桌面中,第二个显示器没有任务栏。
3、克隆模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
# Screen 1 "Screen1" LeftOf "Screen0"
Screen 1 "Screen1" Relative "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
说明:1)为了独立模式比较,保留了独立模式的配置,并把它置为注释。
2)在xorg.conf的man里面,没有提到Clone模式,但是,你以把第二个显示器的像素值和第一个显示器的像素值设置得一样,这样就可以达到Clone的效果。
3)Relative后面的数字,实际上你可以根据显示器的不同,来自行设置上下左右。还可以设置为不整屏,比如:768,200。
六、几个没解决的问题:
1)独立模式中,第二个屏幕的桌面语言一直为英文。但是菜单和其它的都可以显示汉字。
2)独立模式中,任务栏大小设置之后,要重启kde后才起作用。
3)扩展模式中,任务栏没法向左收起。
4)双屏设置,包括三种模式,有时候会搞乱locale设置。本人做的时候,最好没办法,只好把主目录下的.kde全删除掉,又重新配置的字体等。
5)在扩展模式中,最大化窗口只能最大化到一个显示器。但是,即使最大化的窗口,也可以拖到另一个显示器。
注:在G400系列的双头显卡中,可以配置到最大化到两个显示器。其它的显卡不详。
七、总结:
其实在FreeBSD中,除了不支持的ATI等显卡之外,配置双屏还是比较轻松的。bl
用单独的两块显卡来实现双屏显示,像ATI、nVidia和Matrox的双头显示技术,可以用显卡本身的驱动来解决,具体的操作,在各个驱动的man上都有。但是,有些显卡也可以按照本文的说明来做,前提是把同一个显卡的device节写两遍。
二、硬件准备
两个显卡,前提是你的机器必须可以安装上。典型的配置为:一个AGP,一个PCI或两个PCI。如果机器上有自带的硬显卡,也可以再加上一个AGP,实现两个AGP。(很多服务器主板上都带Rage XL,这个就可以实现两个AGP的显卡。)
据说965G以上的主板自带的显卡也可以实现双显卡,由于没有条件测试,不知道具体结果。但是,945G以下的自带显卡不能用再加一块显卡的方法实现双显卡。因为一旦检测到主板上接有显卡,整合的显卡会被自动屏蔽掉。现在有很多显卡带VGA和DVI输出,可以用一个DVI-VGA的转换器来实现双屏显示。
三、双显示器的三种模式
双显示器有三种基本的显示模式,虽然有很多资料把它说为是两种,但是我觉得把它分为三种更好接受一些。
1、独立模式:两个显示器独立,互不影响。也就是说,一个显示器上的窗口,不可以移动到另一个显示器上去。
2、扩展模式:两个显示器扩展为一个大的显示器。一个窗口,可以移动或扩展到另一台显示器上去。windows中叫做“扩展桌面”。
3、克隆模式:两个显示器上的内容完全一致。如果用来做演示,那么通常就是用的这种模式,一个用来接投影机,一个用来本地显示,供演讲者使用。
四、实现原理
对于独立模式和克隆模式,在xorg.conf里面,配置两个显卡,两个屏幕即可;对于扩展模式,还要加上一个“Xinerama”的选项。
五、配置实例
以下配置实例的硬件:一个主板自带的Rage XL和一个Geforce 440 64M显卡,加上两个Philips 107s6显示器。
1、独立模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "Module"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "record"
Load "xtrap"
Load "freetype"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psm0"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Card0"
Driver "ati"
VendorName "ATI"
BoardName "Rage XL"
ChipSet "ati"
ChipId 0x4752
ChipRev 0x27
BusID "PCI:0:13:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nv"
VendorName "nVidia Corporation"
BoardName "NV11 [GeForce2 MX/MX 400]"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
要点:
1、在配置文件里,要配置两个device,两个Monitor,两个Screen。
2、在ServerLayout节中,需要说明两个显示器之间的关系,用
Screen 1 "Screen1" LeftOf "Screen0"
来说明,在本例中,第二个显示器在第一个显示器左边。
2、扩展模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "Xinerama" "true"
EndSection
说明:1)为了减少篇幅,只写改变的节。
2)桌面扩展是用“Xinerama”扩展来实现的,这个扩展不需要单独安装,是xorg自带的一个模块。
3)扩展桌面的操作中,程序默认打开的显示器在最左边的显示器上,即使你把第二个显示器设置为左边的显示器。
4)扩展桌面中,第二个显示器没有任务栏。
3、克隆模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
# Screen 1 "Screen1" LeftOf "Screen0"
Screen 1 "Screen1" Relative "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
说明:1)为了独立模式比较,保留了独立模式的配置,并把它置为注释。
2)在xorg.conf的man里面,没有提到Clone模式,但是,你以把第二个显示器的像素值和第一个显示器的像素值设置得一样,这样就可以达到Clone的效果。
3)Relative后面的数字,实际上你可以根据显示器的不同,来自行设置上下左右。还可以设置为不整屏,比如:768,200。
六、几个没解决的问题:
1)独立模式中,第二个屏幕的桌面语言一直为英文。但是菜单和其它的都可以显示汉字。
2)独立模式中,任务栏大小设置之后,要重启kde后才起作用。
3)扩展模式中,任务栏没法向左收起。
4)双屏设置,包括三种模式,有时候会搞乱locale设置。本人做的时候,最好没办法,只好把主目录下的.kde全删除掉,又重新配置的字体等。
5)在扩展模式中,最大化窗口只能最大化到一个显示器。但是,即使最大化的窗口,也可以拖到另一个显示器。
注:在G400系列的双头显卡中,可以配置到最大化到两个显示器。其它的显卡不详。
七、总结:
其实在FreeBSD中,除了不支持的ATI等显卡之外,配置双屏还是比较轻松的。bl