Inhalt

5. Konfiguration von XFree86

Das Einrichten von XFree86 ist in den meisten Fällen unproblematisch. Bei der Verwendung von Hardware, deren Treiber sich noch in der Entwicklung befinden oder beim Wunsch, die beste Leistung bzw. Auflösung mit einer beschleunigten Grafikkarte zu erzielen, kann sich die Konfiguration von XFree86 als sehr zeitaufwendig erweisen.

Dieses Kapitel beschreibt die Erstellung und Bearbeitung der Datei XF86Config, die den XFree86-Server konfiguriert. In den meisten Fällen hat es sich bewährt, mit einer Basiskonfiguration für XFree86 zu starten, die eine Standardauflösung von 640x480 Bildpunkten einstellt und von fast allen Grafikkarten und Monitoren unterstützt wird. Arbeitet XFree86 erst einmal mit einer Standardauflösung, so kann die Konfiguration jederzeit erweitert werden, um sämtliche Fähigkeiten der Videohardware auszunutzen. Dahinter verbirgt sich die Idee, zu überprüfen, ob XFree86 überhaupt auf dem System funktioniert und ob die Installation auch nicht fehlerhaft ist.

Zusätzlich zu dieser HOWTO sollten die folgenden Dokumente gelesen werden:

Die Haupt-Konfigurationsdatei ist /usr/X11R6/lib/X11/XF86Config. Sie enthält Informationen über die Maus, die Grafikkarte, den Monitor usw. Die mit der XFree86-Distribution bereitgestellte Datei XF86Config.eg enthält eine Beispielkonfiguration, die als Ausgangspunkt für die eigene Konfiguration benutzt werden kann. Dazu wird sie nach XF86Config kopiert.

Die XF86Config-Manual-Seite erläutert das Format dieser Datei im Detail. Bevor mit diesem Dokument fortgefahren wird, sollte die Manual-Seite gelesen werden.

Nachfolgend wird eine Muster-XF86Config-Datei schrittweise vorgestellt. Diese Datei kann sich von der Beispieldatei, die in der XFree86-Distribution enthalten ist, unterscheiden, aber ihre Struktur ist dieselbe.

Man beachte, daß das Dateiformat von XF86Config mit jeder Version von XFree86 wechseln kann. Diese Angaben beziehen sich auf die XFree86-Version 3.3.2.

Ferner sollte auch der Versuch unterbleiben, die hier aufgelistete Konfigurationsdatei auf das eigene System zu kopieren und anschließend zu benutzen. Eine Konfigurationsdatei, die nicht mit der verwendeten Hardware korrespondiert, kann Schaden an ihr anrichten. Berichten zufolge sind Monitore (besonders Festfrequenz-Monitore) bei der Benutzung einer unkorrekt konfigurierten XF86Config-Datei beschädigt bzw. zerstört worden. Der Grundsatz lautet also: »Vor der Benutzung einer XF86Config-Datei sicherstellen, daß sie mit der verwendeten Hardware korrespondiert«.

Jeder Abschnitt einer XF86Config-Datei wird von dem folgenden Zeilenpaar umgeben:

Section "section-name"
  ...
EndSection

Der erste Abschnitt der XF86Config-Datei ist Files, der wie folgt aussieht:

Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc:unscaled"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc"
    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi"
EndSection

Die RgbPath-Zeile setzt den Pfad zu der X11R6-RGB-Farbdatenbank. Jede FontPath-Zeile zeigt auf das jeweilige Verzeichnis mit den entsprechenden X11-Schriftarten. Im allgemeinen besteht kein Grund, diese Zeilen zu ändern, falls man nicht gerade ein neues Verzeichnis für weitere Schriftarten anlegen möchte. Für jedes Verzeichnis in /usr/X11R6/lib/X11/fonts sollte ein Eintrag in der Sektion Files zu finden sein.

Der nächste Abschnitt lautet ServerFlags, der verschiedene globale Flags des Servers spezifiziert. Er enthält im allgemeinen keinen Eintrag.

