Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Die Entwicklung von Xgl wurde eingestellt, und seit Ubuntu 8.10 ist Xgl nicht mehr verfügbar.
Der Xgl-Server ist eine Implementierung des X-Window-Systems, der durch OpenGL hardwarebeschleunigt ist. Dieser befindet sich gegenwärtig in der Frühphase der Entwicklung. Die Entwicklung der Xgl-Architektur wurde Ende 2004 durch den Novell-Mitarbeiter David Reveman bekanntgegeben. Im Zuge dessen wurde die Programmstruktur stark umgestellt, um die Aufnahme zusätzlicher Grafiktreiber zu erleichtern. Xgl soll auf dem Linux-Desktop zusätzliche Effekte wie Transparenz, Schattierungen und Animationen ermöglichen, ohne den Prozessor stark zu belasten, da die 3D-Funktionen moderner Grafikkarten benutzt werden. (aus der Quelle)
Der Code von Xgl wurde aus dem X.org-Quelltextverwaltungssystem entfernt. Xgl wurde als vollwertiger X-Server entwickelt, der OpenGL zum Rendern verwendet. So wurden transparente Fenster und andere Desktopeffekte möglich. Die Konkurrenztechnik Aiglx gelangte jedoch zu einer größeren Verbreitung. (Stand: Mitte 2008, Quelle:Golem )
Um Xgl zu nutzen, benötigt man zwingend 3D-Beschleunigung, wogegen man AIGLX auch ohne diese einsetzen kann. Welche Hardware- bzw. genauer Grafikkartenanforderungen der Xgl-Server hat, kann auf der Übersichtsseite nachgelesen werden.
Bei Ubuntu Gutsy 7.10 reicht es für gewöhnlich, wenn man unter "System -> Systemverwaltung -> Verwaltung eingeschränkter Treiber" den proprietären Treiber aktiviert.
Unter Ubuntu Gutsy Gibbon 7.10 werden automatisch sämtliche Startskripte angelegt, das bedeutet die folgenden Schritte sind für diese Ubuntu-Version unrelevant. Direkt nach der Installation funktioniert der Xgl-Server, und man kann z.B. Compiz einfach über das Menü "Erscheinungsbild" aktivieren.
Es gibt eigentlich zwei Methoden, um den Xgl-Server zu benutzen. Die zweite Methode wird hier aber nicht genauer erklärt, da man meistens mit ersterer Methode bessere Ergebnisse erhält und diese auch (fast) unabhängig von der verwendeten Desktop-Umgebung ist.
Methode 1 schaltet durch die Option -ac
(siehe unten) die Access Control aus. Dies ermöglicht allen lokalen Benutzern Zugang zum aktuellen Display. Da dies ein Sicherheitsrisiko darstellen kann, wird vor allem auf Multiuser-Systemen Methode 2 empfohlen.
Methode 2 kann (als Method B) im englischen Wiki nachgeschlagen werden.
Diese Methode erzeugt eine eigene Sitzung, die man beim Einloggen im Displaymanager auswählen kann. Der Vorteil hiervon ist, dass die herkömmlichen Sitzungen davon nicht beeinflusst werden und ganz normal gestartet werden können, falls Xgl hängen bleiben sollte. Der Xgl-Server startet auf "DISPLAY=:1" als Teil der Sitzung und wird erst beendet, wenn diese geschlossen wird. Dies ist besonders hilfreich, wenn man die reguläre Sitzung starten möchte, falls der Xgl-Server nicht starten sollte. Der normale XServer läuft weiterhin auf "DISPLAY=:0".
Zuerst erstellt man die Datei /usr/bin/startxgl.sh in einem Editor mit Root-Rechten [4] und fügt je nach Hardware und Desktopumgebung einen der folgenden Texte ein:
NVIDIA (mit GNOME) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer & DISPLAY=:1 exec gnome-session |
NVIDIA (mit KDE) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer & DISPLAY=:1 exec startkde |
NVIDIA (mit Xfce) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer & DISPLAY=:1 exec xfce4-session |
ATI und Intel (mit GNOME) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1 exec gnome-session |
ATI und Intel (mit KDE) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1 exec startkde |
ATI und Intel (mit Xfce) | #!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1 exec xfce4-session |
Die Datei wird gespeichert und der Editor geschlossen. Das Skript muss noch ausführbar gemacht werden, dies wird mittels folgendem Befehl erledigt [3]:
sudo chmod +x /usr/bin/startxgl.sh
Nun wird der Xgl-Server als Sitzung im Anmeldebildschirm eingerichtet. In einem Editor legt man die Datei /usr/share/xsessions/xgl.desktop an, was wieder Root-Rechte erfordert [4]. Folgenden Text fügt man ein und speichert die Datei:
[Desktop Entry] Encoding=UTF-8 Name=Xgl Comment= Eigene Xgl-Sitzung starten Exec=/usr/bin/startxgl.sh Icon= Type=Application
Da neuere Versionen des Xgl-Servers sich automatisch bei jeder Sitzung starten, muss nun noch unter /home/user/.config/xserver-xgl/ eine Datei mit dem Namen "disable" angelegt werden. Alternativ kann auch das Autostartskript mit dem Befehl
sudo rm /etc/X11/Xsession.d/00xserver-xgl_start-server #oder sudo rm /etc/X11/Xsession.d/98xserver-xgl_start-server
im Terminal [3] gelöscht werden.
Um Xgl zu starten, muss im Anmeldebildschirm "Optionen und Sitzungsmanager" ausgewählt werden. Nun kann Xgl als Sitzung gewählt werden. Dies ist natürlich nur möglich, sofern man Methode 1 befolgt hat. In diesem Fall wird man also gefragt, ob die derzeitige Sitzung als Standardsitzung eingerichtet werden soll. Für den ersten Start ist es allerdings ratsam die Option "Nur für diese Sitzung" zu wählen.
Der nächste Schritt ist die Einrichtung des Composite-Managers, Genaueres kann auf der Übersichtsseite für Desktop-Effekte nachgelesen werden.
XGL kann deaktiviert werden, indem man im Homeverzeichnis des entsprechenden Benutzers die Datei .config/xserver-xgl/disable anlegt. Dabei ist der Inhalt irrelevant.
Hat man sich eine eigene Xgl-Sitzung eingerichtet, fehlen im Abmelde-Dialog die Schaltflächen für das Herunterfahren, den Neustart und "Standby". Um diese Optionen zu erreichen, muss man sich erst aus der Sitzung abmelden und dies im Displaymanager auswählen.
Möchte man diesen Zustand beheben, muss das Startskript um folgende Zeilen ergänzt werden:
cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)" xauth -i add :1 . "$cookie"
Diese müssen nach dem Befehl "DISPLAY=:1" eingefügt werden - zum Beispiel sähe das Startskript für den Fall "ATI und Intel (mit GNOME)" dann so aus:
#!/bin/sh Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1 cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)" xauth -i add :1 . "$cookie" exec gnome-session
Ein entsprechender Forenbeitrag mit näheren Informationen ist hier zu finden.
Hat man in der Xgl-Sitzung Probleme mit seiner Tastaturbelegung, muss dieses unter "System -> Einstellungen-> Tastatur -> Belegungen" eigens bestimmt werden. Am besten gleicht man seine Einstellungen mit der "normalen" Sitzung ab.
Unter GNOME kann es vorkommen, dass in einer Xgl-Sitzung alle Fensterinhalte grau erscheinen und dies auch nicht über die Themeneinstellung geändert werden kann. In diesem Fall muss der Befehl
gnome-settings-daemon
nachträglich gestartet [5] oder in den Autostart eingetragen [6] werden.
Startet man den gnome-settings-daemon kann es passieren, dass der Prozessor voll ausgelastet wird. Dies hängt mit den Tastatureinstellungen zusammen. Unter "System -> Einstellungen -> Tastatur -> Belegungen" darf höchsten eine Belegung in der Liste eingetragen sein.
Der XServer legt die Datei /tmp/.X11-unix/X1 an, die nach dem Abmelden ("logout") nicht mehr gelöscht wird. Will man sich anmelden ("login"), darf die Datei allerdings nicht existieren. Dazu trägt man in der Datei "startxgl.sh" ganz oben folgende Zeile ein (die die X1 Datei löscht):
rm -f /tmp/.X11-unix/X1
Falls der Mauszeiger flackert oder Artefakte zeichnet oder beides auftritt, muss in der XServer-Konfigurationsdatei /etc/X11/xorg.conf im Abschnitt "Device" die Option
"HWCursor" "On"
gesetzt werden [4].
Unter GNOME starten Anwendungen, für die man einen Anwendungsstarter im Panel eingerichtet hat, nach einer kleinen Animation von einer Abfolge schmaler Rahmen. Diese erscheinen unter Xgl plötzlich gelb, und deren Bewegung wird extrem langsam dargestellt - somit verzögern sie den gesamten Programmstart. Um diesen Effekt zu deaktivieren, muss man im Konfigurationseditor [7] das Häkchen beim Schlüssel "apps -> panel -> global -> enable_animations" entfernen.
Hierbei handelt es sich weniger um eine Problemlösung als um Kosmetik. Startet man eine Xgl-Sitzung, wird dieses durch eine Gitterstruktur, die den gesamten Desktop ausfüllt, angezeigt (es handelt sich hierbei um das "Root-Fenster"). Diesen "grauen Hintergrund", kann man durch einen schwarzen ersetzen (andere Farben stehen nicht zur Auswahl). Hierfür muss dem Startbefehl von Xgl die Option -br hinzugefügt werden. Hat man eine eigene Xgl-Sitzung eingerichtet, befindet sich dieser im Startskript unter /usr/bin/startxgl.sh. Für ATI-Nutzer lautet er dann also z.B.
Xgl :1 -nolisten tcp -fullscreen -ac -br -accel xv:pbuffer -accel glx:pbuffer &
Es kann vorkommen, dass sich 3D-Anwendungen unter Xgl nicht starten lassen. Zwar unterstützt der Xgl-Server selbst kein DRI ("Direct Rendering Interface"), jedoch sollten die Anwendungen - wenn auch etwas langsamer - laufen. Will man XGL nicht beenden, aber Anwendungen nutzen, die partout ihren Dienst verweigern, existieren zwei Lösungsansätze für dieses Problem:
Ab Edgy Eft oder für Systeme, die auf aktuelle ATI-Treiber >=8.26.18 angewiesen sind, bietet sich folgende Lösung an. In /usr/lib/fglrx ist die Bibliothek libGL.so.1.2.xlibmesa abgelegt, mit der 3D-Anwendungen in aller Regel problemlos laufen. Um diese Bibliothek zu benutzen, muss sie im Terminal [3] oder über ein entsprechendes Skript (siehe oben) mit folgender Syntax vor der Anwendung geladen werden:
LD_PRELOAD=/usr/lib/fglrx/libGL.so.1.2.xlibmesa [Anwendung]
Ebenso soll das Ersetzen der libGL.so.1.2 mit einer älteren fglrx-Version zur Lösung des Problems geführt haben, siehe hier.
Bei Nvidia-Grafikkarten kann oben genannte Lösung auch versucht werden. In aller Regel läuft es mit aktuellen Treibern jedoch problemlos.
Dies funktioniert nur, wenn man für Xgl eine eigene Sitzung angelegt hat. Da man, wie oben beschrieben, in diesem Fall weiterhin über den "normalen" XServer verfügt, kann dieser auch für Anwendungen genutzt werden:
DISPLAY=:0 [Anwendung]
Da Xgl die Grafikbeschleunigung dort nicht negativ beeinflussen kann, laufen die Anwendungen wie man es aus seiner "normalen" Sitzung gewohnt ist. Fundamentaler Nachteil dieser Lösung ist aber, dass auf dem zweiten XServer kein Fenstermanager läuft und man somit die Anwendung u.a. nicht verschieben kann.
Zu diesem Lösungsansatz existiert eine eigene Forendiskussion: Google Earth läuft unter Xgl/Beryl nicht mehr!
Diese Revision wurde am 19. März 2011 17:31 von Shakesbier erstellt.