Linux-Workstation

Linux-Workstation

Ich stelle diese Frage für einen Kollegen, nachdem ich ziemlich viel recherchiert habe. Er möchte sich über ssh -X(oder -Y) mit einem alten Centos 4-Server verbinden und dort eine X-Anwendung ausführen. Das lief jahrelang einwandfrei, aber die jüngsten Updates (sowohl für Centos 7 als auch für Ubuntu) seiner Client-PCs machen dies nun unmöglich. Seine App hängt einfach und der Versuch, sie einfach auszuführen, glxgearsführt zu einem Absturz:

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  150 (GLX)
Minor opcode of failed request:  3 (X_GLXCreateContext)
Value in failed request:  0x0
Serial number of failed request:  19
Current serial number in output stream:  21

Es ist wirklich ein Problem mit der Client-Version. Wenn ich clientseitig auf die frühere Version Centos 6 zurücksetze, funktioniert es wieder. Im X11-Protokoll auf der Serverseite steht nichts. Ich habe es ausgeführt, strace glxgearsohne etwas Ungewöhnliches zu bemerken. Was kann ich versuchen, um dies weiter zu diagnostizieren?

BEARBEITEN: Unter jedem modernen Linux schlägt der folgende Versuch, einen indirekten Rendering-Kontext zu erzwingen, fehl:

glxinfo -i
name of display: :0
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  154 (GLX)
Minor opcode of failed request:  24 (X_GLXCreateNewContext)
Value in failed request:  0x0
Serial number of failed request:  39
Current serial number in output stream:  40

Ich habe Folgendes versucht, um das indirekte Rendering wieder zu aktivieren. Wenn ich mich nicht irre, müssen all diese Schritte auf dem Client-Rechner durchgeführt werden:

  • In den Abschnitten „Screen“ oder „Device“ von /etc/X11/xorg.conf fügen Sie Folgendes hinzu:

    Option „AllowIndirectGLXProtocol“ „True“

  • in /usr/bin/startx (oder wo auch immer startx liegt):

    Standardserverargs="+iglx"

  • in /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf ändern Sie die Zeile:

    xserver-Befehl=X -core +iglx

  • vor dem Start von KDE, beispielsweise in .kde/env/igl.sh

    exportiere LIBGL_ALWAYS_INDIRECT=1

Nichts davon funktioniert.

Antwort1

Linux-Workstation

Paradoxerweise viele Versionen vonGDM bietet nicht+iglxeine Möglichkeit, Argumente wie an zu übergeben Xorg. Als Reaktion darauf haben neue X.org-Versionen eineIndirectGLXMöglichkeit(siehe auchBeispieltextxorg.conf).

Wenn diese Option nicht vorhanden ist, gibt es einen Workaround:Xorgsich selbst mit einem Shell-Skript umschließen:

mv /usr/bin/Xorg /usr/bin/Xorg.original
echo -e '#!/usr/bin/env bash\nexec /usr/bin/Xorg.original "$@" +iglx' > /usr/bin/Xorg
chmod +x /usr/bin/Xorg
chcon --type=bin_t /usr/bin/Xorg

macOS-Workstation (XQuartz)

Lauf einfach

defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

und starten Sie XQuartz neu, wenn es ausgeführt wird. (Achten Sie auf Tippfehler: Es gibt keine Fehlerprüfung für die Domänen- und Variablennamen.) Neuere Versionen verwenden das einfachere org.xquartz.X11.

verwandte Informationen