Section "ServerFlags"
# Diese Option erzeugt genau an der Stelle einen core
# dump, an der das entsprechende Signal empfangen wurde.
# Dieses läßt die Konsole eventuell in einem unbenutz-
# baren Zustand zurück, kann jedoch das Debuggen mit 
# diesem core dump erleichtern.
#    NoTrapSignals

# Diese Option schaltet die Möglichkeit ab, den X11-
# Server mit <Strg><Alt><Backspace> abzubrechen.
#    DontZap
EndSection

Alle Zeilen innerhalb der Sektion sind daher mit Hilfe des Nummernzeichens # auskommentiert.

Der folgende Abschnitt Keyboard beschreibt die Standardeinstellungen für die Tastatur.

Section "Keyboard"
    Protocol    "Standard"
    XkbRules    "xfree86"
    XkbModel    "pc102"
    XkbLayout   "de"
    XkbVariant  "nodeadkeys"
EndSection

Für eine Modifizierung der Tastatureinstellungen mit Hilfe zusätzlicher Optionen wird auf die Datei XF86Config hingewiesen. Die oben angegebenen Werte funktionieren auf den meisten Systemen.

Die Parameter für die Maus werden im nächsten Abschnitt spezifiziert.

Section "Pointer"
    Protocol    "MouseSystems"
    Device      "/dev/mouse"

# Baudrate und SampleRate werden nur für einige Mäuse
# von Logitech verwendet.
#    BaudRate   9600
#    SampleRate 150

# Emulate3Buttons ist eine Option für Microsoft Mäuse 
# mit nur 2 Tasten
#    Emulate3Buttons

# ChordMiddle ist eine Option für einige 3-Tasten Mäuse
# von Logitech 
#    ChordMiddle
EndSection

Von anfänglicher Bedeutung sind hier die beiden Optionen: Protocol und Device. Protocol spezifiziert das von der Maus verwendete Protokoll, nicht aber die Marke der Maus. Gültige Protokolltypen sind:

Man beachte, daß unter Linux zusätzliche Typangaben für andere Betriebssysteme verfügbar sind. Die Auswahl BusMouse sollte bei einer Logitech-Busmaus verwendet werden. Ferner sollte man beachten, daß ältere Logitech-Mäuse das Logitech-, dagegen neuere Modelle entweder das Microsoft- oder das Mouseman-Protokoll benutzen. Dies ist ein Grund, warum das Protokoll nichts mit der Mausmarke zu tun hat.

Die Auswahl Device beschreibt die Schnittstelle, an der die Maus angeschlossen ist. Bei den meisten Linux-Systemen ist dies /dev/mouse. Gewöhnlich ist /dev/mouse ein Link auf die passende serielle Schnittstelle (z.B. /dev/ttyS0) für serielle Mäuse bzw. die passende Schnittstelle für Busmäuse. Auf jeden Fall sollte man sich überzeugen, daß die im Device-Abschnitt angegebene Gerätedatei existiert.

Der nächste Abschnitt lautet Monitor und beschreibt die Kenndaten des Monitors. Er kann, wie andere Sektionen in der XF86Config-Datei auch, mehrmals auftreten. Dies ist nützlich, falls mehrere Monitore an ein System angeschlossen sind oder die gleiche XF86Config-Datei unter verschiedenen Hardware-Konfigurationen benutzt werden soll. Gewöhnlich wird nur ein einzelner Monitor-Abschnitt verwendet.

Section "Monitor"
    Identifier  "CTX 5468 NI"

    # Diese Werte sind nur für einen CTX 5468NI Monitor! 
    # Versuchen sie nicht, diese Werte für ihren Monitor
    # zu verwenden, wenn sie nicht wirklich dieses 
    # Modell haben sollten.

    Bandwidth    60
    HorizSync    30-38,47-50
    VertRefresh  50-90

    # Modes: Name       dotclock horiz                vert 

    ModeLine "640x480"  25       640 664 760 800      480 491 493 525
    ModeLine "800x600"  36       800 824 896 1024     600 601 603 625
    ModeLine "1024x768" 65       1024 1088 1200 1328  768 783 789 818
