Konfiguration des X-Servers - xorg.conf
 

Die zentrale Konfigurations-Datei für den X-Server ist die Datei xorg.conf, welche normalerweise im Verzeichnis /etc/X11/ liegt. Hier werden sämtliche Hardware-Informationen die für den Betrieb der grafischen Oberfläche nötig sind konfiguriert, wie z.B. das Tastatur-Layout, die Maus, die Grafikkarte und der verwendete Monitor. Heutige Distributionen können eine minimale xorg.conf-Datei besitzen, da der X-Server versucht, sämtliche Geräte vollautomatisch zu erkennen und einzurichten. Sollten jedoch einige Dinge fehlen oder falsch konfiguriert sein, kann man diese in der minimalen xorg.conf nachtragen. Die xorg.conf ist in einzelne Abschnitte aufgeteilt, welche mit dem Schlüsselwort Section eingeleitet und mit EndSection wieder abgeschlossen werden. Die einzelnen Sektionen erkläre ich hier im Detail:

Section "Files"
RgbPath "/usr/share/X11/rgb"
Module Path "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc:unscaled"
...
EndSection

Der Files-Abschnitt definiert Pfadangaben für i.d. Regel 3 Verschiedene Parameter:
RgbPath benennt die Datei, in der alle dem X-Server bekannten Farbnamen mit den zugehörigen RGB-Werten (Rot, Grün, Blau) stehen.
ModulePath legt das Verzeichnis fest, in dem die X-Server-Module liegen.
FontPath benennt ein Verzeichnis, in dem der X-Server nach Schriften sucht.

Section "Module"
Load "dbe"
Load "dri"
Load "glx"
....
EndSection

Der Module-Abschnitt gibt an, welche grafikkartenunabhängigen X-Server-Module geladen werden sollen, etwa zur Unterstützung bestimmter Schriftformate oder für besondere Eigenschaften wie direkte Videodarstellung (Direct Rendering).

Section "ServerFlags"
Option "AllowMouseOpenFail"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection

Der ServerFlags-Abschnitt beeinflusst das Verhalten des X-Servers. In diesem Beispiel erlaubt die Option "AllowMouseOpenFail" den Start des X-Server auch dann, wenn keine Maus initialisiert werden kann.
Die Option "BlankTime" ist -wenn nicht angegeben- standardmäßig auf 10 Minuten gesetzt und bewirkt, daß der Monitor nach 10 min in den Standby geht, was man am Besten am kdm-Login sehen kann. Möchte man, daß der grafische Login nicht nach 10 min wegen einem schwarzem Monitor verschwindet sondern dauerhaft da bleibt, ist diese Option auf "0" zu setzen. Selbiges gilt natürlich auch für "StandbyTime", "SuspendTime" und "OffTime".

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
EndSection


Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
EndSection


Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SHMConfig" "On"
Option "TapButton1" "0"
Option "TapButton2" "0"
Option "TapButton3" "0"
EndSection

Der InputDevice-Abschnitt konfiguriert jeweils ein Eingabegerät wie Maus oder Tastatur und kann mehrmals vorkommen.
Identifier gibt dem Abschnitt einen Namen, damit er in einem ServerLayout-Abschnitt erwähnt werden kann.
Driver lädt ein Modul ("Treiber") aus dem ModulePath.

Das dritte Eingabegerät hier ist das Touchpad eines Laptops, welches mit der Option "SHMConfig" "On" konfiguriert wird. Diese Option ermöglicht es, das Touchpad während des laufenden Betriebs an- und abzuschalten. Dazu gibt man auf der Konsole den Befehl
# synclient TouchpadOff=0
ein um das Touchpad zu aktivieren und
# synclient TouchpadOff=1
um es zu deaktivieren.
Die Option "TapButton1" "0" schaltet den "Fingerklick" über das Touchpad aus, d.h. ein Tippen auf das Touchpad hat keinerlei Funktion mehr und um einen Links- oder Rechtsklick auszulösen muß man die entsprechenden Knöpfe unterhalb des Touchpads drücken. Eine Übersicht über sämtliche möglichen Einstellungen für das Touchpad liefert der Befehl synclient -l.
WICHTIG: Man darf nicht vergessen das Touchpad auch in der Sektion ServerLayout mit anzugeben. Tut man das nicht, wirkt die Option SHMConfig nicht, da kein Speicher für die Funktion bereit gestellt wird und der Befehl synclient mit einer Fehlermeldung abbricht.
Noch ein Hinweis: Das Touchpad ist Standardmäßig nach dem Start aktiviert. Möchte man, daß es nach dem Start deaktiviert ist, erreicht man das durch ein kleines Shell-Skript im Ordner /home/user/.kde/Autostart/. Dieses Skript kann z.B. touchpadOff.sh heißen und den Eintrag synclient TouchpadOff=1 enthalten.

