Den Kommandozeilenzugriff via

ssh
 sollte wohl jeder Raspberry Pi-Besitzer kennen . Ich lege hierfür noch diesen Artikel an's Herz, um nicht immer das Passwort eingeben zu müssen.

XSession

Nicht viel schwieriger ist es, eine XSession zu öffnen und somit auch GUI-Programme des Raspberry PI's am Mac zu nutzen.

Benötigt wird hierfür am Mac die X11-Umgebung, die standardmäßig installiert sein sollte und gegebenenfalls über die System-DVD nach-installiert oder hier heruntergeladen werden kann ("Latest stable release").

Sofern auf dem Mac vorhanden, der die XSession des Raspberry PI 's öffnen soll, kann man auf dem Mac eine neue ssh-Sitzung mit der Option

-X
initiieren und dann eine xsession öffnen (Benutzername und IP sind natürlich durch die eigenen Angaben zu ersetzen):

ssh -X apfelz@192.168.178.10
lxsession

Etwas unschön ist daran, dass man diese Sitzung nicht wirklich wieder schließen kann.

Eine andere interessante Möglichkeit, die bei mir ebenso mit MacOS-Boardmitteln auf Anhieb funktionierte:

Xephyr :1 -screen 1200x800 -dpi 96 -keybd ephyr,,,,xkblayout=de &
DISPLAY=:1 ssh -X apfelz@192.168.178.10 lxsession &

Hiermit wird zuerst im X11 am Mac ein neues leeres Fenster mit 1200x800 Pixeln Größe erstellt. Danach wird in dieses Fenster die XSession gelegt.
Diese beiden Zeilen k̦nnen auch in der MacOS-eigene Terminal eingegeben werden РFenster und Session ̦ffnen sich dann in der X11-Umgebung.

VNC

Normalerweise macht VNC keinen Sinn. Wieso eine extra Remote-Zugriff-Software installieren, wenn man durch die XSession bereits on Board eine Remote-Zugriffs-Möglichkeit hat?

Mein Problem bei der Geschichte war allerdings, dass ich mich über die XSession nicht auf eine bereits bestehende Session einloggen konnte. Ist der Raspberry Pi zum Beispiel an einem Bildschirm angeschlossen und zeigt dort einen Desktop an, bekomme ich am Mac einen neuen, "frischen", Desktop angezeigt, wenn ich mich über eine XSession anmelde. Schlecht, um mal schnell ein aktuell offenes Fenster zu schließen.

Dafür habe ich mir einen VNC-Server auf dem Raspberry Pi installiert.

Der bekanntest VNC-Server ist tightvnc, genügte aber nicht so wirklich meinen Ansprüchen, da auch hier bei jeder VNC-Verbindung ein neuer Desktop erstellt wurde. Dafür kann ich auch eine XSession verwenden.

x11vnc ist für meinen Anwendungsfall die bessere Wahl und auch schnell installiert:

sudo apt-get install x11vnc

Bin ich direkt am Raspberry Pi zu Gange und habe dort ein Terminal-Fenster offen, sollte der Befehl

x11vnc
ausreichen, um den VNC-Server erfolgreich zu starten.

Starte ich den VNC-Server von einem anderen Computer aus via ssh, müsste ich mindestens noch die Display-Nummer mitgeben

x11vnc -display :0
– trotzdem wird sich der x11vnc-Server wahrscheinlich sofort wieder beenden.
x11vnc benötigt noch die Befugnis, sich auf den aktuell laufenden Desktop aufzuschalten.

Den Namen zum "Magic Cookie" fand' ich durch folgenden Befehl:

ps wwwwaux | grep auth

Ausgabe:

root      4334  0.9  9.3  54376 17484 tty7     Ss+  22:15   0:03 /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

Interessant ist der Teil

-auth /var/run/lightdm/root/:0
.
Dies geben wir x11vnc mit und starten es vor allem mit root-Rechten:

sudo x11vnc -display :0 -auth /var/run/lightdm/root/:0

Nun sollte man sich von einem anderen Computer aus mit einem VNC-Client auf den laufenden Desktop aufschalten können (Port 5900).

Leider beendet sich der x11vnc-Server immer, sobald man am entfernten Rechner das VNC-Client-Fenster schließt. Durch die Option

-forever
kann man x11vnc dazu bringen, auch nach Beenden einer Verbindung weiterhin aktiv zu bleiben. Durch
-q
reduziert man außerdem noch etwas den Text im Terminal-Fenster, der durch das Starten des x11vnc-Servers anfällt.

So lautet mein schlussendlicher Startbefehl:

sudo x11vnc -display :0 -auth /var/run/lightdm/root/:0 -q -forever