EndSection

Der Identifier-Eintrag kennzeichnet den Monitor mit einem Namen. Er ist frei wählbar (jede gültige Zeichenkette) und wird in einer späteren Sektion der XF86Config-Datei als Verweis auf den Monitor-Abschnitt verwendet.

HorizSync spezifiziert die gültigen horizontalen Synchronisationsfrequenzen des Monitors in kHz. Bei Multisync-Monitoren können dies ein oder mehrere, durch Komma getrennte Intervalle sein. Bei Festfrequenz-Monitoren ist es eine Reihe von festen Werten, wie z.B.:

HorizSync    31.5, 35.2, 37.9, 35.5, 48.95
Das Monitorhandbuch sollte im Abschnitt »Technische Spezifikationen« die entsprechenden Werte auflisten. Falls dies nicht der Fall ist, kann man versuchen, die benötigten Informationen beim Monitorhersteller mittels WWW oder beim Händler selbst zu bekommen.

VertRefresh gibt die gültigen vertikalen Refresh-Raten oder vertikalen Synchronisationsfrequenzen des Monitors in Hz an. Dies kann, wie schon bei HorizSync, ein Intervall oder eine Liste fester Werte sein. Auch hier sollte das Handbuch die entsprechenden Angaben aufweisen.

Mit Hilfe der HorizSync- und VertRefresh-Einträge wird überprüft, ob sich die angegebenen Bildschirmauflösungen in einem gültigen Bereich befinden. Dadurch wird die Möglichkeit reduziert, den Monitor beim Betreiben einer unzulässigen bzw. zu hohen Frequenz, für die er nicht ausgelegt ist, zu zerstören.

Die ModeLine-Zeile wird zur Spezifizierung der einzelnen Auflösungen des Monitors benutzt. Das Format von Modeline ist:

ModeLine Name dot-clock horiz-Werte vert-Werte

Name ist eine willkürliche Zeichenkette. Sie dient in der Datei zur Referenzierung auf den jeweiligen Auflösungsmodus. Dot-clock bezeichnet die benutzte Bildpunkt-Taktfrequenz. Die Frequenz wird gewöhnlich in MHz angegeben und gibt die Anzahl der von einer Grafikkarte an den Monitor ausgesendeten Bildpunkte je Sekunde bei dieser Auflösung an. Je vier Werte für horiz und vier Werte für vert spezifizieren den Bildschirmaufbau, d.h., sie geben die Anzahl der Bildpunkte an, bei der der Elektronenstrahl eine Zeile anzeigt, eine Beruhigungsphase und den Synchronisationsimpuls durchläuft.

Zur Bestimmung der ModeLine-Werte für den entsprechenden Monitor sei auf die Datei VideoModes.doc verwiesen, die zum Umfang der XFree86-Distribution gehört. Das Dokument beschreibt detailliert, wie diese Werte für jede vom Monitor unterstützte Auflösung ermittelt werden können. Zu allererst muß sichergestellt sein, daß der angegebene dot-clock-Wert auch mit einer von der Grafikkarte verwendeten Bildpunkt-Taktfrequenz korrespondiert. Man beachte, daß nur solche Videomodi verwendet werden können, deren Bildpunkt-Taktfrequenz von der Grafikkarte unterstützt wird. Im weiteren Verlauf der XF86Config-Datei werden die Bildpunkt-Taktfrequenzen weiter spezifiziert.

Zwei Dateien der XFree86-Distribution enthalten Daten für die ModeLine-Zeilen des zu verwendenden Monitors. Diese Dateien heißen: modeDB.txt bzw. Monitors und befinden sich beide im Verzeichnis /usr/X11R6/lib/X11/doc.

