SuSE Linux: Versionen ab 7.0
XFree86: Version 4.x.x, SaX2 bis Version 2.43(453)
Voraussetzung für die Realisierung dieser Konfiguration sind mindestens zwei Grafikkarten, zwei Monitore und XFree86 in der Version 4.x.x. XFree86 3.3.6 bietet keine Möglichkeit für den Betrieb von mehreren Monitoren.
Beachten Sie, dass Multihead zu den fortgeschrittenen Möglichkeiten der X11 Konfiguration zählt und daher nicht vom kostenfreien Installationssupport abgedeckt wird. Hilfe bei Problemen können Ihnen lediglich die Advanced Support Services sowie die SuSE Support Services anbieten.Um Multi- oder DualHead zu konfigurieren beenden Sie Ihre grafische Oberfläche (X) und booten Sie Ihr System in Runlevel 3. Führen Sie zunächst das Kommando sax2 -p aus um die Hardware auflisten zu lassen:
Chip: 0 is -> 3Dfx Voodoo 3 00:16:0 0x121a 0x0005 PCI tdfx Chip: 1 is -> NVidia RIVA TNT2 Model 64 01:00:0 0x10de 0x002d AGP nv
In diesem Beispiel benutzen wir eine NVIDIA AGP Grafikkarte und eine 3dfx Voodoo PCI-Karte um Multihead einzurichten.
Es kann unter Umständen vorkommen, dass bestimmte Kombinationen von Grafikkarten nicht miteinander arbeiten. In solchen Fällen bleibt keine andere Wahl als die Hardware zu tauschen.
Beachten Sie bitte, dass das primäre Ausgabedevice die Karte ist, die im BIOS zuerst initialisiert wird. Normalerweise ist ist in den modernen Systemen diese Option (VGA Boot from oder VGA BIOS Sequenze) auf AGP eingestellt. Um nun die entsprechende Konfiguration vorzunehmen, starten Sie SaX2.
Der Konfigurationsvorgang unter SaX2 unterscheidet sich nur gering von dem einer normalen Konfiguration. Wählen Sie, nachdem SaX2 gestartet ist, Change configuration aus dem Button alter und gehen Sie die Konfiguration normal durch. Die erste Veränderung zu einem normalen Konfigurationvorgang sehen Sie wenn Sie zur Section graphics setup kommen.
Hier werden nun beide Grafikkarten aufgeführt und können auch entsprechend konfiguriert werden. Bei bestimmten Grafikkarte kann es notwendig sein, noch bestimmte Optionen in die XF86Config eintragen zu lassen. Unter Properties -&gT Expert -> Miscellaneus/Options lassen sich diese auswählen.
Notwendige Informationen zu bestimmten Treiberoptionen finden Sie auf der XFree86-Homepage unter der Dokumention zum jeweiligen XFree-Release oder im speziellen Treiber-Readme (z.B. für den NVIDIA-Treiber).
Sollten Sie keine speziellen Einstellungen benötigen können Sie diesen Dialog überspringen und direkt zur Monitorkonfiguration weitergehen.
Stellen Sie die Monitore mit den gewünschten Auflösungen unf Bildwiederholraten ein. Bei TFT/LC-Displays müssen Sie ggf. auf die entsprechenden Frequenzen achten. Wählen Sie ggf. als Monitor LCD -> XGA1024x786@60Hz um den TFT mit 60Hz anzusteuern.
Nachdem Sie nun alle Einstellungen vorgenommen haben, müssen Sie dem X Server mitteilen, wie Ihre Monitore angeordnet sind. Klicken Sie dazu im letzten Dialog auf Finish. Anschliessend können Sie durch das Verschieben der Monitore festlegen, auf welcher Seite der/die sekundär(en) Monitor(e) von Ihrem Primärdisplay stehen. Zudem können Sie die verschiedenen Multiheadmodi (Traditional, Xinerama und Clone) in diesem Menü einstellen.
Traditional: Zwei unterschiedliche Desktops Xinerama: Desktop wird über alle Monitore wiedergegeben Clone: Hauptbildschirm wird gespiegelt
Nachdem Sie auch diese Einstellungen vorgenommen haben, können Sie den Server Test starten. Sollten beim Test Probleme auftreten und der Test Server nicht gestartet werden, können Sie in der Datei /var/log/SaX.log nachprüfen, wo der Fehler liegt. Dazu sollten Sie allerdings SaX2 verlassen und sich die Datei mit dem Befehl:
less /var/log/SaX.log
ansehen. Verlassen können Sie die Ansicht mit der Taste q.
Nachdem nun SaX2 die XF86Config geschrieben hat, finden Sie die Datei in /etc/x11/XF86Config. Als Beispiel wurden die oben genannten Grafikkarten verwendet um die folgende Konfiguration zu erstellen. Als Monitor dienten zwei TFT-Bildschirme:
# /.../ # SaX generated XFree86 config file # Created on: 2002-06-25. # # Version: 4.3 # Contact: Marcus Schaefer <sax@suse.de>, 2001 # # Automatically generated by [SaX2] (4.3) # PLEASE DO NOT EDIT THIS FILE! # Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/URW" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/PEX" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/latin2/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/latin2/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/latin2/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/latin2/Type1" FontPath "/usr/X11R6/lib/X11/fonts/latin7/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/baekmuk:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/japanese:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/kwintv:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/truetype" FontPath "/usr/X11R6/lib/X11/fonts/uni:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/CID" FontPath "/usr/X11R6/lib/X11/fonts/ucs/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/ucs/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/ucs/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/hellas/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/hellas/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/hellas/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/hellas/Type1" FontPath "/usr/X11R6/lib/X11/fonts/misc/sgi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/xtest" ModulePath "/usr/X11R6/lib/modules" RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "ServerFlags" Option "AllowMouseOpenFail" EndSection Section "Module" Load "type1" Load "speedo" Load "extmod" Load "freetype" EndSection Section "InputDevice" Driver "Keyboard" Identifier "Keyboard[0]" Option "MapName" "Standard Keyboard [ pc104 ]" Option "Protocol" "Standard" Option "XkbLayout" "de" Option "XkbModel" "pc104" Option "XkbRules" "xfree86" Option "XkbVariant" "nodeadkeys" EndSection Section "InputDevice" Driver "mouse" Identifier "Mouse[1]" Option "Device" "/dev/mouse" Option "Emulate3Buttons" "on" Option "Emulate3Timeout" "50" Option "InputFashion" "Mouse" Option "Name" "Autodetection" Option "Protocol" "ps/2" Option "Vendor" "Sysp" EndSection Section "Monitor" Option "CalcAlgorithm" "UseFrameBufferTiming" DisplaySize 300 230 HorizSync 31.5-65 Identifier "Monitor[0]" ModelName "XGA 1024X768@60HZ" Option "DPMS" VendorName "--> LCD" VertRefresh 42-72 UseModes "Modes[0]" EndSection Section "Monitor" Option "CalcAlgorithm" "UseFrameBufferTiming" HorizSync 31.5-65 Identifier "Monitor[1]" ModelName "XGA 1024X768@60HZ" Option "DPMS" VendorName "--> LCD" VertRefresh 42-72 UseModes "Modes[1]" EndSection Section "Modes" Identifier "Modes[0]" Modeline "1024x768" 74 1024 1048 1184 1328 768 771 777 806 EndSection Section "Modes" Identifier "Modes[1]" Modeline "1024x768" 74 1024 1048 1184 1328 768 771 777 806 EndSection Section "Screen" DefaultDepth 16 SubSection "Display" Depth 15 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 32 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1024x768" "800x600" "640x480" EndSubSection Device "Device[0]" Identifier "Screen[0]" Monitor "Monitor[0]" EndSection Section "Screen" DefaultDepth 16 SubSection "Display" Depth 15 Modes "640x480" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 24 Modes "640x480" EndSubSection SubSection "Display" Depth 32 Modes "640x480" EndSubSection SubSection "Display" Depth 8 Modes "640x480" EndSubSection Device "Device[1]" Identifier "Screen[1]" Monitor "Monitor[1]" EndSection Section "Device" BoardName "RIVA TNT2 Model 64" BusID "1:0:0" Driver "nv" Identifier "Device[0]" Option "IgnoreEDID" Option "SWCursor" Screen 0 VendorName "NVidia" EndSection Section "Device" BoardName "Voodoo 3" BusID "0:16:0" Driver "tdfx" Identifier "Device[1]" Screen 0 VendorName "3Dfx" EndSection Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "on" Screen "Screen[0]" RightOf "Screen[1]" Screen "Screen[1]" EndSection Section "DRI" Group "video" Mode 0660 EndSection
Kennzeichnend bei dieser Konfiguration sind die doppelten Einträge für:
Section "Monitor" Section "Modes" Section "Screen"
und
Section "Device"
die jeweils ein Gerät (Monitor, Modelines, Grafikkarteund Startoptionen für den X Server) konfigurieren.
Um die verschiedenen Multihead-Modi zu nutzen, werden zwei Einträge in Ihre Section "ServerLayout" eingetragen. Diese sind:
Option "Clone" "off" Option "Xinerama" "on"
In diesem Beispiel ist also Xinerama als Standard eingestellt, wenn Sie den X Server starten. Um Clone zu aktivieren, setzen Sie den Wert auf "on" und den für Xinerama auf "off". Sind beide Werte auf "off" wird automatisch Traditional verwendet.
Auch wenn Multihead sehr viele Vorteile bietet, in einigen Situationen muss man hin und wieder doch darauf verzichten , z.B. wenn Sie die 3D Fähigkeiten Ihrer Grafikkarte nutzen möchten oder wenn Sie mit höheren Auflösungen abeiten, die die anderen Monitore nicht darstellen können. Wenn Sie nun die Ausgabe nur auf einen Monitor ausgeben möchten, müssen Sie noch eine zweite Section "ServerLayout" anlegen.
Öffnen Sie dazu die Datei /etc/X11/XF86Config mit einem Editor Ihrer Wahl. Im folgenden Beispiel werden wir den mcedit verwenden:
mcedit /etc/X11/XF86Config
Gehen Sie ans Ende der Datei wo Sie die erste Section "ServerLayout" vorfinden und verändern Sie die Zeile Identifier wie folgt:
Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "on" Screen "Screen[0]" RightOf "Screen[1]" Screen "Screen[1]" EndSection
Section "ServerLayout" Identifier "Multi" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "on" Screen "Screen[0]" RightOf "Screen[1]" Screen "Screen[1]" EndSection
Beginnen Sie nun eine zweite Section "ServerLayout" anzulegen. Dazu ist es nicht notwendig alle Einträge aus dem oberen Beispiel zu übernehmen, sondern lediglich nur die folgenden Zeilen hinzuzufügen:
Section "ServerLayout" Identifier "Single" InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" Screen "Screen[0]" EndSection
Wenn Sie diese Einträge vorgenommen haben, speichern Sie die Veränderungen ab (F2 -> Enter) und verlassen Sie den Editor mit F10. Beachten Sie bei diesen Einträgen bitte, dass diese von SaX2 bei einer erneuten Konfiguration nicht eingelesen werden und überschrieben werden könnten, wenn Sie kein Backup Ihrer XF86Config angefertigt haben.
Um nun die verschiedenen Layouts anzusteuern, führen Sie folgenden Befehl aus:
startx -- -layout layoutname
layoutname steht in diesem Fall für den Namen, den Sie unter Identifier in den Sections "ServerLayout" definiert haben. Je nach Konfiguration in der XF86Config startet X nun mit den gewünschten Einträgen.