ubuntuusers.de

ubuntuusers.deWikiXServer

XServer

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/Oxygen/X.png Das X Window System (auch: X Version 11, X11, X, aber nicht X-Windows) ist eine Sammlung von Protokollen, Computerprogrammen und Standards zur Ansteuerung grafischer Bildschirme im Allgemeinen und zur Anzeige einer grafischen Benutzungsoberfläche, vor allem unter Unix-Systemen. Der X-Server steuert die Ein- und Ausgabegeräte wie die Maus, Tastatur, den Bildschirm und die Grafikkarte.
[...] Das eigentliche Aussehen und Verhalten des Fenstersystems wird nicht von X bestimmt, sondern vom Fenstermanager, der wie eine normale Anwendung einfach als Client des X-Servers läuft. Für das Aussehen der Programme selbst ist eine Oberflächenbibliothek (siehe GUI-Toolkits) verantwortlich, die das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z.B. Menüs und Schaltflächen übernimmt.
(mehr Informationen im Wikipedia-Artikel).

Der X-Server hat sich in den letzten Jahren kontinuierlich weiterentwickelt. Damit einher ging die abnehmende Bedeutung der Konfiguration über die zentrale Datei /etc/X11/xorg.conf. Grafikkarten und Bildschirme werden nun vollautomatisch oder - bei Bedarf - manuell mittels RandR konfiguriert. Eine Sonderrolle spielen nur noch Eingabegeräte wie spezielle Tastaturen, Mäuse oder Grafiktabletts.

Es gibt mehrere Varianten, insbesondere bei Bildschirmen manuell einzugreifen:

Unterschiede zwischen Ubuntu-Versionen

Dieser Abschnitt ist leider notwendig, da sich manche Ubuntu-Versionen abweichend verhalten. Zum besseren Verständnis ist dieser Abschnitt chronologisch geordnet.

Ab Ubuntu 10.04

Zusätzlich wurde die Konfiguration von Eingabegeräten über xorg.conf.d eingeführt. Eine vorhandene xorg.conf wird berücksichtigt - aufgrund der automatischen Konfiguration des XServers teilweise aber nur mit eingeschränkter Wirkung. Dadurch haben z.B. gravierende Fehler keine Auswirkungen mehr.

Ab Ubuntu 11.10

In Ubuntu 11.10 wird die Konfiguration über xorg.conf wieder nicht genutzt bzw. ist nicht vorhanden. Wer die Datei trotzdem benötigt, kann diese mit:

sudo Xorg -configure 

erzeugen und anschließend bearbeiten.

/etc/X11/xorg.conf

Die Konfigurationsdateien des X-Servers sind im Verzeichnis /etc/X11/ abgelegt. Die zentrale Konfigurationsdatei ist /etc/X11/xorg.conf. Zum Bearbeiten sind ein Editor [1] und Root-Rechte [2] erforderlich. Weitere Hilfe erhält man außerdem in den Manpages mit kleinem oder großem X, z.B.:

man xorg.conf 

oder

man Xorg 

Struktur