Anfänglich ist es empfehlenswert, mit Modeline-Werten des VESA-Standards zu beginnen, da die meisten Monitore die VESA-Auflösungen unterstützen. Die Datei modeDB.txt enthält Werte für die verschiedenen VESA-Standardauflösungen, und ihre Einträge sehen z.B. wie folgt aus:

# 640x480@60Hz Non-Interlaced Modus
# Horizontal Sync = 31.5kHz
# Timing: H=(0.95us, 3.81us, 1.59us)
#         V=(0.35ms, 0.064ms, 1.02ms)
#
# Name        clock   horizontales Timing   vertikales Timing     flags
  "640x480"   25.175  640  664  760  800    480  491  493  525

Dies ist der VESA-Standard für den 640x480-Videomodus. Er benutzt eine Bildpunkt-Taktfrequenz von 25,175, die die Grafikkarte unterstützen muß, um diesen Modus zu benutzen (später mehr dazu). Um diesen Eintrag in der XF86Config-Datei zu benutzen, muß die nachfolgende Zeile eingefügt werden:

ModeLine "640x480" 25.175 640 664 760 800 480 491 493 525

Man beachte, daß der Name der Zeile 640x480 eine frei wählbare Zeichenkette darstellt. Nach Konvention sollte er die verwendete Auflösung bezeichnen. Für Name kann theoretisch auch jede andere Zeichenkette gewählt werden, die den Modus beschreibt.

Für jede benutzte ModeLine-Zeile überprüft der Server, ob die Angaben des Modus innerhalb des Gültigkeitsbereichs von Bandwidth (Bandbreite), HorizSync und VertRefresh liegen. Falls sie nicht im gültigen Bereich liegen, werden die jeweiligen ModeLine-Zeilen vom X11-Server ignoriert.

Stellt sich heraus, daß die Werte für die VESA-Standardmodi nicht funktionieren, so enthalten die Dateien modeDB.txt und Monitors spezifische Einträge für viele verschiedene Monitortypen. Auf Basis der Einträge aus diesen beiden Dateien können eigene Werte kreiert werden. Man sollte jedoch nur dem Monitormodell entsprechende Werte benutzen. Man beachte, daß jeder Monitor nur eine bestimmte maximale Auflösung darstellen kann. Hier sollte man sich nicht nur auf die Herstellerangaben verlassen, da diese Angaben oft übertrieben sind. Rein physikalisch kann ein 15-Zoll-Monitor maximal 800x600 scharf darstellen. Höhere Auflösungen führen dazu, daß das Bild unscharf wird. Bei 17-Zoll-Monitoren sind maximal 1280x1024 zu empfehlen.

Sind an dieser Stelle immer noch keine gültigen Werte für den Monitor gefunden, kann man den Instruktionen aus der der XFree86-Distribution beigefügten Datei VideoModes.doc folgen, um ModeLine-Werte aus den im Monitor-Handbuch aufgelisteten Spezifikationen selber zu generieren. Die Datei VideoModes.doc beschreibt außerdem sehr ausführlich das Format einer ModeLine-Direktive sowie andere Aspekte des XFree86-Servers.

Sind die übernommenen oder selbergenerierten ModeLine-Werte noch nicht ganz perfekt, so ist es möglich, durch ein geringes Modifizieren der Werte das gewünschte perfekte Resultat zu erhalten. Ist z.B. während des XFree86-Betriebes das Monitorbild ein wenig verschoben oder scheint es zu laufen, so kann man gemäß der Anleitung in der Datei VideoModes.doc versuchen, diese Werte zu verbessern. Auch sollten die Einstellregler des Monitors überprüft werden. In vielen Fällen ist es nur notwendig, die horizontale oder vertikale Bildschirmgröße nach dem Start von XFree86 zu ändern, um das Bild zu zentrieren und auf eine passende Größe anzuordnen. Das Vorhandensein der Kontrollregler an der Frontseite des Monitors macht das Leben sicherlich leichter.

