psimem
02-08-2008, 17:36
In questi giorni ho provato a creare una configurazione con doppio monitor sulla mia linux box e dopo varie ricerche in rete ho raccolto varie informazioni frammentate e ridondanti; allorche' mi sono deciso a scrivere questa mini-guida per facilitare un po' le cose ai posteri :D .
Innanzitutto esistono due principali metodi per ottenere un dual head:
1- avendo una sola scheda video con 2 o piu' uscite;
2- avendo fisicamente piu' schede video installate nel sistema.
Nel primo caso si passa attraverso i driver di dette schede, siano nvidia oppure ati, che vengono forniti di apposite utility per la configurazione; per esperienza personale posso citare ad esempio "NVIDIA X Server Settings", che permette di fare tutto attraverso una comoda gui ed alcuni colpi di mouse.
Nel secondo caso invece si deve configurare a manina il server X, piu' precisamente il famigerato file xorg.conf, per istruirlo a dovere su come utilizzare le schede ed i relativi monitor; ovviamente qui si trattera' il primo caso... :Prrr: ok scherzo: il secondo.
Prima di cominciare un paio di avvertimenti:
1- fate una copia del file xorg.conf attuale in un posto sicuro per i casi di emergenza;
2- considero scontato il fatto che l'attuale configurazione di X sia funzionante;
3- andando a modificare i refresh rate del monitor ed altre cosucce alla cavolo rischiate di fulminare il monitor o peggio, quindi OCIO!
4- considero scontato il fatto che si abbia un minimo di dimestichezza con la temuta linea di comando :ciapet: .
Bene, ora andiamo a cominciare:
1- fate una copia del file /etc/X11/xorg.conf (si' lo so che l'ho gia' detto :D)
2- date un lspci per identificare le schede video
3- ad esempio io ho ottenuto:
...........
00:12.0 VGA compatible controller: nVidia Corporation GeForce 7050 PV / nForce 630a (rev a2)
...........
01:0a.0 VGA compatible controller: 3dfx Banshee (rev 3)
...........
che sono rispettivamente un'integrata nella mobo ed una installata in uno slot PCI
4- ora bisogna prendere nota del valore identificativo delle due schede:
nvidia 00:12.0
3dfx 01:0a.0
e trasformarlo da esadecimale a decimale per poterlo usare all'interno di xorg.conf:
nvidia 00:12.0 -> 00:18:0
3dfx 01:0a.0 -> 01:10:0
questo e' un punto sovente non chiarito che puo' creare piu' di un grattacapo ed io ne so qualcosa :asd:; per convertire facilmente un valore esadecimale potete andare qui (http://www.easycalculation.com/hex-converter.php)
5- ora bisogna metter mano ad xorg.conf, che dovrebbe essere qualcosa del genere:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder3) Wed Jun 13 18:39:30 PDT 2007
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
RgbPath "/usr/lib/X11/rgb"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "UseEdid" "False"
Option "RenderAccel" "True"
Option "AllowGLXWithComposite" "True"
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
# Option "TwinView"
# Option "MetaModes" "1600x1200 1024x768"
# Option "TwinViewOrientation" "RightOf"
# LeftOf RightOf Above Below Clone
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
come potete vedere le zone che piu' ci interessano sono:
"ServerLayout" che definisce il layout globale dei monitor
"Monitor" che definisce i parametri di funzionamento del monitor
"Device" che definisce i parametri di funzionamento della scheda video
"Screen" che definisce il funzionamento in acoppiata di scheda + monitor
6- la prima cosa da fare e' specificare nella sezione "Device" il BusID della scheda precedentemente ricavato, nel mio caso sarebbe:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:18:0"
EndSection
7- ora si possono definire la nuova scheda video e monitor compilando ex novo il trittico "Monitor" "Device" "Screen":
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device1"
Driver "vesa"
VendorName "3dfx"
BusID "PCI:1:10:0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
ed aggiungendolo alla fine dell'attuale xorg.conf; prestate attenzione particolare ai valori:
di refresh del monitor onde evitare fumate nere
di BusID della scheda video onde evitare schermate nere sul monitor
8- come avete notato per la mia 3dfx ho usato il driver vesa, poco performante, ma praticamente universale per qualsiasi scheda usiate; cio' non toglie che se avete i driver specifici per la vostra scheda correttamente installati sarebbe cosa buona e giusta usare proprio quelli ;)
9- l'ultimo passo e' definire il layout globale che dovranno avere i due monitor, modificando la sezione "ServerLayout":
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
Screen "Screen1" RightOf "Screen0"
# Option "Xinerama" "on"
Option "Clone" "on"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
10- il primo screen che si va a definire e' quello considerato principale
11- dopo si specifica la disposizione fisica che hanno i monitor sulla vostra scrivania, che possono essere "LeftOf" "RightOf" "Above" "Below" "Relative"
12- le altre due opzioni, di cui una commentata, definiscono il comportamento del desktop
xinerama: spalma un unico desktop sui due monitor
Clone: crea un secondo desktop indipendente dal primo
13- bene, siamo alla frutta ed ecco un bel riepilogo del mio xorg.conf:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder58) Thu Jun 5 00:08:24 PDT 2008
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
Screen "Screen1" RightOf "Screen0"
# Option "Xinerama" "on"
Option "Clone" "on"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
RgbPath "/usr/lib/X11/rgb"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
#--------------------------------------------------------nvidia
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:18:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "UseEdid" "False"
Option "RenderAccel" "True"
Option "AllowGLXWithComposite" "True"
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
#--------------------------------------------------------3dfx
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device1"
Driver "vesa"
VendorName "3dfx"
BusID "PCI:1:10:0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
14- come ultima cosa non vi rimane che riavviare X e godervi il nuovo desktop bilocale :asd:
Spero che questo post possa essere di aiuto, alla prossima :cincin:
Innanzitutto esistono due principali metodi per ottenere un dual head:
1- avendo una sola scheda video con 2 o piu' uscite;
2- avendo fisicamente piu' schede video installate nel sistema.
Nel primo caso si passa attraverso i driver di dette schede, siano nvidia oppure ati, che vengono forniti di apposite utility per la configurazione; per esperienza personale posso citare ad esempio "NVIDIA X Server Settings", che permette di fare tutto attraverso una comoda gui ed alcuni colpi di mouse.
Nel secondo caso invece si deve configurare a manina il server X, piu' precisamente il famigerato file xorg.conf, per istruirlo a dovere su come utilizzare le schede ed i relativi monitor; ovviamente qui si trattera' il primo caso... :Prrr: ok scherzo: il secondo.
Prima di cominciare un paio di avvertimenti:
1- fate una copia del file xorg.conf attuale in un posto sicuro per i casi di emergenza;
2- considero scontato il fatto che l'attuale configurazione di X sia funzionante;
3- andando a modificare i refresh rate del monitor ed altre cosucce alla cavolo rischiate di fulminare il monitor o peggio, quindi OCIO!
4- considero scontato il fatto che si abbia un minimo di dimestichezza con la temuta linea di comando :ciapet: .
Bene, ora andiamo a cominciare:
1- fate una copia del file /etc/X11/xorg.conf (si' lo so che l'ho gia' detto :D)
2- date un lspci per identificare le schede video
3- ad esempio io ho ottenuto:
...........
00:12.0 VGA compatible controller: nVidia Corporation GeForce 7050 PV / nForce 630a (rev a2)
...........
01:0a.0 VGA compatible controller: 3dfx Banshee (rev 3)
...........
che sono rispettivamente un'integrata nella mobo ed una installata in uno slot PCI
4- ora bisogna prendere nota del valore identificativo delle due schede:
nvidia 00:12.0
3dfx 01:0a.0
e trasformarlo da esadecimale a decimale per poterlo usare all'interno di xorg.conf:
nvidia 00:12.0 -> 00:18:0
3dfx 01:0a.0 -> 01:10:0
questo e' un punto sovente non chiarito che puo' creare piu' di un grattacapo ed io ne so qualcosa :asd:; per convertire facilmente un valore esadecimale potete andare qui (http://www.easycalculation.com/hex-converter.php)
5- ora bisogna metter mano ad xorg.conf, che dovrebbe essere qualcosa del genere:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder3) Wed Jun 13 18:39:30 PDT 2007
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
RgbPath "/usr/lib/X11/rgb"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "UseEdid" "False"
Option "RenderAccel" "True"
Option "AllowGLXWithComposite" "True"
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
# Option "TwinView"
# Option "MetaModes" "1600x1200 1024x768"
# Option "TwinViewOrientation" "RightOf"
# LeftOf RightOf Above Below Clone
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
come potete vedere le zone che piu' ci interessano sono:
"ServerLayout" che definisce il layout globale dei monitor
"Monitor" che definisce i parametri di funzionamento del monitor
"Device" che definisce i parametri di funzionamento della scheda video
"Screen" che definisce il funzionamento in acoppiata di scheda + monitor
6- la prima cosa da fare e' specificare nella sezione "Device" il BusID della scheda precedentemente ricavato, nel mio caso sarebbe:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:18:0"
EndSection
7- ora si possono definire la nuova scheda video e monitor compilando ex novo il trittico "Monitor" "Device" "Screen":
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device1"
Driver "vesa"
VendorName "3dfx"
BusID "PCI:1:10:0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
ed aggiungendolo alla fine dell'attuale xorg.conf; prestate attenzione particolare ai valori:
di refresh del monitor onde evitare fumate nere
di BusID della scheda video onde evitare schermate nere sul monitor
8- come avete notato per la mia 3dfx ho usato il driver vesa, poco performante, ma praticamente universale per qualsiasi scheda usiate; cio' non toglie che se avete i driver specifici per la vostra scheda correttamente installati sarebbe cosa buona e giusta usare proprio quelli ;)
9- l'ultimo passo e' definire il layout globale che dovranno avere i due monitor, modificando la sezione "ServerLayout":
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
Screen "Screen1" RightOf "Screen0"
# Option "Xinerama" "on"
Option "Clone" "on"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
10- il primo screen che si va a definire e' quello considerato principale
11- dopo si specifica la disposizione fisica che hanno i monitor sulla vostra scrivania, che possono essere "LeftOf" "RightOf" "Above" "Below" "Relative"
12- le altre due opzioni, di cui una commentata, definiscono il comportamento del desktop
xinerama: spalma un unico desktop sui due monitor
Clone: crea un secondo desktop indipendente dal primo
13- bene, siamo alla frutta ed ecco un bel riepilogo del mio xorg.conf:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder58) Thu Jun 5 00:08:24 PDT 2008
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
Screen "Screen1" RightOf "Screen0"
# Option "Xinerama" "on"
Option "Clone" "on"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
RgbPath "/usr/lib/X11/rgb"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
#--------------------------------------------------------nvidia
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:18:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "UseEdid" "False"
Option "RenderAccel" "True"
Option "AllowGLXWithComposite" "True"
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
#--------------------------------------------------------3dfx
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0 - 110.0
VertRefresh 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device1"
Driver "vesa"
VendorName "3dfx"
BusID "PCI:1:10:0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
14- come ultima cosa non vi rimane che riavviare X e godervi il nuovo desktop bilocale :asd:
Spero che questo post possa essere di aiuto, alla prossima :cincin: