Kapitel 4. Das X Window System

Inhaltsverzeichnis

4.1. Installation des X Window Systems optimieren
4.2. Installation und Konfiguration von Fonts
4.3. Konfiguration von OpenGL/3D

Zusammenfassung

Das X Window System (X11) ist der Quasi-Standard für grafische Benutzeroberflächen unter Unix. X11 ist zudem netzwerkbasiert, sodass Anwendungen, die auf einem Rechner gestartet wurden ihre Ausgabe auf einem anderen Rechner darstellen können, wenn beide miteinander vernetzt sind. Die Art des Netzes (LAN oder Internet) spielt hierbei keine Rolle.

Wir stellen Ihnen in diesem Kapitel Optimierungsmöglichkeiten für Ihre X Window System-Umgebung vor, geben Ihnen Hintergrundinformationen zum Umgang mit Fonts unter SUSE LINUX und gehen auf die OpenGL/3D-Konfiguration ein. Die YaST Modulbeschreibungen zur Konfiguration von Monitor, Grafikkarte, Maus und Tastatur finden Sie im Benutzerhandbuch.

X11™ entstand als Gemeinschaftsproduktion von DEC™ (Digital Equipment Corporation™) und dem Projekt Athena am MIT™ (Massachusetts Institute of Technology™). Die erste Version (X11R1™) wurde im September 1987 freigegeben. Seit Release 6 hat das X Consortium, Inc.™, ab 1996 The Open Group™ die Entwicklung des X Window System™ übernommen.