Man sollte weder Monitor-Frequenzen noch ModeLine-Werte von Monitoren benutzen, die nicht dem zu verwendenden Modell entsprechen. Versucht man dennoch, den Monitor mit einer Frequenz anzusteuern, für die er nicht konzipiert ist, so besteht die Gefahr, ihn zu beschädigen oder ihn gar zu zerstören.

Der nächste Abschnitt der Konfigurationsdatei XF86Config ist Device, der die Parameter der Grafikkarte kennzeichnet. Hier ein Beispiel:

Section "Device" 
    Identifier "#9 GXE 64"

    # bisher nichts; wir werden diese später mit 
    # Optionen füllen
EndSection

Die Sektion definiert die Eigenschaften für eine bestimmte Grafikkarte. Identifier ist wieder eine frei wählbare Zeichenkette, die die Karte beschreibt. Auch hier wird der Name für einen späteren Verweis benutzt.

Anfänglich braucht außer Identifier nichts in diesen Abschnitt eingetragen zu werden. Das liegt daran, daß der X-Server dazu benutzt wird, die Eigenschaften der Grafikkarte selber zu ermitteln. Anschließend können die so gefundenen Werte in die Device-Sektion eingetragen werden. Der X-Server ist nämlich in der Lage, den Videochipsatz, die Bildpunkt-Taktfrequenzen, den RAMDAC sowie die Größe des Videospeichers auf der Grafikkarte festzustellen.

Bevor diese Werte jedoch zu ermitteln sind, muß die XF86Config-Datei durch den letzten Abschnitt komplettiert werden. Er lautet Screen und spezifiziert die Kombination von Monitor und Grafikkarte für die Benutzung eines bestimmten Servers.

Section "Screen"
    Driver     "Accel"
    Device     "#9 GXE 64"
    Monitor    "CTX 5468 NI"
    Subsection "Display"
        Depth      16
        Modes      "1024x768" "800x600" "640x480"
        ViewPort   0 0
        Virtual    1024 768
    EndSubsection
EndSection

Die Zeile Driver beschreibt den zu benutzenden X-Server. Gültige Angaben für Driver sind:

Es sollte sichergestellt sein, daß ein symbolischer Link von /usr/X11R6/bin/X auf den zu benutzenden Server zeigt.

Die Device-Zeile spezifiziert den Identifier der Device-Sektion, der mit der verwendeten Grafikkarte korrespondiert. In dem oben angegebenen Device-Abschnitt ist die Zeile

Identifier "#9 GXE 64"

eingetragen worden. Daher wird in dieser Sektion die Zeichenkette #9 GXE 64 in die Device-Zeile gestellt.

Ähnliches geschieht mit der Zeile Monitor. Sie verweist auf den Identifier "CTX 5468 NI" aus der oben beschriebenen Monitor-Sektion.

Der Unterabschnitt Display definiert verschiedene Eigenschaften des XFree86-Servers mit der Kombination aus Monitor und Grafikkarte. Die XF86Config-Datei beschreibt diese Optionen sehr detailliert. Die meisten davon sind jedoch wie der »Zuckerguß auf einem Kuchen« und daher nicht notwendig, um ein System zum Laufen zu bekommen.

Die wichtigsten Optionen sind:

Depth

Definiert die Farbtiefe, d.h. die Anzahl Bits je Bildpunkt. Der Standardwert beträgt 8. Ein VGA-Server benutzt eine Farbtiefe von 4 und ein Monochrom-Server eine Farbtiefe von 1. Bei der Benutzung einer beschleunigten Grafikkarte mit genügend Speicher, um mehr Bits je Bildpunkt zu unterstützen, kann der Wert auf 16, 24 oder 32 gesetzt werden. Falls dabei Probleme auftreten, sollte der Wert auf 8 zurückgesetzt werden. Später kann man dann versuchen, das Problem zu beheben. Der 24 Bit-Modus sollte keine Verwendung finden, da damit einige bekannte Programme wie netscape Probleme haben. Statt dessen sollte der 32 Bit-Modus verwendet werden, wenn eine Echtfarbendarstellung benötigt wird.