Zu diesem Abschnitt und speziell zu der Bezeichnung "CoreKeyboard" möchte ich noch folgendes anmerken: Bei mehreren Tastaturen definiert die Bezeichnung "CoreKeyboard" diese Tastatur als Haupt-Eingabe-Gerät. Ich weiß nicht, ob es sich dabei um einen Bug handelt oder nicht, aber unter Debian lenny führt der Zusatz CoreKeyboard dazu, daß bei einem Wechsel von einer der Konsolen (F1-F6) mittels ALT-STRG-F7 auf die grafische Oberfläche, die zuletzt gedrückte Taste, also F7 im Puffer verbleibt und auf das gerade aktive Programm angewendet wird. Was bei einem X-Term-Fenster zu einer Tilde (~) führt und bei geöffnetem Iceweasel (Firefox) zum Dialog-Fenster für das Caret Browsing. Um dieses Verhalten zu unterbinden, läßt man einfach die Bezeichnung CoreKeyboard weg oder deaktiviert den Eintrag mit einer Raute (#). Aber mal ehrlich, wer hat denn schon zwei oder mehr Keyboards an seinem PC hängen?

Section "Monitor"
Identifier "Monitor0"
HorizSync 30-69
VertRefresh 54-80
Option "DPMS" "true"
UseModes "Modus1"
EndSection

Der Monitor-Abschnitt beschreibt die Eigenschaften des verwendeten Monitors. Auch dieser Abschnitt kann mehrmals auftreten, falls man mehrere Monitore besitzt und muß einen Identifier haben, mit dem er im ServerLayout-Abschnitt aufgerufen wird. Die horizontalen und vertikalen Frequenzen können der Dokumentation des Monitors entnommen werden. Die Zeile UseModes ist optional und verwaist auf den optionalen Abschnitt Section "Modes", in welcher die Einstellungen zur Grafik anhand von sogenannten "Modelines" sehr genau definiert werden können. Jedoch muß man dafür seine Grafikhardware genau kennen (für die Anleitung wie man eine solche Modeline generiert, siehe nächstes Kapitel). Ein Beispiel:

Section "Modes"
Identifier "Modus1"
Modeline "800x600" 48.67 800 816 928 1072...
EndSection


Section "Device"
Identifier "Card0"
Driver "nv"
BusID "PCI:1:0:0"
EndSection

Der Device-Abschnitt legt fest, welche Grafikkarte für den X-Server verwendet werden soll. Auch diese Sektion kann bei mehreren Grafikkarten mehrmals auftreten.
Identifier - wieder zur Identifizierung im ServerLayout-Abschnitt.
Driver - nv für den Standard nvidia-Treiber. Hier kann auch vesa für einen allgemeinen Standard-Treiber stehen.
BusID - gibt den Ort der Karte auf dem Bus an. PCI:1:0:0 entspricht dem AGP-Bus.

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultColorDepth 16
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Der Screen-Abschnitt verknüpft jeweils einen Monitor und eine Grafikkarte. Die Unterabschnitte namens Display legen verschiedene Kombinationen aus Farbtiefe und Auflösung fest, zwischen denen im laufenden System mit STRG+ALT+plus, bzw. STRG+ALT+minus hin- und hergeschaltet werden kann.
DefaultColorDepth - definiert die Farbtiefe (hier 16-Bit) und verweist auf den entsprechenden SubSection-Eintrag mit der Tiefe 16. Beim X-Server Start wird die erste Auflösung in der Reihe ausgewählt, somit kann man im Screen-Abschnitt die Farbtiefe und die entsprechende Auflösung für den Start festlegen.

Section "ServerLayout"
Identifier "Default Screen"
Screen "Screen0"
InputDevice "Generic Keyboard" "CoreKeyboard"
InputDevice "Configured Mouse" "CorePointer"
InputDevice "Synaptics Touchpad"
EndSection

Der ServerLayout-Abschnitt verbindet schließlich die zu verwendenden Eingabegeräte (InputDevice) und Ausgabegeräte (Screen) miteinander. In Mehrschirmkonfigurationen wird hier auch die physikalische Anordnung der Bildschirme beschrieben (siehe Dual-Head xorg.conf für matrox g550).

Optional kommt auch sehr häufig dieser Eintrag vor:

Section "DRI"
Mode 0666
EndSection

Der DRI-Abschnitt ist auf das Modul dri angewiesen und beschreibt das Direct-Rendering.

Hier noch ein paar xorg.conf-Beispiel-Dateien:

TV-Out aktivieren für NVidia-Grafikkarten im Clone-Modus

Um den TV-Ausgang einer NVidia-Grafikkarte im Clone-Modus zu aktivieren, genügen ein paar zusätzliche Einträge in der "Device-Section":

Section "Device"
Identifier "Card0"
Driver "nv"
BusID "PCI:1:0:0"
Option "TwinView"
Option "TwinViewOrientation" "Clone"
# Option "MetaModes" "CRT-0: 1024x768, TV-0: 800x600"
# Option "HorizSync" "CRT-0: 30-81; TV-0: 30-50"
# Option "VertRefresh" "CRT-0: 56-76; TV-0: 60"
Option "ConnectedMonitor" "CRT, TV"
Option "TVStandard" "PAL-B"
Option "TVOutFormat" "SVIDEO"
Option "TVOverScan" "0.7"
EndSection

TwinView und TwinViewOrientation mit der Option Clone schalten den Clone-Modus überhaupt ein. MetaModes, HorizSync und VertRefresh dienen der näheren Bestimmung der Auflösung und Frequenzen der angeschlossenen Monitore, bzw. TV-Geräte und können auch weggelassen werden. In diesem Fall versucht die Grafikkarte die angeschlossenen Geräte zu erkennen und automatisch die korrekten Frequenzen zuzuordnen. Wichtig sind die korrekten Bezeichnungen für die Geräte:
CRT für einen Röhrenmonitor
TV für ein Fernsehgerät
DFP für einen Flachbildschirm
Die Option ConnectedMonitor gibt nun die verwendeten Geräte an. Hier mit
"CRT, TV" ein Röhrenmonitor und ein TV-Gerät. Der TVStandard ist klar, im europäischen Raum PAL. Mit TVOutFormat gibt man die korrekte Schnittstelle an. Mögliche Werte für TVOutFormat: COMPOSITE, SVIDEO und RGB.
Die Option TVOverScan vergrößert das TV-Bild solange, bis keine schwarzen Ränder mehr zu sehen sind. Mögliche Werte sind von 0.0 bis 1.0.
Hat man einen Flachbildschirm und ein TV-Gerät, würden die Zeilen folgendermaßen aussehen:

Option "TwinView"
Option "TwinViewOrientation" "Clone"
# Option "MetaModes" "DFP-0: 1024x768, TV-0: 800x600"
# Option "HorizSync" "DFP-0: 30-81; TV-0: 30-50"
# Option "VertRefresh" "DFP-0: 56-76; TV-0: 60"
Option "ConnectedMonitor" "DFP, TV"
Option "TVStandard" "PAL-B"
Option "TVOutFormat" "SVIDEO"

Weiter ist zu beachten, daß wenn die Auflösung des TV-Geräts geringer ist als die Auflösung des Monitors, nur ein Ausschnitt des Bildschirms auf dem TV-Gerät erfolgt. Jedoch ist dieser Ausschnitt sehr gut beeinflußbar. Man kann einen Wert zum verschieben aus der linken oberen Ecke eingeben:

Option "MetaModes" "DFP-0: 1280x1024, TV-0: 800x600 +50+100"

+50+100 bedeutet, daß der Ausschnitt um 50 Pixel nach rechts und 100 Pixel nach unten geschoben wird. Noch interessanter ist das sogenannte "Panning" bei dem der Ausschnitt automatisch verschoben wird, sobald die Maus den Rand berührt. Diese Funktion wird mittels dem @-Zeichen angegeben:

Option "MetaModes" "DFP-0: 1280x1024, TV-0: 800x600 @1280x1024"

Hier die xorg.conf zum runterladen:

 

Log-Datei des X-Servers

Sollte der X-Server Probleme machen und -aus welchen Gründen auch immer- den Start verweigern, hilft ein Blick in die Log-Datei des X-Servers, die normalerweise bei jedem X-Server-Start angelegt wird. Zu finden ist diese unter
/var/log/Xorg.0.log

Sollte sie nicht angelegt werden, kann man einen X-Server-Start mit folgendem Befehl initiieren:
# startx -- -logverbose 6