一、適用條件:
用單獨的兩塊顯卡來實現雙屏顯示,像ATI、nVidia和Matrox的雙頭顯示技術,可以用顯卡本身的驅動來解決,具體的操作,在各個驅動的man上都有。但是,有些顯卡也可以按照本文的說明來做,前提是把同一個顯卡的device節寫兩遍。
二、硬件准備
兩個顯卡,前提是你的機器必須可以安裝上。典型的配置為:一個AGP,一個PCI或兩個PCI。如果機器上有自帶的硬顯卡,也可以再加上一個AGP,實現兩個AGP。(很多服務器主板上都帶Rage XL,這個就可以實現兩個AGP的顯卡。)
據說965G以上的主板自帶的顯卡也可以實現雙顯卡,由於沒有條件測試,不知道具體結果。但是,945G以下的自帶顯卡不能用再加一塊顯卡的方法實現雙顯卡。因為一旦檢測到主板上接有顯卡,整合的顯卡會被自動屏蔽掉。現在有很多顯卡帶VGA和DVI輸出,可以用一個DVI-VGA的轉換器來實現雙屏顯示。
三、雙顯示器的三種模式
雙顯示器有三種基本的顯示模式,雖然有很多資料把它說為是兩種,但是我覺得把它分為三種更好接受一些。
1、獨立模式:兩個顯示器獨立,互不影響。也就是說,一個顯示器上的窗口,不可以移動到另一個顯示器上去。
2、擴展模式:兩個顯示器擴展為一個大的顯示器。一個窗口,可以移動或擴展到另一台顯示器上去。windows中叫做“擴展桌面”。
3、克隆模式:兩個顯示器上的內容完全一致。如果用來做演示,那麼通常就是用的這種模式,一個用來接投影機,一個用來本地顯示,供演講者使用。
四、實現原理
五、配置實例
以下配置實例的硬件:一個主板自帶的Rage XL和一個Geforce 440 64M顯卡,加上兩個Philips 107s6顯示器。
1、獨立模式:
Section "ServerLayout"
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"
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"
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)為了獨立模式比較,保留了獨立模式的配置,並把它置為注釋。
3)Relative後面的數字,實際上你可以根據顯示器的不同,來自行設置上下左右。還可以設置為不整屏,比如:768,200。
六、幾個沒解決的問題:
1)獨立模式中,第二個屏幕的桌面語言一直為英文。但是菜單和其它的都可以顯示漢字。
2)獨立模式中,任務欄大小設置之後,要重啟kde後才起作用。
3)擴展模式中,任務欄沒法向左收起。
4)雙屏設置,包括三種模式,有時候會搞亂locale設置。本人做的時候,最好沒辦法,只好把主目錄下的.kde全刪除掉,又重新配置的字體等。
5)在擴展模式中,最大化窗口只能最大化到一個顯示器。但是,即使最大化的窗口,也可以拖到另一個顯示器。
注:在G400系列的雙頭顯卡中,可以配置到最大化到兩個顯示器。其它的顯卡不詳。
七、總結:
其實在FreeBSD中,除了不支持的ATI等顯卡之外,配置雙屏還是比較輕松的。