Modes

Dies ist die Liste mit Namen der verschiedenen Videomodi, die durch die Verwendung der ModeLine-Direktive in der Monitor-Sektion definiert worden sind. In dem oben aufgeführten Abschnitt sind ModeLine-Zeilen "1024x768", "800x600" und "640x480" benannt. Deswegen stellt sich die Zeile Modes wie folgt dar:

Modes    "1024x768" "800x600" "640x480"
Der zuerst angegebene Modus in dieser Zeile wird standardmäßig nach dem Start von XFree86 eingestellt. Während des Betriebes von XFree86 kann mit Hilfe der Tastenkombination Strg-Alt-numerisch + und Strg-Alt-numerisch - zwischen den angegebenen Modi gewechselt werden.

Es hat sich bei der Erstkonfiguration von XFree86 vorteilhaft erwiesen, einen Videomodus mit einer niedrigen Auflösung, wie z.B. 640x480, zu benutzen, da sich diese Auflösung auf den meisten Systemen problemlos darstellen läßt. Ausgehend von dieser Basiskonfiguration kann anschließend die Datei XF86Config modifiziert werden, um auch höhere Auflösungen zu erzielen.

Virtual

Kennzeichnet die Größe des virtuellen Desktops. XFree86 besitzt die Fähigkeit, zusätzlichen Speicher der Grafikkarte für die Vergrößerung der Oberfläche zu benutzen. Bewegt sich der Mauszeiger über den Bildschirmrand hinaus, so verschiebt sich der Ausschnitt und der zusätzliche Bereich wird sichtbar. Bei einer Bildschirmauflösung von z.B. 800x600 Bildpunkten kann Virtual auf die von der Grafikkarte maximal unterstützten Auflösung gesetzt werden. Eine Grafikkarte mit 1 MB RAM unterstützt 1024x768 Bildpunkte mit einer Farbtiefe von 8 Bits je Bildpunkt, eine Karte mit 2 MB RAM dagegen 1280x1024 Bildpunkte bei einer Farbtiefe von 8 Bits je Bildpunkt oder 1024x768 Bildpunkte bei einer Farbtiefe von 16 Bits je Bildpunkt. Selbstverständlich kann der gesamte virtuelle Desktop nicht auf einmal dargestellt werden, dennoch kann man ihn insgesamt benutzen.

Die Virtual-Option stellt eine gute Möglichkeit dar, um den Speicher der Grafikkarte nutzbar zu machen. Dennoch ist sie ziemlich begrenzt und bietet kaum Bedienungsmöglichkeiten. Zur Nutzung eines wahren virtuellen Desktop sollte statt dessen fvwm2 oder ein ähnlicher Fenstermanager benutzt werden. fvwm2 bietet die Möglichkeit zur Darstellung beliebig vieler virtueller Bildschirme, zwischen denen mit Hilfe des Desktopmanagers umgeschaltet werden kann. So braucht nur der aktuelle Bildschirm und nicht der gesamte Desktop in den Speicher der Grafikkarte gestellt zu werden. Für weitere Details sollte die Manual-Seite über fvwm2 herangezogen werden. Die meisten Linux-Systeme setzen standardmäßig fvwm2 als Fenstermanager ein.

ViewPort

Setzt bei Benutzung der oben beschriebenen Virtual-Option die Koordinaten der linken, oberen Ecke des virtuellen Desktops beim Start von XFree86. Standardkoordinaten für Virtual sind oft 0 0. Werden für Virtual keine Angaben gemacht, erhält man einen zum virtuellen Desktop zentrierten Bildschirmausschnitt.

Für diese Sektion existieren noch viele andere Optionen. Eine komplette Beschreibung enthält die Manual-Seite zu XF86Config. Für die anfängliche Konfiguration von XFree86 sind diese Optionen aber nicht notwendig.


Inhalt