XFree™ ist eine frei verfügbare Implementierung von X-Servern für PC-Unix-Systeme (vgl. http://www.XFree86.org). XFree wurde und wird auch weiterhin – verstreut über die ganze Welt – von Programmierern entwickelt, die sich 1992 zum XFree-Team zusammengeschlossen haben. Daraus entstand die 1994 gegründete Firma The XFree86 Project, Inc.™, deren Ziel es ist, XFree™ einer breiten Öffentlichkeit zur Verfügung zu stellen und sowohl forschend als auch entwickelnd an der Zukunft des X Window System mitzuarbeiten.

Um die zur Verfügung stehende Hardware (Maus, Grafikkarte, Monitor, Tastatur) optimal nutzen zu können, besteht die Möglichkeit, die Konfiguration manuell zu optimieren. Im Folgenden wird auf einige Aspekte der Optimierung eingegangen. Detaillierte Informationen zur Konfiguration des X Window System finden sich in verschiedenen Dateien im Verzeichnis /usr/share/doc/packages/xf86 sowie natürlich in der Manpage man XF86Config.

[Warning]Warnung

Bei der Konfiguration des X Window Systems sollte besonders sorgsam vorgegangen werden! Auf keinen Fall sollte X11 gestartet werden, bevor die Konfiguration abgeschlossen wurde. Ein falsch eingestelltes System kann zu irreparablen Schäden an der Hardware führen; besonders gefährdet sind Festfrequenz-Monitore. Die Autoren dieses Buches und die SUSE LINUX AG lehnen jede Verantwortung für eventuell entstehende Schäden ab. Der vorliegende Text wurde mit größtmöglicher Sorgfalt erstellt. Dennoch kann nicht garantiert werden, dass die hier vorgestellten Methoden korrekt sind und Ihrer Hardware keinen Schaden zufügen.

4.1. Installation des X Window Systems optimieren

Im Folgenden soll der Aufbau der Konfigurationsdatei /etc/X11/XF86Config vorgestellt werden. Diese Datei ist in Abschnitte (engl. Sections) aufgeteilt, die jeweils mit dem Schlüsselwort Section "bezeichner" eingeleitet werden und mit EndSection beendet werden. Es folgt ein grober Abriss der wichtigsten Abschnitte.

Die Programme SaX2 und xf86config erstellen die Datei XF86 Config, standardmäßig in /etc/X11. Dies ist die primäre Konfigurationsdatei für das X Window System™. Hier finden sich die gemachten Angaben zu Maus, Monitor und Grafikkarte.

XF86Config setzt sich aus mehreren Abschnitten zusammen (den sog. Sections), die sich mit jeweils einem Aspekt der Konfiguration beschäftigen. Eine Section hat stets die Form:

Section Abschnittsbezeichnung
eintrag 1
eintrag 2
eintrag n
EndSection

Es existieren folgende Typen von Sections:

Tabelle 4.1. Abschnitte (sog. sections) in /etc/X11/XF86Config

TypBedeutung
Files Dieser Abschnitt beschreibt die verwendeten Pfade für Zeichensätze und die RGB-Farbtabelle.
ServerFlagsHier werden allgemeine Schalter angegeben.
InputDevice Über diesen Abschnitt werden die Eingabegeräte konfiguriert. Es werden sowohl Tastaturen und Mäuse als auch spezielle Eingabegeräte (Touchtablett, Joysticks usw.) über diesen Abschnitt konfiguriert. Wichtige Bezeichner sind hier Driver und die Optionen, die Protocol und Device festlegen.
Monitor Beschreibt den verwendeten Monitor. Elemente dieses Abschnittes sind ein Name, auf den später bei der Definition des Screens verwiesen wird, sowie die Beschreibung der Bandbreite (Bandwidth) und der zulässigen Synchronisationsfrequenzen (HorizSync und VertRefresh). Die Angaben erfolgen in MHz, kHz bzw. Hz. Grundsätzlich lehnt der Server jede Modeline ab, die nicht der Spezifikation des Monitors entspricht. Damit soll verhindert werden, dass durch Experimente an den Modelines versehentlich zu hohe Frequenzen an den Monitor geschickt werden.
Modes Hier werden die Darstellungsparameter der einzelnen Bildschirmauflösungen festgelegt. Diese Parameter können von SaX2 aufgrund der vom Benutzer vorgegebenen Werte berechnet werden und müssen im Regelfall nicht verändert werden. Manuell eingreifen können Sie an dieser Stelle aber beispielsweise, wenn Sie einen Festfrequenzbildschirm anschließen möchten. Eine genaue Erläuterung der einzelnen Parameter würde den Rahmen dieses Buches sprengen, Sie finden allerdings eine detaillierte Erläuterung der Bedeutung der einzelnen Zahlenwerte in der HOWTO Datei /usr/share/doc/howto/en/XFree86-Video-Timings-HOWTO.gz.
Device Dieser Abschnitt definiert eine bestimmte Grafikkarte. Diese wird durch den angegeben Namen referenziert.
Screen Diese Section schließlich fügt einen Monitor und ein Device zusammen und es ergeben sich daraus die notwendigen Angaben für XFree. Der Unterabschnitt Display erlaubt die Angabe der virtuellen Bildschirmgröße (Virtual), des ViewPort und der verwendeten Modes mit diesem Screen.
ServerLayout Dieser Abschnitt legt das Layout einer Single- oder Multiheadkonfiguration fest. Hier werden die Eingabegeräte InputDevice und die Anzeigegeräte Screen zu einem Ganzen zusammengefasst.

Näher betrachtet werden die Sections Monitor, Device und Screen. In der Manualpage von XFree86 und der Manualpage von XF86Config finden sich weitere Informationen zu den verbleibenden Sections.

In XF86Config können mehrere Monitor- und Device-Abschnitte vorkommen. Auch mehrere Screen-Abschnitte sind möglich; welcher davon verwendet wird, hängt dann vom nachfolgenden Abschnitt ServerLayout ab.

4.1.1. Screen-Section

Zunächst soll die Screen-Section näher betrachtet werden. Diese bringt eine Monitor- mit einer Device-Section zusammen und bestimmt, welche Auflösungen mit welcher Farbtiefe bereitgestellt werden sollen.

Eine Screen-Section kann beispielsweise wie in Datei 4.1. “Die Screen-Section der Datei /etc/X11/XF86Config” aussehen.

Beispiel 4.1. Die Screen-Section der Datei /etc/X11/XF86Config

Section "Screen" 
  DefaultDepth  16 
  SubSection "Display"
    Depth       16 
    Modes       "1152x864" "1024x768" "800x600" 
    Virtual     1152x864 
  EndSubSection 
  SubSection "Display" 
    Depth       24 
    Modes       "1280x1024"
  EndSubSection 
  SubSection "Display" 
    Depth       32 
    Modes "640x480" 
  EndSubSection 
  SubSection "Display" 
    Depth        8 
    Modes       "1280x1024" 
  EndSubSection 
  Device        "Device[0]" 
  Identifier    "Screen[0]" 
  Monitor       "Monitor[0]" 
EndSection

Die Zeile Identifier (hier Screen[0]) gibt diesem Abschnitt eine eindeutige Bezeichnung, durch die er dann im darauf folgenden Abschnitt ServerLayout eindeutig referenziert werden kann. Über die Zeilen Device und Monitor werden dem Screen eindeutig die schon weiter oben in der Datei definierte Grafikkarte und der Monitor zugeordnet. Dies sind nichts weiter als Verweise auf die Device- und Monitor-Sections mit den entsprechenden Namen bzw. Identifiern. Auf diese Sections wird weiter unten noch näher eingegangen.

Mittels der DefaultDepth-Angabe kann ausgewählt werden, in welcher Farbtiefe der Server startet, wenn er ohne eine explizite Angabe der Farbtiefe gestartet wird. Es folgt für jede Farbtiefe eine Display-Subsection. Die Farbtiefe, für die die Subsection gilt, wird durch das Schlüsselwort Depth festgelegt. Mögliche Werte für Depth sind 8, 15, 16 und 24. Nicht alle X-Server-Module unterstützen jeden dieser Werte.

Nach der Farbtiefe wird mit Modes eine Liste von Auflösungen festgelegt. Diese Liste wird vom X-Server von links nach rechts durchlaufen. Für jede Auflösung wird in der Modes-Section in Abhängigkeit von der Monitor-Section eine passende Modeline gesucht, die vom Monitor und der Grafikkarte dargestellt werden kann.

Die erste in diesem Sinne passende Auflösung ist die, in der der X-Server startet (der sog. Default-Mode). Mit den Tasten Strg-Alt-Grau + kann in der Liste nach rechts, mit Strg-Alt-Grau - nach Links gewandert werden. So kann die Bildschirmauflösung zur Laufzeit des X Window Systems variiert werden.

Die letzte Zeile der Subsection Display mit Depth 16 bezieht sich auf die Größe des virtuellen Bildschirms. Die maximal mögliche Größe des virtuellen Bildschirms hängt vom Speicherausbau der Videokarte und der gewünschten Farbtiefe ab, nicht aber von der maximalen Auflösung des Monitors. Da moderne Grafikkarten sehr viel Grafikspeicher anbieten, können Sie sehr große virtuelle Desktops anlegen. Beachten Sie dann aber bitte, dass Sie evtl. keine 3D-Funktionalität mehr nutzen können, wenn Sie praktisch den gesamten Grafikspeicher mit einem virtuellen Desktop füllen. Hat die Karte zum Beispiel 16 MB Video-RAM, so kann, bei 8 Bit Farbtiefe, der virtuelle Bildschirm bis zu 4096x4096(!) Pixel groß sein. Speziell bei den beschleunigten Servern empfiehlt es sich jedoch nachdrücklich, nicht den gesamten Speicher der Videokarte für den virtuellen Bildschirm zu verwenden, da der nicht verwendete Speicherbereich auf der Videokarte von diesen Servern für verschiedene Caches für Zeichensätze und Grafikbereiche verwendet wird.

4.1.2. Device-Section

Eine Device-Section beschreibt eine bestimmte Grafikkarte. Es können beliebig viele Device-Sections in XF86Config enthalten sein, solange sich ihr Name, der mit dem Schlüsselwort Identifier angegeben wird, unterscheidet. In der Regel werden – falls Sie mehrere Grafikkarten eingebaut haben – die Sections einfach durchnummeriert, die erste wird dann mit Device[0], die zweite mit Device[1] bezeichnet usw.. In der folgenden Datei sehen Sie den Ausschnitt aus der Device Section eines Computers, in dem eine Matrox Millennium PCI Grafikkarte eingebaut ist:

Section "Device" 
  BoardName     "MGA2064W" 
  BusID         "0:19:0" 
  Driver        "mga" 
  Identifier    "Device[0]" 
  VendorName    "Matrox" 
  Option        "sw_cursor" 
EndSection

Wenn Sie SaX2 zur Konfiguration verwenden, dann dürfte die Device-Section ungefähr so wie oben abgebildet aussehen. Insbesondere Driver und BusID sind natürlich von der in Ihrem Computer eingebauten Hardware abhängig und werden von SaX2 automatisch bestimmt. Die BusID bestimmt den PCI- bzw. AGP-Steckplatz, in den die Grafikkarte eingesteckt ist. Diese stimmt mit der vom Kommando lspci ausgegebenen ID überein. Beachten Sie, dass der X-Server die Angaben in dezimaler, das Programm lspci hingegen in hexadezimaler Schreibweise ausgibt!

Über den Parameter Driver legen Sie den zu verwendenden Treiber für diese Grafikkarte fest. Im Falle der Matrox Millennium heißt das Treibermodul mga. Diese werden vom X-Server über den im Abschnitt Files definierten ModulePath im Unterverzeichnis drivers gesucht. In einer Standardinstallation ist dies das Verzeichnis /usr/X11R6/lib/modules/drivers. Hierzu wird an den Namen einfach _drv.o angehängt, im Falle des mga Treibers wird als die Treiberdatei mga_drv.o geladen.

Über zusätzliche Optionen kann das Verhalten des X-Servers bzw. des Treibers beeinflusst werden. In der Device Section ist hier exemplarisch die Option sw_cursor gesetzt worden. Dies deaktiviert den Hardwaremauscursor und stellt den Mauszeiger in Software dar. Je nach Treibermodul stehen ihnen verschiedene Optionen zur Verfügung, diese sind in den Beschreibungsdateien zu den Treibermodulen im Verzeichnis /usr/X11R6/lib/X11/doc zu finden. Allgemein gültige Optionen finden Sie auch in den Manpages (man XF86Config und man XFree86).

4.1.3. Monitor- und Modes-Section

Die Monitor-Sections und die Modes Section beschreiben, analog zu den Device-Sections, jeweils einen Monitor. Die Konfigurationsdatei /etc/X11/XF86Config kann wieder beliebig viele, unterschiedlich benannte Monitor-Sections enthalten. In der ServerLayout-Section wird dann festgelegt, welche Monitor-Section ausschlaggebend ist.

Für die Monitordefinition gilt, noch mehr als für die Beschreibung der Grafikkarte, dass das Erstellen einer Monitor-Section und insbesondere der Modes-Section nur von erfahrenen Benutzern gemacht werden sollte. Der wesentliche Bestandteil der Modes-Section sind die sog. Modelines, in denen Horizontal- und Vertikal-Timings für die jeweilige Auflösung angegeben werden. In der Monitor-Section werden die Eigenschaften des Monitors, insbesondere die zulässigen Ablenkfrequenzen, festgehalten.

[Warning]Warnung

Ohne ein grundlegendes Verständnis der Funktionsweise von Monitor und Grafikkarte sollte an den Modelines nichts verändert werden, da dies unter Umständen zur Zerstörung des Monitors führen kann!

Diejenigen, die sich (zu)trauen, eigene Monitorbeschreibungen zu entwickeln, sollten mit der Dokumentation im Verzeichnis /usr/X11/lib/X11/doc vertraut sein. Besonders zu erwähnen ist [fang:93], wo die Funktion der Hardware und das Erstellen von Modelines detailliert beschrieben wird. Eine deutsche Einführung in dieses Thema findet sich im XFree-Kapitel in [hetze:96].

Glücklicherweise ist mittlerweile die manuelle Erstellung von Modelines oder Monitordefinitionen fast nie mehr nötig. Wenn Sie einen modernen Multisync-Monitor verwenden, können die zulässigen Frequenzbereiche und optimalen Auflösungen in der Regel, wie im SaX2 Konfigurationsabschnitt erwähnt, direkt via DDC vom X-Server aus dem Monitor gelesen werden. Sollte dies nicht möglich sein, können Sie auch einen der eingebauten VESA-Modi des X-Servers verwenden. Diese sollten auf praktisch allen Grafikkarten/Monitorkombinationen einwandfrei funktionieren.