Einen Raspberry Pi kann man als Thin Client verwenden. D.h., man hat Zugriff auf einen anderen Rechner, indem dessen grafische Oberfläche auf dem Monitor des Pi angezeigt wird. Hierzu gibt es verschiedene Protokolle: u.a. VNC, RDP und das gute alte X.
X, genauer X11, gibt es seit 1987 und für alle unixoiden Betriebssysteme und für OpenVMS.
Mit BerryTerminal machen wir den Pi zum X-Terminal.
Installation von BerryTerminal
Die notwendigen Sourcen hole ich von
http://www.berryterminal.com/doku.php/start
Die zip-Datei wird nur ausgepackt und die Dateien auf die erste FAT-Partition einer SD-Karte kopiert.
Der Server u.a. wird in die Datei cmdline.txt eingetragen:
Wenn man einen LTSP-Server eingerichtet hat, kann man loslegen.
LTSP ist die Abkürzung von "Linux Terminal Server Projekt"
Zum Einrichten schaut man hier nach: http://www.ltsp.org/
Es geht aber auch ohne einen LTSP-Server. Ein System mit Gnome oder KDE bringt alles Nötige mit.
Modifizierung des BerryTerminals für Gnome oder KDE-Systeme
Zuerst probieren ich das Ganze erstmal aus. Die SD-Karte in den Pi gestecken, Strom einschalten und schauen, was passiert:
Der Pi startet mit knalligen Farben, findet wenig überraschend keinen LTSP-Server und bietet mir einen Prompt an.
Hier gebe ich root ein und lande ohne Passwort auf der Konsole.
Jetzt gebe ich ein:
Es funktioniert sofort und ich kann mich auf meinem Rechner per grafischer Konsole einwählen. Die Namensauflösung geht übrigens nicht und mein Rechner war entsprechend konfiguriert.
Wir müssen also BerryTerminal so anpassen, dass er nicht mehr nach einen LSTP-Server sucht, sondern einen beliebigen Rechner, der eine X-Oberfläche anbieten kann.
Die Stelle, wo das passieren muss, ist schnell gefunden. Ich suche gleich im Verzeichnis /etc/init.d
Dort gibt es eine Datei namens S99ltsp.
Wie hinreichend bekannt, werden Dateien in diesem Verzeichnis mit einem großen S am Anfang in alphabetischer Reihenfolge beim Start ausgeführt.
In dieser Datei gibt es die Zeile
Anschließend die Abfrage, ob die Variable einen Wert hat.
Da mein Rechner auf dem Port 9571 nicht reagiert, hat die Variable keinen Wert und das Script steigt aus.
Man kann die Datei jetzt ändern.
Macht aber keinen Sinn, da nach dem Booten alles wieder beim Alten ist.
Die sichtbaren Daten sind nur temporär, siehe hierzu http://de.wikipedia.org/wiki/SquashFS
D.h. ich muss die Datei S99ltsp an anderer Stelle durch eine andere ersetzen.
Ich gehe übrigens davon aus, dass wir zum Einrichten der SD-Karte einen Linux-Rechner verwenden!
Außerdem erspare ich mir sudo, indem ich als root arbeite (muss sein!)
Die Sourcen des BerryTerminals haben wir ja in einem Verzeichnis ausgepackt. Dort gibt es die Datei
berryterminal.img
Zunächst lege ich ein temporäres Verzeichnis an und zerlege das Image in dieses Verzeichnis:
Im Verzeichnis ./etc/init.d ist jetzt die Datei S99ltsp, die zu löschen ist.
Stattdessen kopiere ich alles in eine Datei S99myterminal (z.B.)
Alles was unnötig erscheint, kommt raus und der X-Aufruf rein.
Ich kommentiere aus:
nc -w 5 ${LDM_SERVER} 9571 > /var/run/ldm/${LDM_SERVER}
if [ ! -s /var/run/ldm/${LDM_SERVER} ]; then
echo "Error retrieving LDM settings from ${LDM_SERVER}. Not a LTSP server?"
echo
echo "Note: you can manually specify the LTSP server by putting 'server=1.2.3.4' in cmdline.txt"
echo
exit 1
fi
und:
while true
do
Xorg -auth $XAUTHORITY &
ldm
killall Xorg
clear
echo "Restarting X and LDM"
sleep 1
done
und an schreibe dieser Stelle rein:
Abspeichern und fertig. Quick and dirty, aber funzt.
Jetzt muss das Ganze wieder in ein Image.
chmod 774 ./etc/init.d/S99myterminal
mv /mein_pfad/berryterminal.img /mein_pfad/berryterminal.img.ori
find . | cpio --quiet -o -H newc | gzip - > /mein_pfad/berryterminal.img
Die Image-Datei wieder auf die SD-Karte kopieren und den Pi starten.
Jetzt brauchen wir nur noch einen Server einrichten.
Debian 7.1 mit Gnome
Es ist ein frisch eingerichtetes System ohne Veränderungen.
Hier muss die Datei /etc/gdm3/daemon.conf geändert werden:
Eingefügt wird der Abschnitt
OpenSuse 12.3 mit KDE
In der Datei /etc/sysconfig/displaymanager muss stehen:
und in /usr/share/kde4/config/kdm/kdmrc ebenfalls einen Abschnitt mit
Außerdem muss die Firewall geöffnet werden. Dies erledige ich mit Yast2. Dort "Firewall" anklicken und im neuen Fenster erlaube ich bei "Erlaubte Dienste" als neuen erlaubten Dienst "xdmcp".
Ubuntu 12.04 LTS mit Unity
In der Datei /etc/lightdm/lightdm.conf einen neuen Abschnitt mit
Allerdings gibt es hier Probleme. Die grafische Einwahl wird angezeigt und man kann seinen Account und das Passwort eingeben.
Dann sieht man den grellbunten Hintergrund und erstmal sonst nichts. Nach einer Weile kommt die Meldung, das Compiz abgestürzt ist.
Da mich Ubuntu - höflich gesagt - nicht interessiert, mag sich darum ein Ubuntu-Jünger kümmern.
Mit Debian und OpenSuse funktioniert es aber gut. Gefühlt scheint es bei Debian weniger zu ruckeln. Wenn man die Abeitsflächeneffekte von KDE ausschaltet, geht es aber auch.
Viel Spaß beim Ausprobieren.