Jeder Abschnitt beginnt mit einer Section "<Sektionsname>-Zeile und endet mit einer EndSection-Zeile. Innerhalb jedes einzelnen Abschnitts befinden sich verschiedene Zeilen mit einem Optionsnamen und mindestens einem Optionswert, der auch in Anführungszeichen (") angegeben sein kann. Mit einem Rauten-Symbol (#) beginnende Zeilen werden vom X-Server nicht gelesen und stellen Kommentare oder Anmerkungen dar. Einige der Optionen in /etc/X11/xorg.conf akzeptieren boolesche Werte (wahr/nicht wahr), was die gegebene Funktion entweder ein- oder ausschaltet. Verwendbare Werte sind:

  • 1, on, true, oder yes - Schaltet eine Option ein.

  • 0, off, false, oder no - Schaltet eine Option aus.

Files

Der Abschnitt Files legt für den X-Server wichtige Pfade fest, hier z.B. die Pfade für die Schriften:

Section "Files"
        FontPath        "/usr/share/X11/fonts/misc"
        FontPath        "/usr/share/X11/fonts/cyrillic"
        FontPath        "/usr/share/X11/fonts/100dpi/:unscaled"
        FontPath        "/usr/share/X11/fonts/75dpi/:unscaled"
        FontPath        "/usr/share/X11/fonts/Type1"
        FontPath        "/usr/share/X11/fonts/CID"
        FontPath        "/usr/share/fonts/100dpi"
        FontPath        "/usr/share/fonts/75dpi"
        # paths to defoma fonts
        FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
        FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
EndSection

Der Eintrag FontPath wird im Files-Abschnitt am häufigsten verwendet. Dieser Eintrag gibt an, wo der X-Server die Zeichensätze ("fonts") bekommt (vom xfs Font-Server). Beispiele können hier im Wiki unter Schriften gefunden werden.

Module

Der Abschnitt Module gibt dem X-Server an, welche Module des /usr/X11R6/lib/modules-Verzeichnisses zu laden sind.

Section "Module"
        Load    "i2c"
        Load    "bitmap"
        Load    "ddc"
        Load    "dri"
        Load    "extmod"
        Load    "freetype"
        Load    "glx"
        Load    "int10"
        Load    "type1"
        Load    "vbe"
EndSection

Die Module statten den X-Server mit zusätzlichen Funktionen aus. Häufig verwendete Module sind in der folgenden Übersicht aufgeführt.

Modul Funktion
glx Unterstützung für das Rendern mittels OpenGL
dri Unterstützung für DRI (Direct Rendering Infrastructure) im X-Server
vbe Unterstützung für VESA-BIOS-Erweiterungen. Erlaubt die Abfrage der Monitoreigenschaften mittels der Grafikkarte
ddc Unterstützung für den Datenanzeigekanal (Data Display Channel). Erlaubt die Abfrage der Monitoreigenschaften mittels der Grafikkarte
int10 Real-Mode-x86-Emulator zum Softboot sekundärer VGA-Karten. Sollte aktiviert sein, wenn vbe aktiviert ist
dbe Aktiviert die Double-Buffering-Erweiterung im Server. Sinnvoll für Animationen und Video-Operationen
extmod Aktiviert viele traditionelle und oft verwendete Erweiterungen, wie nichtrechteckige Fenster, gemeinsamer Speicher, Video-Modus-Umschaltung, DGA und Xv
record Implementiert die RECORD-Erweiterung, oft für Server-Tests verwendet
bitmap Font-Rasterer (ebenso wie das freetype- und das type1-Modul)

InputDevice

Jeder InputDevice-Abschnitt konfiguriert ein Eingabe-Gerät wie eine Maus, eine Tastatur oder ein Touchpad, das für die Eingabe von Informationen in das System mithilfe des X-Servers verwendet wird. Die meisten Systeme besitzen mindestens zwei InputDevice-Abschnitte, jeweils einen für Tastatur und Maus.

Ein typischer Abschnitt für eine Tastatur sieht so aus:

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

häufige Einträge für Tastaturen:

  • XkbModel - Das Tastaturmodell (pc102,pc104,pc105)

  • XkbOptions - mit dieser Option beeinflusst man das Verhalten bestimmter Tasten.

Ein typischer Abschnitt für eine Maus:

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

Diese Einträge werden am häufigsten in einem InputDevice-Abschnitt verwendet:

  • Identifier - Gibt einen eindeutigen Namen für diesen InputDevice-Abschnitt an. Dieser Eintrag ist notwendig.

  • Driver - Gibt X den Namen des Treibers an, der für die Verwendung des Geräts zu laden ist.

  • Option - Gibt Geräte-bezogene Optionen an.

  • Für eine Maus enthalten diese Optionen Folgendes:

    • Device - Gibt den Ort des physischen Geräts an, für serielle Mäuse gibt man /dev/ttyS0 an. Die Null ist der erste serielle Port und muss ggf. angepasst werden.

    • Protocol - Gibt das von der Maus verwendete Protokoll an, wie IMPS/2 oder PS/2, für serielle Mäuse gibt man meist auto an.

    • Emulate3Buttons - Gibt an, ob eine Zwei-Tasten-Maus eine dritte Taste emulieren soll, wenn beide Tasten gleichzeitig gedrückt werden.

Beispielkonfigurationen:

Monitor

Jeder Monitor-Abschnitt konfiguriert einen vom System verwendeten Monitor. Mindestens ein Monitor-Abschnitt muss vorhanden sein, es können aber auch mehrere sein - für jeden zusätzlichen Monitor ein Abschnitt. Detaillierte Informationen zu Bildschirmauflösungen und Wiederholraten sind unter Bildschirmauflösung im Wiki nachzulesen.

Hier ein typischer Monitor-Abschnitt für einen TFT-Monitor:

Section "Monitor"
        Identifier      "S19-1"
        Option          "DPMS"
        DisplaySize     376 301
EndSection

Hier ein typischer Monitor-Abschnitt für einen klassischen Röhrenmonitor (CRT):

Section "Monitor"
        Identifier      "e175"
        Option          "DPMS"
        HorizSync       30-85
        VertRefresh     50-120
        DisplaySize     328 248
EndSection

Achtung!

Alle hier aufgeführten Werte sind Beispielwerte und dürfen nicht 1:1 übernommen werden. Das Ansteuern eines Bildschirms mit falschen Parametern kann im ungünstigsten Fall zu dessen Zerstörung führen - auch wenn sich viele Monitore heutzutage selbst abschalten, um Beschädigungen zu vermeiden.

Häufige Einträge im Monitor-Abschnitt:

  • Identifier - Verleiht dem Monitor einen eindeutigen Namen. Dieser Eintrag ist erforderlich.

  • VendorName - Ein optionaler Eintrag, der den Hersteller des Monitors angibt.

  • ModelName - Ein optionaler Eintrag, der den Namen des Modells des Monitors angibt.

  • DisplaySize - Ein optionaler Eintrag, der - in Millimetern - die physische Größe des Bildschirmbereichs angibt.

  • HorizSync - Gibt die Bandbreite der Horizontalfrequenz in kHz an, die mit dem Monitor kompatibel ist. Diese Werte werden vom X-Server als Richtlinie verwendet, so dass dieser weiß, ob bestimmte Werte eines Modeline-Eintrags für den Monitor zu verwenden sind.

  • VertRefresh - Listet die vom Monitor unterstützten vertikalen Bildwiederholfrequenzen in Hz auf. Auch diese Werte werden vom X-Server als Richtlinie verwendet, so dass dieser weiß, ob bestimmte Werte eines Modeline-Eintrags für den Monitor zu verwenden sind.

  • Option "<option-name>" - Ein optionaler Eintrag, der weitere Parameter für den Monitor-Abschnitt angibt.

  • Modeline - Dient der optionalen Angabe der Grafikmodi des Monitors bei besonderen Auflösungen mit bestimmten Horizontal- und Vertikalfrequenzen.

Device

Im Device-Abschnitt wird die Grafikkarte für das System eingerichtet. Mindestens ein Device-Abschnitt muss immer vorhanden sein, es können auch mehrere Abschnitte vorhanden sein - für jede im System vorhandene Grafikkarte ein Abschnitt.

Das folgende Beispiel zeigt einen typischen Device-Abschnitt für eine Grafikkarte:

Section "Device"
        Identifier      "NVIDIA Corporation NV34 [GeForce FX 5200]"
        BusID           "PCI:1:0:0"
        Driver          "nv"
EndSection

Die folgenden Einträge sind häufig in einem Device-Abschnitt zu finden:

  • Identifier - Ein eindeutiger Name für diesen Device-Abschnitt. Dieser Eintrag ist notwendig.

  • Driver - Gibt an, welchen Treiber der X-Server laden muss, um die Grafikkarte verwenden zu können.

  • BusID - Gibt (optional) den Bus an, in dem sich die Grafikkarte befindet. Diese Option ist nur bei Systemen mit mehreren Grafikkarten notwendig.

  • Option "<option-name>" - Ein optionaler Eintrag, der weitere Parameter für den Device-Abschnitt angibt. In den man-Seiten zu xorg.conf werden gültige Optionen aufgelistet. Eine der häufiger verwendeten Optionen ist "dpms", die die Einstellung Service Star Energy Compliance für den Monitor aktiviert.

  • VideoRam - Der Arbeitsspeicher (RAM) der Grafikkarte in Kilobytes (optional). Diese Einstellung ist normalerweise nicht notwendig, da der X-Server gewöhnlich die Grafikkarte automatisch auf den verfügbaren Speicher prüft. Es gibt aber Grafikkarten, die X nicht automatisch erkennen kann, weswegen diese Option die Möglichkeit bietet, manuell die Größe des Grafik-RAM anzugeben.

  • VendorName - Gibt (optional) den Hersteller der Grafikkarte an.

  • BoardName - Gibt (optional) den Namen der Grafikkarte an.

  • Screen - Ein optionaler Eintrag, der angibt, welchen Anschluss der Grafikkarte dieser Device-Abschnitt konfiguriert. Diese Option ist nur bei Grafikkarten mit mehr als einem Anschluss nützlich. Wenn mehrere Monitore an eine Grafikkarte angeschlossen sind, dann müssen auch verschiedene Device-Abschnitte mit einem jeweils unterschiedlichen Screen-Wert zur Verfügung stehen. Der Wert eines Screen-Eintrags ist eine ganzzahlige Nummer. Der erste Anschluss hat den Wert 0, und für jeden weiteren Anschluss wird diese Zahl um eins erhöht.

Beispielkonfigurationen:

Screen

Jeder Screen-Abschnitt bindet eine Grafikkarte (oder einen Anschluss auf einer Grafikkarte) an einen Monitor, indem dieser den Device-Abschnitt und den jeweiligen Monitor-Abschnitt für jeden der Anschlüsse referenziert. Mindestens ein Screen-Abschnitt muss vorhanden sein, weitere bestehen für jede zusätzliche Kombination aus Grafikkarte (oder Anschluss) und Monitor auf dem Computer.

Hier ein Beispiel für einen Screen-Abschnitt:

Section "Screen"
        Identifier      "Default Screen"
        Device          "NVIDIA Corporation NV34 [GeForce FX 5200]"
        Monitor         "S19-1"
        DefaultDepth    16
        SubSection "Display"
                Depth           16
                Modes           "1280x1024" "1024x768"
        EndSubSection
        SubSection "Display"
                Depth           24
                Modes           "1280x1024" "1024x768"
        EndSubSection
EndSection

In einem Screen-Abschnitt werden diese Einträge oft verwendet:

  • Identifier - Ein eindeutiger Name für diesen Screen-Abschnitt. Dieser Eintrag ist notwendig.

  • Device - Gibt den eindeutigen Namen eines Device-Abschnitts an. Dieser Eintrag ist erforderlich.

  • Monitor - Gibt den eindeutigen Namen eines Monitor-Abschnitts an. Dieser Eintrag ist notwendig.

  • DefaultDepth - Gibt die Standard-Farbtiefe in Bits an. Im Beispiel ist 16 angegeben, was mehrere tausend Farben ermöglicht, der Standardwert. Mehrere DefaultDepth-Einträge sind zulässig, jedoch muss mindestens einer vorhanden sein.

  • SubSection "Display" - Gibt die Bildschirmmodi an, die bei einer spezifischen Farbtiefe zur Verfügung stehen. Ein Screen- Abschnitt kann mehrere Display-Unterabschnitte haben, es muss allerdings zumindest einen für die in DefaultDepth angegebene Farbtiefe geben.

  • Option "<option-name>" - Ein optionaler Eintrag, der weitere Parameter für diesen Screen-Abschnitt angibt.

ServerLayout

Der Abschnitt ServerLayout bindet Eingabe- und Ausgabegeräte, die vom X-Server kontrolliert werden. Dieser Abschnitt muss zumindest ein Ausgabegerät und zwei Eingabegeräte (Tastatur und Maus) angeben.

Das folgende Beispiel zeigt einen typischen ServerLayout-Abschnitt:

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
        InputDevice     "Configured Touchpad" "CorePointer"
EndSection

Die folgenden Einträge sind die in einem ServerLayout-Abschnitt am häufigsten verwendeten:

  • Identifier - Ein eindeutiger Name, der für die Beschreibung dieses ServerLayout-Abschnitts verwendet wird.

  • Screen - Der Name eines Screen-Abschnitts, der mit dem X-Server verwendet wird. Es kann mehr als nur eine Screen-Option geben. Sollte die Grafikkarte mehr als einen Anschluss haben, sind weitere Screen-Einträge mit unterschiedlichen Identifiern für Screen-Abschnitte vonnöten.

  • InputDevice - Gibt den Namen eines InputDevice-Abschnitts an, der mit dem X-Server verwendet wird. Es muss zumindest zwei InputDevice-Einträge geben: einer für die Standardmaus und einer für die Standardtastatur. Die Optionen CorePointer und CoreKeyboard weisen darauf hin, dass es sich um primäre Eingabegeräte handelt.

  • Option "<option-name>" Ein optionaler Eintrag, der weitere Parameter für diesen Abschnitt angibt. Jede der hier aufgeführten Optionen überschreibt die Optionen im Abschnitt ServerFlags.

Es ist möglich, mehr als einen ServerLayout-Abschnitt anzugeben. Der Server wird jedoch nur den ersten einlesen, außer es wird ein anderer ServerLayout-Abschnitt als Befehlszeilenargument angegeben.

ServerFlags

Der Abschnitt ServerFlags ist optional und enthält verschiedene allgemeine Einstellungen zum X-Server. Diese Einstellungen können mit Optionen des Abschnitts ServerLayout außer Kraft gesetzt werden.

Beispiel für einen ServerFlags-Abschnitt:

Section "ServerFlags"
      Option "DontZap" "true"
EndSection

Einige nützliche Optionen (siehe auch X-Server beenden):

  • "DontZap" "<boolean>" - Wenn der Wert <boolean> auf true gesetzt wird, verhindert dies die sofortige Beendigung des X-Servers durch die Tastenkombination Strg + Alt + .

  • "DontZoom" "<boolean>" - Wenn der Wert <boolean> true ist, wird die Verwendung der Tastenkombinationen Strg + Alt + Ziffernblock-Plus und Strg + Alt + Ziffernblock-Minus unterbunden, mit denen man sich durch konfigurierte Grafikauflösungen bewegen kann.

DRI

Beim optionalen DRI-Abschnitt (Direct Rendering Infrastructure) handelt es sich um eine Schnittstelle, die es 3D-Programmen ermöglicht, die 3D-Hardwarebeschleunigung der unterstützten Grafikkarten zu nutzen. Darüber hinaus verbessert DRI die Leistung der 2D-Hardwarebeschleunigung, sofern vom Treiber unterstützt. Dieser Abschnitt wird ignoriert, es sei denn, DRI wird im Module-Abschnitt aktiviert.

Section "DRI"
        Mode    0666
EndSection

Beispiel

Im folgenden Beispiel eine minimale xorg.conf

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

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
EndSection

Section "Device"
	Identifier	"Configured Video Device"
EndSection

Section "Monitor"
	Identifier	"Configured Monitor"
EndSection

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
	Device		"Configured Video Device"
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
EndSection

XServer neu starten

Um eine Änderung anzuwenden, muss der XServer neu gestartet werden. Hierzu reicht es aus, sich einmal ab- und wieder neu anzumelden. Freunde anderer Betriebssysteme dürfen natürlich auch wie gewohnt einen kompletten Neustart durchführen.

XServer zurücksetzen

Achtung!

Beim Rücksetzen des XServer gehen sämtliche ungespeicherten Änderungen verloren! Das betrifft sowohl geöffnete Dateien als auch die Konfiguration von Anwendungen. Dieser Weg sollte daher nur in Ausnahmefällen eingeschlagen werden, wenn nichts anderes mehr hilft (der Desktop quasi "eingeforen" ist).

Traditionell konnte der X-Server und damit auch die grafische Oberfläche im Notfall mit der Tastenkombination

  • Strg + Alt +

beendet und neu gestartet werden. Ab Version 1.6 des Xorg XServers bzw. ab Ubuntu 9.04 wurde diese Tastenkombination zugunsten von Magic SysRQ deaktiviert. Dieses erlaubt es, nun mittels der Tastenkombination

  • Alt + Druck + K

den XServer und alle darin laufenden Programme zu beenden und ist ein vollwertiger Ersatz.

Strg + Alt + Backspace reaktivieren

Im folgenden wird beschrieben, wie man Strg + Alt + wieder aktivieren kann. Bei den Desktop-Umgebungen GNOME und KDE kann man das Verhalten der Tastenkombination direkt in den Systemeinstellungen ändern:

  • GNOME: Unter "System -> Einstellungen -> Tastatur" im Reiter "Belegungen -> Belegungseinstellungen" die Option "Tastenkombination zum erzwungenen Beenden des X-Servers" auswählen und dort Strg + Alt + Entf aktivieren (trotzdem funktioniert Strg + Alt + wieder).

kde-tastenkombination-strg-alt-bs.png
Tastenbelegung in KDE aktivieren

  • KDE: Unter "Systemeinstellungen -> Eingabegeräte -> Tastatur" im Reiter "Erweitert" die Option "Tastenkombination zum erzwungenen Beenden des X-Servers" ändern.

Bei anderen Desktop-Umgebungen wie Xfce oder LXDE aktiviert der Befehl [3]

setxkbmap -option terminate:ctrl_alt_bksp 

das alte Verhalten für die aktuelle Sitzung. Um den Befehl dauerhaft zu verankern, kann man die jeweiligen Autostart-Mechanismen dieser Desktop-Umgebungen nutzen.

Weitere Hinweise zur Wiederherstellung des alten Verhaltens der Tastenkombination finden sich im Archlinux Wiki {en} .

XServer beenden

Um den XServer komplett zu beendet, muss man den Displaymanager stoppen. Dazu geht man folgendermaßen vor:

  1. Aus der jeweils verwendeten Desktop-Umgebung abmelden

  2. Nun z.B. mit der Tastenkombination Strg + Alt + F1 auf eine virtuelle Konsole wechseln und sich dort anmelden

  3. Nun kann der Displaymanager beendet werden:

    sudo service lightdm stop 

    Falls ein anderer Displaymanager verwendet wird, lightdm durch diesen ersetzen. Eine Übersicht, welche Ubuntu-Version/-Variante welchen Displaymanager einsetzt, ist im genannten Artikel zu finden.

Das System ist weiterhin benutzbar, aber eben nicht mehr über eine graphische Oberfläche. Von hier aus kann man den XServer indirekt auch wieder starten, indem man den Displaymanager neu startet:

sudo service lightdm start 

Diese Revision wurde am 15. Juli 2014 14:34 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: 3d, eingabegeräte, xserver, dri, xorg, System, monitor, grafikkarten, Übersicht, x11, display, grafik, darstellung