
Ich verbinde mich über SSH mit der X-Weiterleitungsoption ( ssh -X
) mit einem lokalen Server, auf dem MATLAB (Version 2015a) läuft.
Wenn ich MATLAB starte, erhalte ich jedoch diese Warnung:
libGL error: failed to open drm device: Permission denied
libGL error: failed to load driver: nouveau
libGL error: dlopen /usr/lib64/dri/swrast_dri.so failed (/usr/local/MATLAB/R2015a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /lib64/libLLVM-3.5-mesa.so))
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
MATLAB is selecting SOFTWARE OPENGL rendering.
Wenn ich MATLAB als Root starte, erhalte ich statt Permission denied
in der ersten Zeile:
libGL error: failed to authenticate magic 1
Die Grafiken sind schrecklich, sogar der Text (siehe Screenshot unten). Ich vermute, dieses Problem hängt mit der Weiterleitung der Grafiken per SSH an das Gastsystem zusammen. Daher dachte ich, die Anzeigeoption in MATLAB könne auf die X-Anzeige des Gastsystems eingestellt werden, was ich folgendermaßen getan habe:
matlab -display guest-ip:0
Selbst dann erhalte ich den OpenGL-Fehler und es gibt keine grafische Ausgabe (Matlab läuft in der Shell und es werden keine Abbildungsfenster angezeigt).
Der Host hat CentOS 7 und der Gast hat Fedora 20 und beide sind mesa-libGLU
installiert. Was ist der richtige Weg, um qualitativ hochwertige Grafiken weiterzuleiten?
Host-System
Gastsystem (zum Vergleich)
Antwort1
Ich hatte dasselbe Problem und habe es mithilfe der Anleitung von folgendem gelöst:
http://cplusadd.blogspot.com/2012/01/speeding-up-matlab-over-x11-forwarding.html
Wenn Sie sich von Maschine B aus per SSH bei Maschine A anmelden und dann den Matlab-Terminalbefehl im Home-Verzeichnis von A ausführen, erstellen Sie im Home-Verzeichnis eine Datei java.opts
mit dem folgenden Titel:
-Dsun.java2d.pmoffscreen=false
Führen Sie dann SSH mit diesen Optionen durch:
ssh -c arcfour,blowfish-cbc -Y -C username@server
Für mich war es dadurch viel, viel einfacher, Matlab über SSH auszuführen.